From a24181d66b35a17ed461e8ac4333841ccd4db90e Mon Sep 17 00:00:00 2001
From: Andreas Hubel <andi@saerdnaer.de>
Date: Sat, 21 Dec 2024 00:45:48 +0100
Subject: [PATCH] chore(schedule): add version field on confernce and schedule
 model

---
 src/core/locale/de/LC_MESSAGES/django.po      | 12 ++++++++++
 src/core/locale/en/LC_MESSAGES/django.po      | 12 ++++++++++
 ...0166_schedulesource_last_import_version.py | 22 +++++++++++++++++++
 .../0167_conference_schedule_version.py       | 22 +++++++++++++++++++
 src/core/models/conference.py                 |  7 ++++++
 src/core/models/schedules.py                  |  6 +++++
 6 files changed, 81 insertions(+)
 create mode 100644 src/core/migrations/0166_schedulesource_last_import_version.py
 create mode 100644 src/core/migrations/0167_conference_schedule_version.py

diff --git a/src/core/locale/de/LC_MESSAGES/django.po b/src/core/locale/de/LC_MESSAGES/django.po
index fc92843e2..92d67b13f 100644
--- a/src/core/locale/de/LC_MESSAGES/django.po
+++ b/src/core/locale/de/LC_MESSAGES/django.po
@@ -790,6 +790,12 @@ msgstr "Konfiguration für die Karten, wie z.B. Art/Typ, Layer oder Startpositio
 msgid "Conference__map_config"
 msgstr "Karten"
 
+msgid "Conference__schedule_version__help"
+msgstr "Globale Versionsbezeichner für das Gesammt-Progamm in der Schedule.XML Schnittstelle"
+
+msgid "Conference__schedule_version"
+msgstr "Schedule Version"
+
 msgid "Conference__support_assembly_type"
 msgstr "min. eine Assembly-Art muss erlaubt sein"
 
@@ -1864,6 +1870,12 @@ msgstr "Zeitpunkt des letzten erfolgreichen Imports"
 msgid "ScheduleSource__last_import"
 msgstr "letzter Import"
 
+msgid "ScheduleSource__version__help"
+msgstr "Version des letzten erfolgreichen Imports"
+
+msgid "ScheduleSource__version"
+msgstr "Quellversion"
+
 msgid "unknown"
 msgstr "unbekannt"
 
diff --git a/src/core/locale/en/LC_MESSAGES/django.po b/src/core/locale/en/LC_MESSAGES/django.po
index dfb63b7f4..ef4cf8ce5 100644
--- a/src/core/locale/en/LC_MESSAGES/django.po
+++ b/src/core/locale/en/LC_MESSAGES/django.po
@@ -790,6 +790,12 @@ msgstr "configuration for the maps used, e.g. type, layers and initial position/
 msgid "Conference__map_config"
 msgstr "maps"
 
+msgid "Conference__schedule_version__help"
+msgstr "Global version identifier for the overall Schedule.XML API"
+
+msgid "Conference__schedule_version"
+msgstr "Schedule version"
+
 msgid "Conference__support_assembly_type"
 msgstr "at least one of the assembly types must be supported"
 
@@ -1862,6 +1868,12 @@ msgstr "timestamp of the last successful import"
 msgid "ScheduleSource__last_import"
 msgstr "last import"
 
+msgid "ScheduleSource__version__help"
+msgstr "version of the last successful import"
+
+msgid "ScheduleSource__version"
+msgstr "source version"
+
 msgid "unknown"
 msgstr "unknown"
 
diff --git a/src/core/migrations/0166_schedulesource_last_import_version.py b/src/core/migrations/0166_schedulesource_last_import_version.py
new file mode 100644
index 000000000..55f1eb855
--- /dev/null
+++ b/src/core/migrations/0166_schedulesource_last_import_version.py
@@ -0,0 +1,22 @@
+# Generated by Django 5.1.3 on 2024-12-17 19:27
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+    dependencies = [
+        ("core", "0165_alter_eventparticipant_options_and_more"),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name="schedulesource",
+            name="last_import_version",
+            field=models.TextField(
+                blank=True,
+                help_text="ScheduleSource__version__help",
+                null=True,
+                verbose_name="ScheduleSource__version",
+            ),
+        ),
+    ]
diff --git a/src/core/migrations/0167_conference_schedule_version.py b/src/core/migrations/0167_conference_schedule_version.py
new file mode 100644
index 000000000..8bfc199ea
--- /dev/null
+++ b/src/core/migrations/0167_conference_schedule_version.py
@@ -0,0 +1,22 @@
+# Generated by Django 5.1.3 on 2024-12-17 19:36
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+    dependencies = [
+        ("core", "0166_schedulesource_last_import_version"),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name="conference",
+            name="schedule_version",
+            field=models.TextField(
+                blank=True,
+                help_text="Conference__schedule_version__help",
+                null=True,
+                verbose_name="Conference__schedule_version",
+            ),
+        ),
+    ]
diff --git a/src/core/models/conference.py b/src/core/models/conference.py
index 02c7c5393..fb40255e7 100644
--- a/src/core/models/conference.py
+++ b/src/core/models/conference.py
@@ -361,6 +361,13 @@ class Conference(models.Model):
     Konfiguration für die eingebundene Karten wie z. B. Typ, Startposition/-bereich, verfügbare/angezeigte Layer, etc.
     """
 
+    schedule_version = models.TextField(
+        blank=True,
+        null=True,
+        help_text=_('Conference__schedule_version__help'),
+        verbose_name=_('Conference__schedule_version'),
+    )
+
     def clean(self):
         super().clean()
 
diff --git a/src/core/models/schedules.py b/src/core/models/schedules.py
index aed616a49..b1d397851 100644
--- a/src/core/models/schedules.py
+++ b/src/core/models/schedules.py
@@ -71,6 +71,12 @@ class ScheduleSource(models.Model):
         help_text=_('ScheduleSource__last_import__help'),
         verbose_name=_('ScheduleSource__last_import'),
     )
+    last_import_version = models.TextField(
+        blank=True,
+        null=True,
+        help_text=_('ScheduleSource__version__help'),
+        verbose_name=_('ScheduleSource__version'),
+    )
 
     def __str__(self):
         return f'{self.import_type}{{{self.import_url_masked}}}'
-- 
GitLab