From acb92abce1c9d48d4abb6b0ea753259de68ae558 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Benjamin=20H=C3=A4ttasch?=
 <benjamin.haettasch@fachschaft.informatik.tu-darmstadt.de>
Date: Wed, 26 Feb 2025 23:45:58 +0100
Subject: [PATCH] Don't update history when interest value is changed

Remove interest from stored fields for historical AK records
Disable history saving for save of interest editing admin view
Adjust test fixtures
This implements #211
---
 AKModel/fixtures/model.json                    |  7 -------
 AKModel/migrations/0062_interest_no_history.py | 17 +++++++++++++++++
 AKModel/models.py                              |  2 +-
 AKScheduling/views.py                          |  7 +++++++
 4 files changed, 25 insertions(+), 8 deletions(-)
 create mode 100644 AKModel/migrations/0062_interest_no_history.py

diff --git a/AKModel/fixtures/model.json b/AKModel/fixtures/model.json
index 86166761..3ef181bc 100644
--- a/AKModel/fixtures/model.json
+++ b/AKModel/fixtures/model.json
@@ -214,7 +214,6 @@
         "reso": false,
         "present": true,
         "notes": "",
-        "interest": -1,
         "category": 4,
         "track": null,
         "event": 2,
@@ -237,7 +236,6 @@
         "reso": false,
         "present": true,
         "notes": "",
-        "interest": -1,
         "category": 4,
         "track": null,
         "event": 2,
@@ -260,7 +258,6 @@
         "reso": false,
         "present": null,
         "notes": "",
-        "interest": -1,
         "category": 5,
         "track": null,
         "event": 2,
@@ -283,7 +280,6 @@
         "reso": false,
         "present": null,
         "notes": "",
-        "interest": -1,
         "category": 5,
         "track": null,
         "event": 2,
@@ -306,7 +302,6 @@
         "reso": false,
         "present": null,
         "notes": "We need to find a volunteer first...",
-        "interest": -1,
         "category": 3,
         "track": null,
         "event": 2,
@@ -329,7 +324,6 @@
         "reso": false,
         "present": null,
         "notes": "We need to find a volunteer first...",
-        "interest": -1,
         "category": 3,
         "track": null,
         "event": 2,
@@ -352,7 +346,6 @@
         "reso": false,
         "present": null,
         "notes": "",
-        "interest": -1,
         "category": 5,
         "track": 1,
         "event": 2,
diff --git a/AKModel/migrations/0062_interest_no_history.py b/AKModel/migrations/0062_interest_no_history.py
new file mode 100644
index 00000000..bad3647a
--- /dev/null
+++ b/AKModel/migrations/0062_interest_no_history.py
@@ -0,0 +1,17 @@
+# Generated by Django 4.2.13 on 2025-02-26 22:35
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('AKModel', '0061_types'),
+    ]
+
+    operations = [
+        migrations.RemoveField(
+            model_name='historicalak',
+            name='interest',
+        ),
+    ]
diff --git a/AKModel/models.py b/AKModel/models.py
index 26ed0f21..92925a1c 100644
--- a/AKModel/models.py
+++ b/AKModel/models.py
@@ -374,7 +374,7 @@ class AK(models.Model):
     include_in_export = models.BooleanField(default=True, verbose_name=_('Export?'),
                                             help_text=_("Include AK in wiki export?"))
 
-    history = HistoricalRecords(excluded_fields=['interest_counter', 'include_in_export'])
+    history = HistoricalRecords(excluded_fields=['interest', 'interest_counter', 'include_in_export'])
 
     class Meta:
         verbose_name = _('AK')
diff --git a/AKScheduling/views.py b/AKScheduling/views.py
index d7533f3d..ea8d1cc4 100644
--- a/AKScheduling/views.py
+++ b/AKScheduling/views.py
@@ -154,6 +154,13 @@ class InterestEnteringAdminView(SuccessMessageMixin, AdminViewMixin, EventSlugMi
     def get_success_url(self):
         return self.request.path
 
+    def form_valid(self, form):
+        # Don't create a history entry for this change
+        form.instance.skip_history_when_saving = True
+        r = super().form_valid(form)
+        del form.instance.skip_history_when_saving
+        return r
+
     def get_context_data(self, **kwargs):
         context = super().get_context_data(**kwargs)
         context["title"] = f"{_('Enter interest')}"
-- 
GitLab