From f9032ffe42e1d6b9cb6a5c3c197d90c7381b36f8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Benjamin=20H=C3=A4ttasch?=
 <benjamin.haettasch@fachschaft.informatik.tu-darmstadt.de>
Date: Tue, 12 May 2020 01:02:50 +0200
Subject: [PATCH] Improve event pre-population in admin views

If there is no active event, pre-select the next upcoming event in admin views
---
 AKModel/models.py | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/AKModel/models.py b/AKModel/models.py
index 79447612..596d92e6 100644
--- a/AKModel/models.py
+++ b/AKModel/models.py
@@ -1,4 +1,6 @@
-import datetime
+from datetime import timedelta
+
+from django.utils.datetime_safe import datetime
 import itertools
 
 from django.db import models
@@ -47,7 +49,12 @@ class Event(models.Model):
 
     @staticmethod
     def get_next_active():
-        return Event.objects.filter(active=True).order_by('start').first()
+        # Get first active event taking place
+        event = Event.objects.filter(active=True).order_by('start').first()
+        # No active event? Return the next event taking place
+        if event is None:
+            event = Event.objects.order_by('start').filter(start__gt=datetime.now()).first()
+        return event
 
 
 class AKOwner(models.Model):
@@ -313,7 +320,7 @@ class AKSlot(models.Model):
         """
         Retrieve end time of the AK slot
         """
-        return self.start + datetime.timedelta(hours=float(self.duration))
+        return self.start + timedelta(hours=float(self.duration))
 
     @property
     def seconds_since_last_update(self):
-- 
GitLab