From 135b72f882591f517ae3a4553175837ca60cc61c Mon Sep 17 00:00:00 2001
From: Julian Leucker <leuckerj@gmail.com>
Date: Sun, 16 May 2021 14:50:56 +0200
Subject: [PATCH] Fix sorting of tables

---
 aleksis/apps/alsijil/tables.py | 14 +++++++++-----
 aleksis/apps/alsijil/views.py  | 10 ++++++++++
 2 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/aleksis/apps/alsijil/tables.py b/aleksis/apps/alsijil/tables.py
index e7fb6df6d..22a6b21ca 100644
--- a/aleksis/apps/alsijil/tables.py
+++ b/aleksis/apps/alsijil/tables.py
@@ -94,13 +94,17 @@ class PersonalNoteTable(tables.Table):
     period = tables.Column(
         verbose_name=_("Period"), accessor=A("period_formatted"), order_by=A("order_period")
     )
-    groups = tables.Column(verbose_name=_("Groups"), accessor=A("register_object__group_names"))
-    teachers = tables.Column(
-        verbose_name=_("Teachers"), accessor=A("register_object__teacher_names")
+    groups = tables.Column(
+        verbose_name=_("Groups"),
+        accessor=A("register_object__group_names"),
+        order_by=A("order_groups"),
     )
-    subject = tables.Column(
-        verbose_name=_("Subject"), accessor=A("register_object__get_subject__name")
+    teachers = tables.Column(
+        verbose_name=_("Teachers"),
+        accessor=A("register_object__teacher_names"),
+        order_by=A("order_teachers"),
     )
+    subject = tables.Column(verbose_name=_("Subject"), accessor=A("subject"))
     absent = tables.Column()
     late = tables.Column()
     excused = tables.Column(verbose_name=_("Excuse"))
diff --git a/aleksis/apps/alsijil/views.py b/aleksis/apps/alsijil/views.py
index 8e6e41b47..6fd7ec6c0 100644
--- a/aleksis/apps/alsijil/views.py
+++ b/aleksis/apps/alsijil/views.py
@@ -822,6 +822,16 @@ def overview_person(request: HttpRequest, id_: Optional[int] = None) -> HttpResp
                 When(extra_lesson__isnull=False, then="extra_lesson__period__period"),
                 When(lesson_period__isnull=False, then="lesson_period__period__period"),
             ),
+            order_groups=Case(
+                When(event__isnull=False, then="event__groups"),
+                When(extra_lesson__isnull=False, then="extra_lesson__groups"),
+                When(lesson_period__isnull=False, then="lesson_period__lesson__groups"),
+            ),
+            order_teachers=Case(
+                When(event__isnull=False, then="event__teachers"),
+                When(extra_lesson__isnull=False, then="extra_lesson__teachers"),
+                When(lesson_period__isnull=False, then="lesson_period__lesson__teachers"),
+            ),
         )
         .order_by(
             "-school_term_start", "-order_year", "-order_week", "-order_weekday", "order_period",
-- 
GitLab