diff --git a/.gitignore b/.gitignore index 75ae30bd2c43b1179aa62e408901ba973bfeb029..30fb29663a4f448863b43030a65bccef39cb948f 100755 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ secure* class.pdf class.tex .idea/ +media/ diff --git a/.idea/dataSources.local.xml b/.idea/dataSources.local.xml index 70aec478e3d08e8ec2f7c838d5636e0ca37b5aed..a6d51bc655404fbdaca80af14dadb95e3f3d52b1 100755 --- a/.idea/dataSources.local.xml +++ b/.idea/dataSources.local.xml @@ -2,30 +2,15 @@ <project version="4"> <component name="dataSourceStorageLocal"> <data-source name="Django default" uuid="ef6730d6-e849-4772-acac-62469acab4d2"> - <database-info product="MySQL" version="5.7.20-0ubuntu0.16.04.1" jdbc-version="4.0" driver-name="MySQL Connector Java" driver-version="mysql-connector-java-5.1.44 ( Revision: b3cda4f864902ffdde495b9df93937c3e20009be )" family="MYSQL" exact-version="5.7.20"> - <extra-name-characters>#@</extra-name-characters> - <identifier-quote-string>`</identifier-quote-string> - </database-info> - <case-sensitivity plain-identifiers="exact" quoted-identifiers="exact" /> - <user-name>www-data</user-name> + <database-info product="" version="" jdbc-version="" driver-name="" driver-version="" /> <introspection-schemas>*:schoolapps</introspection-schemas> </data-source> <data-source name="Django default2" uuid="ea4cff78-5949-410f-aa64-d6daa5fb293d"> - <database-info product="MySQL" version="5.7.21-0ubuntu0.16.04.1" jdbc-version="4.0" driver-name="MySQL Connector Java" driver-version="mysql-connector-java-5.1.44 ( Revision: b3cda4f864902ffdde495b9df93937c3e20009be )" family="MYSQL" exact-version="5.7.21"> - <extra-name-characters>#@</extra-name-characters> - <identifier-quote-string>`</identifier-quote-string> - </database-info> - <case-sensitivity plain-identifiers="exact" quoted-identifiers="exact" /> - <user-name>www-data</user-name> + <database-info product="" version="" jdbc-version="" driver-name="" driver-version="" /> <introspection-schemas>*:schoolapps</introspection-schemas> </data-source> <data-source name="Django untis" uuid="ae145b31-953d-4d55-ad07-b49b3287f618"> - <database-info product="MySQL" version="5.7.21-0ubuntu0.16.04.1" jdbc-version="4.0" driver-name="MySQL Connector Java" driver-version="mysql-connector-java-5.1.44 ( Revision: b3cda4f864902ffdde495b9df93937c3e20009be )" family="MYSQL" exact-version="5.7.21"> - <extra-name-characters>#@</extra-name-characters> - <identifier-quote-string>`</identifier-quote-string> - </database-info> - <case-sensitivity plain-identifiers="exact" quoted-identifiers="exact" /> - <user-name>www-data</user-name> + <database-info product="" version="" jdbc-version="" driver-name="" driver-version="" /> <introspection-schemas>*:untis</introspection-schemas> </data-source> </component> diff --git a/.idea/misc.xml b/.idea/misc.xml index bfe7e158d899bcf1568343297e964d1a399d335a..5143e4296e9af6591baf4e6271f513d1aa402567 100755 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,9 @@ <?xml version="1.0" encoding="UTF-8"?> <project version="4"> - <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.5 (school-apps)" project-jdk-type="Python SDK" /> + <component name="JavaScriptSettings"> + <option name="languageLevel" value="ES6" /> + </component> + <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.6 (school-apps)" project-jdk-type="Python SDK" /> <component name="PyCharmProfessionalAdvertiser"> <option name="shown" value="true" /> </component> diff --git a/.idea/modules.xml b/.idea/modules.xml index dfea16ff8e1e7177bf23ca639995803556600378..dea7eb1556ba6c1847d4914a9ab84f3e30aa2905 100755 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -3,6 +3,7 @@ <component name="ProjectModuleManager"> <modules> <module fileurl="file://$PROJECT_DIR$/.idea/school-apps.iml" filepath="$PROJECT_DIR$/.idea/school-apps.iml" /> + <module fileurl="file://$PROJECT_DIR$/.idea/school-apps.iml" filepath="$PROJECT_DIR$/.idea/school-apps.iml" /> </modules> </component> </project> \ No newline at end of file diff --git a/.idea/school-apps.iml b/.idea/school-apps.iml index f2e5dbb75cd3c381b4a56daf534b51941dc6cb74..2cf9edf5ce01568cbcf2fccc68ae2d9d8aadc199 100755 --- a/.idea/school-apps.iml +++ b/.idea/school-apps.iml @@ -17,7 +17,7 @@ <sourceFolder url="file://$MODULE_DIR$/schoolapps" isTestSource="false" /> <excludeFolder url="file://$MODULE_DIR$/venv" /> </content> - <orderEntry type="jdk" jdkName="Python 3.5 (school-apps)" jdkType="Python SDK" /> + <orderEntry type="jdk" jdkName="Python 3.6 (school-apps)" jdkType="Python SDK" /> <orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="library" name="jquery-3.2.1" level="application" /> <orderEntry type="module" module-name="bwinf-36-2" /> diff --git a/schoolapps/schoolapps/settings.py b/schoolapps/schoolapps/settings.py index 1c5712452a827ec85d497077b390fa17feb89f3e..b4bba16f4d8c764f018e3bec193a097644a5c45e 100755 --- a/schoolapps/schoolapps/settings.py +++ b/schoolapps/schoolapps/settings.py @@ -162,6 +162,7 @@ TIMETABLE_WIDTH = 5 TIMETABLE_HEIGHT = 10 LESSONS = [('8:00', '1.'), ('8:45', '2.'), ('9:45', '3.'), ('10:35', '4.'), ('11:35', '5.'), ('12:25', '6.'), ('13:15', '7.'), ('14:05', '8.'), ('14:50', '9.')] +WEEK_DAYS = ["Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag"] ######## # LDAP # diff --git a/schoolapps/static/common/helper.js b/schoolapps/static/common/helper.js index c803c0a883c717b833060628326111e5bef26cb2..fb71146384e3b77c1d341b2004cef14c5d0eba48 100644 --- a/schoolapps/static/common/helper.js +++ b/schoolapps/static/common/helper.js @@ -90,6 +90,9 @@ $(document).ready(function () { // Initialize tooltip [MAT] $('.tooltipped').tooltip(); + // Initialize select [MAT] + $('select').formSelect(); + // Initalize print button $("#print").click(function () { window.print(); diff --git a/schoolapps/static/common/style.css b/schoolapps/static/common/style.css index dbdab4f2daebfbd971da75ca4db736115cf3d952..5187375e1c2c1e13697e44c26a1d34b7367b89c2 100755 --- a/schoolapps/static/common/style.css +++ b/schoolapps/static/common/style.css @@ -189,6 +189,12 @@ table.substitutions td, table.substitutions th { width: 30%; } +.no-margin { + margin: 0; +} + +/* Table*/ + table.striped > tbody > tr:nth-child(odd) { background-color: rgba(208, 208, 208, 0.5); } diff --git a/schoolapps/static/materialize b/schoolapps/static/materialize index 5714e3b8821ba2cc6831064e7cb901e743e19b58..80e8ed370487aaf1e2185b028f7deda40da94eb9 160000 --- a/schoolapps/static/materialize +++ b/schoolapps/static/materialize @@ -1 +1 @@ -Subproject commit 5714e3b8821ba2cc6831064e7cb901e743e19b58 +Subproject commit 80e8ed370487aaf1e2185b028f7deda40da94eb9 diff --git a/schoolapps/templates/partials/header.html b/schoolapps/templates/partials/header.html index 76b605c4c8a4aaf2e2650d277902dd517ad84f6a..5401bbd63dc65c3b7a1e50c8fa83e2bd765b921e 100755 --- a/schoolapps/templates/partials/header.html +++ b/schoolapps/templates/partials/header.html @@ -14,11 +14,10 @@ <!-- CSS --> <!---------> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> - <link rel="stylesheet" type="text/css" media="screen" - href="{% static 'materialize/dist/css/materialize.min.css' %}"> + <link rel="stylesheet" type="text/css" href="{% static 'materialize/dist/css/materialize.min.css' %}"> <!-- django-material --> - {% include 'material/includes/material_css.html' %} + {# {% include 'material/includes/material_css.html' %}#} <link rel="stylesheet" type="text/css" href="{% static 'common/style.css' %}"> <!----------------> @@ -28,7 +27,7 @@ <script src="{% static 'materialize/dist/js/materialize.min.js' %}"></script> <script src="{% static 'common/helper.js' %}"></script> <!-- django-material --> - {% include 'material/includes/material_js.html' %} + {# {% include 'material/includes/material_js.html' %}#} </head> <body> diff --git a/schoolapps/timetable/templates/timetable/plan.html b/schoolapps/timetable/templates/timetable/plan.html index 31f394f4cefde1a48b7d0cb7483816c41c4200f9..6b54309f10983713a21ea22479b2f88cf55428c4 100755 --- a/schoolapps/timetable/templates/timetable/plan.html +++ b/schoolapps/timetable/templates/timetable/plan.html @@ -1,20 +1,35 @@ {% include 'partials/header.html' %} <script type="text/javascript"> {% if smart %} + var week = {{ selected_week }}; function goToCalendarWeek(cw) { window.location.href = "{% url "timetable_smart_plan" raw_type id "smart" %}/{{ selected_year }}/" + cw; } function onCalendarWeekChanged() { - goToCalendarWeek($("#calendar-week").val()); + goToCalendarWeek($("#calendar-week").val(), {{ selected_year }}); + } + + function weekBefore() { + if (week > 1) { + goToCalendarWeek(week - 1) + } + } + + function weekNext() { + if (week < 52) { + goToCalendarWeek(week + 1); + } } $(document).ready(function () { $("#calendar-week").change(onCalendarWeekChanged); + $("#week-before").click(weekBefore); + $("#week-next").click(weekNext); }); {% endif %} </script> <main> - <div class="row"> + <div class="row no-margin"> <div class="col s12 m6 l8 xl9"> <h3> Stundenplan <i>{{ el }}</i> @@ -22,7 +37,7 @@ </div> - <div class=" col s12 m6 l4 xl3 right align-right"> + <div class=" col s12 m6 l4 xl3 right align-right no-print"> <a class="waves-effect waves-teal btn-flat btn-flat-medium right" id="print"> <i class="material-icons center">print</i> </a> @@ -30,89 +45,74 @@ </div> <div class="row"> {% if smart %} + {# Show if smart #} + + {# Toggle button to regular and smart plan badge #} <div class="col s12 m6"> <p class="left" style="margin: 0;"><span class="badge new primary-color left-align">SMART PLAN</span> </p> - <a class="waves-effect waves-light btn" href="{% url "timetable_plan" raw_type id %}"> + <a class="waves-effect waves-light btn-flat no-print" href="{% url "timetable_plan" raw_type id %}"> <i class="material-icons left">slideshow</i> Regelplan anzeigen </a> </div> - <div class="input-field col s12 m6 right"> - <select id="calendar-week"> - {% for week in weeks %} - <option value="{{ week.calendar_week }}" {% if week.calendar_week == selected_week %} - selected {% endif %}> - KW {{ week.calendar_week }} - ({{ week.first_day|date:"j. F Y" }}–{{ week.last_day|date:"j. F Y" }}) - </option> - {% endfor %} - </select> + + {# Week select #} + <div class="col s12 m6 right "> + <div class="col s3 no-print"> + <a class="waves-effect waves-teal btn-flat btn-flat-medium right" id="week-before"> + <i class="material-icons center">navigate_before</i> + </a> + </div> + <div class="input-field col s6 no-margin"> + <select id="calendar-week"> + {% for week in weeks %} + <option value="{{ week.calendar_week }}" {% if week.calendar_week == selected_week %} + selected {% endif %}> KW {{ week.calendar_week }} ({{ week.first_day|date:"j.n.Y" }}–{{ week.last_day|date:"j.n.Y" }}) + </option> + {% endfor %} + </select> + </div> + <div class="col s3 no-print"> + <a class="waves-effect waves-teal btn-flat btn-flat-medium left" id="week-next"> + <i class="material-icons center">navigate_next</i> + </a> + </div> </div> {% else %} - <a class="waves-effect waves-light btn" + {# Show if regular #} + <a class="waves-effect waves-light btn-flat no-print" href="{% url "timetable_smart_plan" raw_type id "smart" %}"> <i class="material-icons left">slideshow</i> - SMART PLAN + SMART PLAN ANZEIGEN </a> {% endif %} </div> <div class="timetable-plan"> + + {# Week days #} <div class="row"> <div class="col s2"> </div> - <div class="col s2"> - <div class="card timetable-title-card"> - <div class="card-content"> - <span class="card-title"> - Montag - </span> - </div> - </div> - </div> - <div class="col s2"> - <div class="card timetable-title-card"> - <div class="card-content"> - <span class="card-title"> - Dienstag - </span> - </div> - </div> - </div> - <div class="col s2"> - <div class="card timetable-title-card"> - <div class="card-content"> - <span class="card-title"> - Mittwoch - </span> - </div> - </div> - </div> - <div class="col s2"> - <div class="card timetable-title-card"> - <div class="card-content"> - <span class="card-title"> - Donnerstag - </span> - </div> - </div> - </div> - <div class="col s2"> - <div class="card timetable-title-card"> - <div class="card-content"> + {% for week_day in week_days %} + <div class="col s2"> + <div class="card timetable-title-card"> + <div class="card-content"> <span class="card-title"> - Freitag + {{ week_day }} </span> + </div> </div> </div> - </div> - + {% endfor %} </div> + + {# Lessons #} {% for row, time in plan %} <div class="row"> <div class="col s2"> diff --git a/schoolapps/timetable/views.py b/schoolapps/timetable/views.py index 87a63b78157e2b851d43c9ebb6e1c91b5d0467b9..8e8ea62defee13945669b18b68ef64d2be5dc0af 100755 --- a/schoolapps/timetable/views.py +++ b/schoolapps/timetable/views.py @@ -6,6 +6,7 @@ from django.http import Http404, FileResponse from django.shortcuts import render from django.utils import timezone +from schoolapps.settings import WEEK_DAYS from timetable.pdf import generate_class_tex, generate_pdf from untisconnect.plan import get_plan, TYPE_TEACHER, TYPE_CLASS, TYPE_ROOM, parse_lesson_times @@ -110,7 +111,8 @@ def plan(request, plan_type, plan_id, smart="", year=timezone.datetime.now().yea "times": parse_lesson_times(), "weeks": get_calendar_weeks(year=year), "selected_week": calendar_week, - "selected_year": year + "selected_year": year, + "week_days": WEEK_DAYS } return render(request, 'timetable/plan.html', context) diff --git a/schoolapps/untisconnect/sub.py b/schoolapps/untisconnect/sub.py index 51bf1ad15660b1292c25929ecf466d2af3afe8a9..723f79ae2171048e996ee978890071b9d432328a 100644 --- a/schoolapps/untisconnect/sub.py +++ b/schoolapps/untisconnect/sub.py @@ -235,15 +235,14 @@ def generate_sub_table(subs): sub_row.room = generate_room_row(sub) sub_row.room_full = generate_room_row(sub, full=True) - if DEBUG: - # Add id only if debug mode is on - if sub.text: - sub_row.text = sub.text + " " + str(sub.id) - else: - sub_row.text = str(sub.id) - else: - sub_row.text = sub.text - + # if DEBUG: + # # Add id only if debug mode is on + # if sub.text: + # sub_row.text = sub.text + " " + str(sub.id) + # else: + # sub_row.text = str(sub.id) + # else: + sub_row.text = sub.text sub_row.badge = None if sub.type == 1: