From 5340c29053d0b87d5b901c6ce2bb5ab18b7b3b5d Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Sat, 18 Jan 2020 19:42:56 +0100 Subject: [PATCH] Include template my_timetable.html and finish view for it --- .../templates/chronos/my_timetable.html | 114 ++++++++---------- aleksis/apps/chronos/views.py | 36 ++++++ 2 files changed, 85 insertions(+), 65 deletions(-) diff --git a/aleksis/apps/chronos/templates/chronos/my_timetable.html b/aleksis/apps/chronos/templates/chronos/my_timetable.html index 265b5725..f5981653 100644 --- a/aleksis/apps/chronos/templates/chronos/my_timetable.html +++ b/aleksis/apps/chronos/templates/chronos/my_timetable.html @@ -1,85 +1,69 @@ {% extends 'core/base.html' %} -{% load i18n %} +{% load i18n static %} + +{% block extra_head %} + <link rel="stylesheet" href="{% static 'css/chronos/timetable.css' %}"> +{% endblock %} {% block content %} - <div class="row nomargin"> - <div class="col m12 s12 l6"> - <h4> - {% trans "My plan" %} <i>{{ el }}</i> - <span class="badge new primary-color ">{% trans "SMART PLAN" %}</span> - </h4> - <a class="btn-flat waves-effect waves-light" href="{% url "timetable_smart_plan" raw_type id %}"> - {% trans "Show week timetable" %} - </a> - </div> + <div class="row nomargin"> + <div class="col m12 s12 l6"> + <h4> + {% trans "My timetable" %} <i>{{ el }}</i> + <span class="badge new primary-color ">{% trans "SMART PLAN" %}</span> + </h4> + <a class="btn-flat waves-effect waves-light" href="{% url "timetable" super.type super.el.pk %}"> + {% trans "Show week timetable for" %} {{ super.el.short_name }} + </a> </div> + </div> - <div class="row nomargin"> - <div class="col m12 s12 l6"> - {% include "timetable/hintsinplan.html" %} - </div> + <div class="row nomargin"> + <div class="col m12 s12 l6"> + {# {% include "timetable/hintsinplan.html" %}#} </div> + </div> - <script type="text/javascript"> - {# TODO Use django-js-reverse #} - var dest = "/timetable/my/"; - </script> + <script type="text/javascript"> + var dest = Urls.myTimetable(); + </script> - <div class="row"> - <div class="timetable-plan col s12 m12 l6"> + <div class="row"> + <div class="timetable-plan col s12 m12 l6"> - {# Date #} + {# Date #} - <div class="row"> - <div class="col s12"> - <div class="card timetable-title-card"> - <div class="card-content"> + <div class="row"> + <div class="col s12"> + <div class="card timetable-title-card"> + <div class="card-content"> <span class="card-title"> - {% include "timetable/datepicker.html" %} - {% if holiday %} - <span class="badge new blue center-align holiday-badge">{{ holiday.0 }}</span> - {% endif %} + {% include "chronos/partials/datepicker.html" with display_date_only=1 %} +{# {% if holiday %}#} +{# <span class="badge new blue center-align holiday-badge">{{ holiday.0 }}</span>#} +{# {% endif %}#} </span> - </div> - </div> - - </div> </div> - {# Lessons #} - {% for row, time in plan %} - <div class="row"> - <div class="col s4"> - <div class="card timetable-title-card"> - <div class="card-content"> - - {# Lesson number #} - <span class="card-title left"> - {{ time.number_format }} - </span> - - {# Time dimension of lesson #} - <div class="right timetable-time grey-text text-darken-2"> - <span>{{ time.start|date:"H:i" }}</span><br> - <span>{{ time.end|date:"H:i" }}</span> - </div> - </div> - </div> - - </div> - {% for col in row %} - {% if forloop.counter0 == week_day %} - <div class="col s8"> - {# A lesson #} - {% include "timetable/lesson.html" %} - </div> - {% endif %} - {% endfor %} - </div> - {% endfor %} + </div> </div> + </div> + {# Lessons #} + {% for period, lessons in lesson_periods.items %} + <div class="row"> + <div class="col s4"> + {% include "chronos/partials/period_time.html" with period=period periods=periods %} + </div> + <div class="col s8"> + {# A lesson #} + {% include "chronos/partials/lesson.html" with lessons=lessons %} + </div> + </div> + {% endfor %} + </div> + </div> {% endblock %} diff --git a/aleksis/apps/chronos/views.py b/aleksis/apps/chronos/views.py index 7df559a5..76dd4c27 100644 --- a/aleksis/apps/chronos/views.py +++ b/aleksis/apps/chronos/views.py @@ -50,6 +50,42 @@ def my_timetable( else: wanted_day = get_next_relevant_day(timezone.now().date(), datetime.now().time()) + if request.user.person: + person = request.user.person + + if person.primary_group: + # Student + + type_ = "group" + super_el = person.primary_group + lesson_periods_person = person.lesson_periods_as_participant + + elif person.is_teacher(): + # Teacher + + type_ = "teacher" + super_el = person + lesson_periods_person = person.lesson_periods_as_teacher + else: + # If no student or teacher, redirect to all timetables + return redirect("all_timetables") + + lesson_periods = lesson_periods_person.on_day(wanted_day) + + # Build dictionary with lessons + per_period = {} + for lesson_period in lesson_periods: + if lesson_period.period.period in per_period: + per_period[lesson_period.period.period].append(lesson_period) + else: + per_period[lesson_period.period.period] = [lesson_period] + + context["lesson_periods"] = OrderedDict(sorted(per_period.items())) + context["super"] = {"type": type_, "el": super_el} + context["type"] = type_ + context["day"] = wanted_day + context["periods"] = TimePeriod.get_times_dict() + return render(request, "chronos/my_timetable.html", context) -- GitLab