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