diff --git a/uffd/role/models.py b/uffd/role/models.py index fa60c9be88555293a305f877d4b84299a5e60214..8bd6fcfcbac5f9ff289f9c6ff845dff232a4304e 100644 --- a/uffd/role/models.py +++ b/uffd/role/models.py @@ -8,7 +8,7 @@ from uffd.user.models import User class RoleGroup(db.Model): __tablename__ = 'role_groups' role_id = Column(Integer(), ForeignKey('role.id', onupdate='CASCADE', ondelete='CASCADE'), primary_key=True) - role = relationship('Role') + role = relationship('Role', back_populates='groups') group_id = Column(Integer(), ForeignKey('group.id', onupdate='CASCADE', ondelete='CASCADE'), primary_key=True) group = relationship('Group') requires_mfa = Column(Boolean(), default=False, nullable=False) @@ -94,7 +94,7 @@ class Role(db.Model): members = relationship('User', secondary='role_members', back_populates='roles') - groups = relationship('RoleGroup', collection_class=RoleGroupMap, cascade='all, delete-orphan') + groups = relationship('RoleGroup', collection_class=RoleGroupMap, cascade='all, delete-orphan', back_populates='role') # Roles that are managed externally (e.g. by Ansible) can be locked to # prevent accidental editing of name, moderator group, included roles diff --git a/uffd/user/models.py b/uffd/user/models.py index 4878ba0d4e6741d5e1e4fa017ff23088153c49fb..ad6f3a7a7470323a1044acc692b4339c9ac4a905 100644 --- a/uffd/user/models.py +++ b/uffd/user/models.py @@ -84,7 +84,7 @@ class User(db.Model): mail = Column(String(128), nullable=False) pwhash = Column(String(256), nullable=True) is_service_user = Column(Boolean(), default=False, nullable=False) - groups = relationship('Group', secondary='user_groups') + groups = relationship('Group', secondary='user_groups', back_populates='members') roles = relationship('Role', secondary='role_members', back_populates='members') @property @@ -169,7 +169,7 @@ class Group(db.Model): unix_gid = Column(Integer(), unique=True, nullable=False, default=get_next_unix_gid) name = Column(String(32), unique=True, nullable=False) description = Column(String(128), nullable=False, default='') - members = relationship('User', secondary='user_groups') + members = relationship('User', secondary='user_groups', back_populates='groups') def set_name(self, value): if len(value) > 32 or len(value) < 1: