From 4f203db441b1f6615f8ff71ab5aa146f7f96829a Mon Sep 17 00:00:00 2001
From: Tom Teichler <tom.teichler@teckids.org>
Date: Sun, 19 Jan 2020 21:45:23 +0100
Subject: [PATCH] Add constance settings for untis db

---
 aleksis/apps/untis/schoolapps_util.py | 53 +++++++++++++++++++++++++++
 aleksis/apps/untis/settings.py        | 24 ++++++++++++
 aleksis/apps/untis/util.py            |  7 ----
 3 files changed, 77 insertions(+), 7 deletions(-)
 create mode 100644 aleksis/apps/untis/schoolapps_util.py
 create mode 100644 aleksis/apps/untis/settings.py

diff --git a/aleksis/apps/untis/schoolapps_util.py b/aleksis/apps/untis/schoolapps_util.py
new file mode 100644
index 0000000..4895a34
--- /dev/null
+++ b/aleksis/apps/untis/schoolapps_util.py
@@ -0,0 +1,53 @@
+from datetime import date, time, timedelta
+from typing import BinaryIO, Optional, Union
+from xml.dom import Node, minidom
+
+from django.http import HttpRequest
+from django.utils.translation import ugettext as _
+
+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 untisconnect.datetimeutils import get_calendar_week, calendar_week, weekday
+from untisconnect.plan import get_plan
+from userinformation import UserInformation
+
+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:
+        # Nothing of both
+        return None, None
+
+    return _type, el
+
+
+def overview_dict():
+    return {
+        'teachers': get_all_teachers(),
+        'classes': get_all_classes(),
+        'rooms': get_all_rooms(),
+        'subjects': get_all_subjects()
+    }
+
+
+def get_plan_for_day(_type, plan_id, date):
+    # Get calendar week and monday of week
+
+    monday_of_week = get_calendar_week(calendar_week(date), date.year)["first_day"]
+    week_day = weekday(date)
+
+    # Get plan
+    plan, holidays = get_plan(_type, plan_id, smart=True, monday_of_week=monday_of_week)
+    lessons = [(row[week_day], time) for row, time in plan]
+
+    holidays_for_date = holidays[week_day]
+    return lessons, holidays_for_date
diff --git a/aleksis/apps/untis/settings.py b/aleksis/apps/untis/settings.py
new file mode 100644
index 0000000..4806f1c
--- /dev/null
+++ b/aleksis/apps/untis/settings.py
@@ -0,0 +1,24 @@
+from aleksis.core.util.core_helpers import lazy_config
+
+DATABASES = {
+    'untis': {
+        'ENGINE': 'django.db.backends.mysql',
+        'NAME': lazy_config("UNTIS_NAME"),
+        'USER': lazy_config("UNTIS_USER"),
+        'PASSWORD': lazy_config("UNTIS_PASSWORD"),
+        'HOST': lazy_config("UNTIS_HOST"),
+        'PORT': lazy_config("UNTIS_PORT"),
+    }
+}
+
+CONSTANCE_CONFIG = {
+    "UNTIS_NAME": ("untis", _("Name of database"), "char_field"),
+    "UNTIS_USER": ("aleksis", _("Database user"), "char_field"),
+    "UNTIS_PASSWORD": ("aleksis", _("Database password"), "char_field"),
+    "UNTIS_HOST": ("127.0.0.1", _("Database host"), "char_field"),
+    "UNTIS_PORT": ("3306", _("Database port"), "char_field"),
+}
+
+CONSTANCE_CONFIG_FIELDSETS = {
+    "Untis Database Settings": ("UNTIS_NAME", "UNTIS_USER", "UNTIS_PASSWORD", "UNTIS_HOST", "UNTIS_PORT"),
+}
diff --git a/aleksis/apps/untis/util.py b/aleksis/apps/untis/util.py
index 3b61df0..0f0c7a6 100644
--- a/aleksis/apps/untis/util.py
+++ b/aleksis/apps/untis/util.py
@@ -10,13 +10,6 @@ from aleksis.core.models import Group, Person
 from aleksis.core.util import messages
 
 
-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 untisconnect.datetimeutils import get_calendar_week, calendar_week, weekday
-from untisconnect.plan import get_plan
-from userinformation import UserInformation
-
-
 def get_child_node_text(node: Node, tag: str) -> Optional[str]:
     tag_nodes = node.getElementsByTagName(tag)
 
-- 
GitLab