""" Database models for user module Models: - User - id[pk], email, first_name, last_name, oidc_id """ from collections import defaultdict from sqlalchemy import Column, Integer, String from sqlalchemy.orm import relationship from src.database import Base class User(Base): __tablename__ = "user" id = Column(Integer, primary_key=True) email = Column(String) first_name = Column(String) last_name = Column(String) oidc_id = Column(String, index=True, unique=True) organisation_rel = relationship( "Organisation", secondary="orgusers", back_populates="user_rel" ) @property def organisations(self): return [org.name for org in self.organisation_rel] group_rel = relationship( "Group", secondary="user_groups", back_populates="user_rel" ) @property def groups(self): result = defaultdict(list) for group in self.group_rel: result[group.org_rel.name].append(group.name) return dict(result)