From 14be20067e1dc52cfd9f49ff3420f74923d9823c Mon Sep 17 00:00:00 2001
From: Hangzhi Yu <hangzhi@protonmail.com>
Date: Sun, 22 Dec 2024 01:42:45 +0100
Subject: [PATCH] Use enum for lesson event alarm status choices

---
 aleksis/apps/chronos/models.py | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/aleksis/apps/chronos/models.py b/aleksis/apps/chronos/models.py
index bff8a05e..95589c4f 100644
--- a/aleksis/apps/chronos/models.py
+++ b/aleksis/apps/chronos/models.py
@@ -509,10 +509,13 @@ def create_alarm_on_teachers_m2m_changed(
 class LessonEventAlarm(CalendarAlarm):
     """Alarm model for lesson events."""
 
-    STATUS_CHOICES = {"c": _("Created"), "e": _("Edited"), "d": _("Deleted")}
+    class StatusChoices(models.TextChoices):
+        CREATED = "C", _("Created")
+        EDITED = "E", _("Edited")
+        DELETED = "D", _("Deleted")
 
     status = models.CharField(
-        verbose_name=_("Status"), max_length=1, choices=STATUS_CHOICES, default="c"
+        verbose_name=_("Status"), max_length=1, choices=StatusChoices, default=StatusChoices.CREATED
     )
 
     def value_description(self, request: HttpRequest | None = None) -> str:
@@ -542,14 +545,14 @@ class LessonEventAlarm(CalendarAlarm):
             {
                 "event": self.event,
                 "event_title": LessonEvent.value_title(self.event, request),
-                "status": self.STATUS_CHOICES[self.status].lower(),
+                "status": StatusChoices(self.status).label.lower(),
             },
         )
 
     def value_notification_description(self, request: HttpRequest | None = None) -> str:
         return render_to_string(
             "chronos/lesson_event_notification_description.txt",
-            {"event": self.event, "status": self.STATUS_CHOICES[self.status].lower()},
+            {"event": self.event, "status": StatusChoices(self.status).label.lower()},
         )
 
     def value_notification_icon(self, request: HttpRequest | None = None) -> str:
-- 
GitLab