From f886a0ed3c72b73000dc153862945396cf3971cd Mon Sep 17 00:00:00 2001
From: Jonathan Weth <git@jonathanweth.de>
Date: Tue, 21 Jan 2020 18:15:49 +0100
Subject: [PATCH] Create util namespace

---
 aleksis/apps/chronos/models.py                |  2 +-
 aleksis/apps/chronos/util/min_max.py          | 19 +++++++++++++++++++
 .../chronos/{min_max.py => util/prev_next.py} | 19 ++-----------------
 .../apps/chronos/{util.py => util/weeks.py}   |  0
 aleksis/apps/chronos/views.py                 | 15 ++++++---------
 5 files changed, 28 insertions(+), 27 deletions(-)
 create mode 100644 aleksis/apps/chronos/util/min_max.py
 rename aleksis/apps/chronos/{min_max.py => util/prev_next.py} (63%)
 rename aleksis/apps/chronos/{util.py => util/weeks.py} (100%)

diff --git a/aleksis/apps/chronos/models.py b/aleksis/apps/chronos/models.py
index 895420f1..ed06b1e5 100644
--- a/aleksis/apps/chronos/models.py
+++ b/aleksis/apps/chronos/models.py
@@ -15,7 +15,7 @@ from calendarweek.django import CalendarWeek, i18n_day_names_lazy, i18n_day_abbr
 from aleksis.core.mixins import ExtensibleModel
 from aleksis.core.models import Group, Person
 
-from .util import week_weekday_from_date
+from aleksis.apps.chronos.util.weeks import week_weekday_from_date
 
 
 class LessonPeriodManager(models.Manager):
diff --git a/aleksis/apps/chronos/util/min_max.py b/aleksis/apps/chronos/util/min_max.py
new file mode 100644
index 00000000..4d5dd421
--- /dev/null
+++ b/aleksis/apps/chronos/util/min_max.py
@@ -0,0 +1,19 @@
+from django.db.models import Min, Max
+
+from aleksis.apps.chronos.models import TimePeriod
+
+# Determine overall first and last day and period
+min_max = TimePeriod.objects.aggregate(
+    Min("period"), Max("period"), Min("weekday"), Max("weekday"), Min("time_start"), Max("time_end")
+)
+
+period_min = min_max.get("period__min", 1)
+period_max = min_max.get("period__max", 7)
+
+time_min = min_max.get("time_start__min", None)
+time_max = min_max.get("time_end__max", None)
+
+weekday_min_ = min_max.get("weekday__min", 0)
+weekday_max = min_max.get("weekday__max", 6)
+
+
diff --git a/aleksis/apps/chronos/min_max.py b/aleksis/apps/chronos/util/prev_next.py
similarity index 63%
rename from aleksis/apps/chronos/min_max.py
rename to aleksis/apps/chronos/util/prev_next.py
index 8d8d60c2..077a26de 100644
--- a/aleksis/apps/chronos/min_max.py
+++ b/aleksis/apps/chronos/util/prev_next.py
@@ -1,25 +1,10 @@
-from datetime import date, time, timedelta
+from datetime import timedelta, date, time
 from typing import Optional
 
 from calendarweek import CalendarWeek
-from django.db.models import Min, Max
 from django.utils import timezone
 
-from .models import TimePeriod
-
-# Determine overall first and last day and period
-min_max = TimePeriod.objects.aggregate(
-    Min("period"), Max("period"), Min("weekday"), Max("weekday"), Min("time_start"), Max("time_end")
-)
-
-period_min = min_max.get("period__min", 1)
-period_max = min_max.get("period__max", 7)
-
-time_min = min_max.get("time_start__min", None)
-time_max = min_max.get("time_end__max", None)
-
-weekday_min_ = min_max.get("weekday__min", 0)
-weekday_max = min_max.get("weekday__max", 6)
+from aleksis.apps.chronos.util.min_max import weekday_min_, weekday_max, time_max
 
 
 def get_next_relevant_day(day: Optional[date] = None, time: Optional[time] = None) -> date:
diff --git a/aleksis/apps/chronos/util.py b/aleksis/apps/chronos/util/weeks.py
similarity index 100%
rename from aleksis/apps/chronos/util.py
rename to aleksis/apps/chronos/util/weeks.py
diff --git a/aleksis/apps/chronos/views.py b/aleksis/apps/chronos/views.py
index 5ac21d70..6841d735 100644
--- a/aleksis/apps/chronos/views.py
+++ b/aleksis/apps/chronos/views.py
@@ -9,25 +9,22 @@ from django.shortcuts import get_object_or_404, redirect, render
 from django.urls import reverse
 from django.utils import timezone
 from django.utils.translation import ugettext as _
-
 from django_tables2 import RequestConfig
 
 from aleksis.core.decorators import admin_required
 from aleksis.core.models import Person, Group
 from aleksis.core.util import messages
-
 from .forms import LessonSubstitutionForm
-from .min_max import (
+from .models import LessonPeriod, LessonSubstitution, TimePeriod, Room
+from .tables import LessonsTable
+from .util.min_max import (
     period_min,
     period_max,
     weekday_min_,
-    weekday_max,
-    get_next_relevant_day,
-    get_prev_relevant_day,
+    weekday_max
 )
-from .models import LessonPeriod, LessonSubstitution, TimePeriod, Room
-from .tables import LessonsTable
-from .util import CalendarWeek, get_weeks_for_year
+from .util.prev_next import get_prev_relevant_day, get_next_relevant_day
+from .util.weeks import CalendarWeek, get_weeks_for_year
 
 
 def get_prev_next_by_day(day: date, url: str) -> Tuple[str, str]:
-- 
GitLab