From 29019828bdb0f6bb0bcb90cf47cc9da51d941570 Mon Sep 17 00:00:00 2001
From: Dominik George <dominik.george@teckids.org>
Date: Wed, 26 Jan 2022 22:07:01 +0100
Subject: [PATCH] Re-sync groups to Django on user change

---
 CHANGELOG.rst          | 1 +
 aleksis/core/models.py | 6 +++++-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 3b4a70be3..52a966d99 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -14,6 +14,7 @@ Fixed
 
 * PDF generation failed with S3 storage due to incompatibility with boto3
 * Form for editing group type displayed irrelevant fields
+* Permission groups could get outdated if re-assigning a user account to a different person
 
 `2.7`_ - 2022-01-24
 -------------------
diff --git a/aleksis/core/models.py b/aleksis/core/models.py
index f46a803b6..d969851a2 100644
--- a/aleksis/core/models.py
+++ b/aleksis/core/models.py
@@ -316,7 +316,7 @@ class Person(ExtensibleModel):
     def initials(self):
         return f"{self.first_name[0]}{self.last_name[0]}".upper()
 
-    user_info_tracker = FieldTracker(fields=("first_name", "last_name", "email"))
+    user_info_tracker = FieldTracker(fields=("first_name", "last_name", "email", "user"))
 
     @property
     def member_of_recursive(self) -> QuerySet:
@@ -347,6 +347,10 @@ class Person(ExtensibleModel):
             self.user.email = self.email
             self.user.save()
 
+            # Synchronise groups to Django
+            for group in self.member_of.all():
+                group.save()
+
         # Select a primary group if none is set
         self.auto_select_primary_group()
 
-- 
GitLab