From 0043ecc4e74f03e8bf497335fcff49639dad5be2 Mon Sep 17 00:00:00 2001
From: Julian Rother <julian@cccv.de>
Date: Tue, 8 Feb 2022 23:07:49 +0100
Subject: [PATCH] Fix User-Group and Role-Group relationship config

---
 uffd/role/models.py | 4 ++--
 uffd/user/models.py | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/uffd/role/models.py b/uffd/role/models.py
index fa60c9be..8bd6fcfc 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 4878ba0d..ad6f3a7a 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:
-- 
GitLab