From cd5e8d3599efa103ed5618e03ae1051cacf70038 Mon Sep 17 00:00:00 2001
From: Jonathan Weth <git@jonathanweth.de>
Date: Wed, 13 Nov 2019 17:56:53 +0100
Subject: [PATCH] - Merge dev into feature/dashboard - Do some refactoring

---
 biscuit/apps/chronos/helper.py | 137 ---------------------------------
 biscuit/apps/chronos/views.py  |  20 ++---
 2 files changed, 8 insertions(+), 149 deletions(-)
 delete mode 100644 biscuit/apps/chronos/helper.py

diff --git a/biscuit/apps/chronos/helper.py b/biscuit/apps/chronos/helper.py
deleted file mode 100644
index c2f9d451..00000000
--- a/biscuit/apps/chronos/helper.py
+++ /dev/null
@@ -1,137 +0,0 @@
-import datetime
-
-from django.utils import timezone
-
-from schoolapps.settings import LONG_WEEK_DAYS
-from untisconnect.api import TYPE_TEACHER, get_teacher_by_shortcode, TYPE_CLASS, get_class_by_name, get_all_teachers, \
-    get_all_classes, get_all_rooms, get_all_subjects
-from userinformation import UserInformation
-
-
-def get_name_for_next_week_day_from_today() -> str:
-    """
-    Return the next week day as you would say it from today: "today", "tomorrow" or "<weekday>"
-    :return: Formatted date
-    """
-    # Next weekday
-    next_weekday: timezone.datetime = get_next_weekday_with_time(timezone.now(), timezone.now().time())
-
-    if next_weekday.date() == timezone.now().date():
-        # Today
-        date_formatted = "heute"
-    elif next_weekday.date() == timezone.now().date() + timezone.timedelta(days=1):
-        # Tomorrow
-        date_formatted = "morgen"
-    else:
-        # Other weekday
-        date_formatted = LONG_WEEK_DAYS[next_weekday.isoweekday() - 1][0]
-
-    return date_formatted
-
-
-def get_type_and_object_of_user(user):
-    _type = UserInformation.user_type(user)
-    if _type == UserInformation.TEACHER:
-        # Teacher
-        _type = TYPE_TEACHER
-        shortcode = user.username
-        el = get_teacher_by_shortcode(shortcode)
-    elif _type == UserInformation.STUDENT:
-        # Student
-        _type = TYPE_CLASS
-        _name = UserInformation.user_classes(user)[0]
-        el = get_class_by_name(_name)
-    else:
-        return None, None
-
-    return _type, el
-
-
-def get_all_context():
-    teachers = get_all_teachers()
-    classes = get_all_classes()
-    rooms = get_all_rooms()
-    subjects = get_all_subjects()
-    context = {
-        'teachers': teachers,
-        'classes': classes,
-        'rooms': rooms,
-        'subjects': subjects
-    }
-    return context
-
-
-def get_calendar_weeks(year=timezone.datetime.now().year):
-    weeks = []
-
-    # Get first day of year > first calendar week
-    first_day_of_year = timezone.datetime(year=year, month=1, day=1)
-    if first_day_of_year.isoweekday() != 1:
-        days_to_next_monday = 1 - first_day_of_year.isoweekday()
-        first_day_of_year += datetime.timedelta(days=days_to_next_monday)
-
-    # Go for all weeks in year and create week dict
-    first_day_of_week = first_day_of_year
-    for i in range(52):
-        calendar_week = i + 1
-        last_day_of_week = first_day_of_week + datetime.timedelta(days=4)
-        weeks.append({
-            "calendar_week": calendar_week,
-            "first_day": first_day_of_week,
-            "last_day": last_day_of_week
-        })
-        first_day_of_week += datetime.timedelta(weeks=1)
-
-    return weeks
-
-
-def find_out_what_is_today(year=None, month=None, day=None):
-    date = timezone.datetime.now()
-    time = datetime.datetime.now().time()
-    if year is not None and day is not None and month is not None:
-        date = timezone.datetime(year=year, month=month, day=day)
-        if date != timezone.datetime.now():
-            time = datetime.time(0)
-    return date, time
-
-
-def current_calendar_week():
-    return timezone.datetime.now().isocalendar()[1]
-
-
-def current_year():
-    return timezone.datetime.now().year
-
-
-def get_calendar_week(calendar_week, year=timezone.datetime.now().year):
-    weeks = get_calendar_weeks(year=year)
-    for week in weeks:
-        if week["calendar_week"] == calendar_week:
-            return week
-    return None
-
-
-def get_next_weekday(date):
-    """Get the next weekday by a datetime object"""
-
-    if date.isoweekday() in {6, 7}:
-        if date.isoweekday() == 6:
-            plus = 2
-        else:
-            plus = 1
-        date += datetime.timedelta(days=plus)
-    return date
-
-
-def get_next_weekday_with_time(date, time) -> datetime.datetime:
-    """Get the next weekday by a datetime object"""
-
-    if time > datetime.time(15, 35):
-        date += datetime.timedelta(days=1)
-    if date.isoweekday() in {6, 7}:
-        if date.isoweekday() == 6:
-            plus = 2
-        else:
-            plus = 1
-        date += datetime.timedelta(days=plus)
-    return date
diff --git a/biscuit/apps/chronos/views.py b/biscuit/apps/chronos/views.py
index 3c972a43..5f9dec41 100755
--- a/biscuit/apps/chronos/views.py
+++ b/biscuit/apps/chronos/views.py
@@ -8,22 +8,20 @@ from django.shortcuts import render, redirect, get_object_or_404
 from django.utils import timezone
 
 from debug.models import register_traceback, register_return_0
+from schoolapps.settings import BASE_DIR
 from schoolapps.settings import SHORT_WEEK_DAYS, LONG_WEEK_DAYS
 from timetable.filters import HintFilter
 from timetable.forms import HintForm
-from timetable.helper import get_type_and_object_of_user, get_all_context, get_calendar_week, get_calendar_weeks, \
-    get_next_weekday, current_calendar_week, current_year, find_out_what_is_today, get_next_weekday_with_time
+from untisconnect.datetimeutils import get_calendar_week, get_calendar_weeks, get_next_weekday, find_out_what_is_today, \
+    get_next_weekday_with_time
+from untisconnect.utils import get_type_and_object_of_user, overview_dict
 from timetable.hints import get_all_hints_by_time_period, get_all_hints_by_class_and_time_period, \
     get_all_hints_for_teachers_by_time_period, get_all_hints_not_for_teachers_by_time_period
 from timetable.pdf import generate_class_tex, generate_pdf
-
-from untisconnect.plan import get_plan, parse_lesson_times
-from untisconnect.sub import get_substitutions_by_date, generate_sub_table, get_header_information
 from untisconnect.api import *
 from untisconnect.events import get_all_events_by_date
-
-from schoolapps.settings import BASE_DIR
-
+from untisconnect.plan import get_plan, parse_lesson_times
+from untisconnect.sub import get_substitutions_by_date, generate_sub_table, get_header_information
 from .models import Hint
 
 
@@ -40,7 +38,7 @@ def all(request):
     :param request: Django request
     :return: rendered template
     """
-    context = get_all_context()
+    context = overview_dict()
     return render(request, 'timetable/all.html', context)
 
 
@@ -53,7 +51,7 @@ def quicklaunch(request):
     :param request: Django request
     :return: rendered template
     """
-    context = get_all_context()
+    context = overview_dict()
     return render(request, 'timetable/quicklaunch.html', context)
 
 
@@ -211,8 +209,6 @@ def my_plan(request, year=None, month=None, day=None):
     return render(request, 'timetable/myplan.html', context)
 
 
-
-
 #################
 # SUBSTITUTIONS #
 #################
-- 
GitLab