From 594cc292603625025149b99d5d88b15731b31264 Mon Sep 17 00:00:00 2001
From: Nils Steinger <git@n-st.de>
Date: Sun, 8 Nov 2020 01:37:52 +0100
Subject: [PATCH 1/4] Show AK start and end, not just start

---
 AKModel/models.py                                  | 9 +++++++++
 AKSubmission/templates/AKSubmission/ak_detail.html | 2 +-
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/AKModel/models.py b/AKModel/models.py
index e581f00d..8eae767a 100644
--- a/AKModel/models.py
+++ b/AKModel/models.py
@@ -345,6 +345,15 @@ class AKSlot(models.Model):
             return _("Not scheduled yet")
         return self.start.astimezone(self.event.timezone).strftime('%a %H:%M')
 
+    @property
+    def time_simplified(self):
+        """
+        Display start and end time of slot in format weekday + time, e.g. "Fri 14:00 - 15:30"
+        """
+        if self.start is None:
+            return _("Not scheduled yet")
+        return self.start.astimezone(self.event.timezone).strftime('%a %H:%M') + ' - ' + self.end.astimezone(self.event.timezone).strftime('%H:%M')
+
     @property
     def end(self):
         """
diff --git a/AKSubmission/templates/AKSubmission/ak_detail.html b/AKSubmission/templates/AKSubmission/ak_detail.html
index e45444b9..bb8886fc 100644
--- a/AKSubmission/templates/AKSubmission/ak_detail.html
+++ b/AKSubmission/templates/AKSubmission/ak_detail.html
@@ -187,7 +187,7 @@
             <tr>
                 <td>{{ slot.duration }}</td>
                 {% if not ak.event.plan_hidden or user.is_staff %}
-                    <td>{{ slot.start_simplified }}</td>
+                    <td>{{ slot.time_simplified }}</td>
                     <td>
                         {% if "AKPlan"|check_app_installed and slot.room %}
                             <a href="{% url 'plan:plan_room' event_slug=ak.event.slug pk=slot.room.pk %}">{{ slot.room }}</a>
-- 
GitLab


From 79b07e1665f925e63205047a0b2d79c0fd4192d0 Mon Sep 17 00:00:00 2001
From: Nils Steinger <git@n-st.de>
Date: Sun, 8 Nov 2020 01:43:15 +0100
Subject: [PATCH 2/4] Handle AK timeslots that run past midnight

---
 AKModel/models.py | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/AKModel/models.py b/AKModel/models.py
index 8eae767a..ff005a7a 100644
--- a/AKModel/models.py
+++ b/AKModel/models.py
@@ -348,11 +348,17 @@ class AKSlot(models.Model):
     @property
     def time_simplified(self):
         """
-        Display start and end time of slot in format weekday + time, e.g. "Fri 14:00 - 15:30"
+        Display start and end time of slot in format weekday + time, e.g. "Fri 14:00 - 15:30" or "Fri 22:00 - Sat 02:00"
         """
         if self.start is None:
             return _("Not scheduled yet")
-        return self.start.astimezone(self.event.timezone).strftime('%a %H:%M') + ' - ' + self.end.astimezone(self.event.timezone).strftime('%H:%M')
+        result = self.start.astimezone(self.event.timezone).strftime('%a %H:%M')
+        result += ' - '
+        if self.start.astimezone(self.event.timezone).day == self.end.astimezone(self.event.timezone).day:
+            result += self.end.astimezone(self.event.timezone).strftime('%H:%M')
+        else:
+            result += self.end.astimezone(self.event.timezone).strftime('%a %H:%M')
+        return result
 
     @property
     def end(self):
-- 
GitLab


From ef9c473db34d91576dd8177efc5328de55b8e610 Mon Sep 17 00:00:00 2001
From: Nils Steinger <git@n-st.de>
Date: Sun, 8 Nov 2020 01:55:15 +0100
Subject: [PATCH 3/4] Show AK duration in time-like format, not decimal format

---
 AKModel/models.py                                  | 9 +++++++++
 AKSubmission/templates/AKSubmission/ak_detail.html | 2 +-
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/AKModel/models.py b/AKModel/models.py
index ff005a7a..a6254aaa 100644
--- a/AKModel/models.py
+++ b/AKModel/models.py
@@ -336,6 +336,15 @@ class AKSlot(models.Model):
             return f"{self.ak} @ {self.start_simplified} in {self.room}"
         return f"{self.ak} @ {self.start_simplified}"
 
+    @property
+    def duration_simplified(self):
+        """
+        Display duration of slot in format hours:minutes, e.g. 1.5 -> "1:30"
+        """
+        hours = int(self.duration)
+        minutes = (self.duration * 60) % 60
+        return '%d:%02d' % (hours, minutes)
+
     @property
     def start_simplified(self):
         """
diff --git a/AKSubmission/templates/AKSubmission/ak_detail.html b/AKSubmission/templates/AKSubmission/ak_detail.html
index bb8886fc..6224ee8c 100644
--- a/AKSubmission/templates/AKSubmission/ak_detail.html
+++ b/AKSubmission/templates/AKSubmission/ak_detail.html
@@ -185,7 +185,7 @@
         <tbody>
         {% for slot in ak.akslot_set.all %}
             <tr>
-                <td>{{ slot.duration }}</td>
+                <td>{{ slot.duration_simplified }}</td>
                 {% if not ak.event.plan_hidden or user.is_staff %}
                     <td>{{ slot.time_simplified }}</td>
                     <td>
-- 
GitLab


From eddf9aa5fc49dd53f4c37609151c9c8268076bdd Mon Sep 17 00:00:00 2001
From: Nils Steinger <git@n-st.de>
Date: Sun, 8 Nov 2020 01:58:32 +0100
Subject: [PATCH 4/4] Reorder AK timeslot columns: Display actual time first

---
 AKSubmission/templates/AKSubmission/ak_detail.html | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/AKSubmission/templates/AKSubmission/ak_detail.html b/AKSubmission/templates/AKSubmission/ak_detail.html
index 6224ee8c..d9d661ff 100644
--- a/AKSubmission/templates/AKSubmission/ak_detail.html
+++ b/AKSubmission/templates/AKSubmission/ak_detail.html
@@ -174,9 +174,11 @@
     <table class="table">
         <thead>
         <tr>
-            <th>{% trans "Duration" %}</th>
             {% if not ak.event.plan_hidden or user.is_staff %}
                 <th>{% trans "When?" %}</th>
+            {% endif %}
+            <th>{% trans "Duration" %}</th>
+            {% if not ak.event.plan_hidden or user.is_staff %}
                 <th>{% trans "Room" %}</th>
             {% endif %}
             <th></th>
@@ -185,9 +187,11 @@
         <tbody>
         {% for slot in ak.akslot_set.all %}
             <tr>
-                <td>{{ slot.duration_simplified }}</td>
                 {% if not ak.event.plan_hidden or user.is_staff %}
                     <td>{{ slot.time_simplified }}</td>
+                {% endif %}
+                <td>{{ slot.duration_simplified }}</td>
+                {% if not ak.event.plan_hidden or user.is_staff %}
                     <td>
                         {% if "AKPlan"|check_app_installed and slot.room %}
                             <a href="{% url 'plan:plan_room' event_slug=ak.event.slug pk=slot.room.pk %}">{{ slot.room }}</a>
-- 
GitLab