From ba5f9a9f3676f02ebf4d390d6a5610a09e8da636 Mon Sep 17 00:00:00 2001
From: Jonathan Weth <git@jonathanweth.de>
Date: Tue, 1 Feb 2022 23:48:24 +0100
Subject: [PATCH] Use raw field name instead of relation name for field tracker

django-model-utils' documentation states that using the relation is not stable in all situations.
---
 CHANGELOG.rst          | 5 +++++
 aleksis/core/models.py | 8 ++++----
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index aa9e24b50..244647562 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -9,6 +9,11 @@ and this project adheres to `Semantic Versioning`_.
 Unreleased
 ----------
 
+Fixed
+~~~~~
+
+* Apps which track changes to models didn't work.
+
 `2.7.2`_ - 2022-01-31
 ---------------------
 
diff --git a/aleksis/core/models.py b/aleksis/core/models.py
index edc92c0fc..d8f63e606 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"))
+    user_info_tracker = FieldTracker(fields=("first_name", "last_name", "email", "user_id"))
 
     @property
     def member_of_recursive(self) -> QuerySet:
@@ -341,9 +341,9 @@ class Person(ExtensibleModel):
         super().save(*args, **kwargs)
 
         if self.pk is None or bool(changed):
-            if "user" in changed:
+            if "user_id" in changed:
                 # Clear groups of previous Django user
-                previous_user = changed["user"]
+                previous_user = changed["user_id"]
                 if previous_user is not None:
                     get_user_model().objects.get(pk=previous_user).groups.clear()
 
@@ -355,7 +355,7 @@ class Person(ExtensibleModel):
                     self.user.email = self.email
                     self.user.save()
 
-                if "user" in changed:
+                if "user_id" in changed:
                     # Synchronise groups to Django groups
                     for group in self.member_of.union(self.owner_of.all()).all():
                         group.save(force=True)
-- 
GitLab