From d7dfa0c001a9b84541e1545e45d0536a87d6880e Mon Sep 17 00:00:00 2001 From: Alban Gruin Date: Fri, 19 Jan 2018 19:20:21 +0100 Subject: Liens permettant de naviguer sur les pages des semaines suivantes et précédentes --- templates/timetable.html | 7 ++++++- views.py | 7 +++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/templates/timetable.html b/templates/timetable.html index 8fafeed..cc90ed5 100644 --- a/templates/timetable.html +++ b/templates/timetable.html @@ -1,4 +1,5 @@ {% extends "index.html" %} +{% load dt_week %} {% block head %}{% if group_mode %} @@ -18,4 +19,8 @@ {% if last_update %}Dernière mise à jour le {{ last_update|date:"l j F o" }} à {{ last_update|date:"H:i" }}{% endif %}

{% include "timetable_common.html" %} - {% if group_mode %}

ICSRSSAtom

{% endif %}{% endblock %} +

+ {% if last_week is not None %}Semaine {{ last_week|dt_week }}{% if next_week is not None %} – {% endif %}{% endif %}{% if next_week is not None %}Semaine {{ next_week|dt_week }}{% endif %} + {% if group_mode %}{% if last_week is not None or next_week is not None %}
{% endif %} + ICSRSSAtom{% endif %} +

{% endblock %} diff --git a/views.py b/views.py index 0231c9e..10dcfa2 100644 --- a/views.py +++ b/views.py @@ -79,12 +79,19 @@ def timetable_common(request, obj, year=None, week=None, timetable=None): if not courses.exists() and provided_week: raise Http404 + # Récupération des semaines suivantes et précédentes pour les + # afficher proprement dans l’emploi du temps + last_week = getattr(Course.objects.get_courses(obj, begin__lt=start).last(), "begin", None) + next_week = getattr(Course.objects.get_courses(obj, begin__gte=end).first(), "begin", None) + last_update = courses.aggregate(Max("last_update"))["last_update__max"] grouped_courses = group_courses(courses) return render(request, "timetable.html", {"group": obj, "courses": grouped_courses, "last_update": last_update, "year": year, "week": int(week), + "last_week": last_week, + "next_week": next_week, "is_old_timetable": is_old_timetable, "group_mode": isinstance(obj, Group), "timetable": timetable}) -- cgit v1.2.1 From 2d5bb761ac83bfa4643006681587db2c5e11f60b Mon Sep 17 00:00:00 2001 From: Alban Gruin Date: Fri, 19 Jan 2018 20:27:21 +0100 Subject: Adaptation des liens vers les semaines suivantes et précédentes pour les emplois du temps des salles --- templates/timetable.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/timetable.html b/templates/timetable.html index cc90ed5..7811427 100644 --- a/templates/timetable.html +++ b/templates/timetable.html @@ -20,7 +20,7 @@

{% include "timetable_common.html" %}

- {% if last_week is not None %}Semaine {{ last_week|dt_week }}{% if next_week is not None %} – {% endif %}{% endif %}{% if next_week is not None %}Semaine {{ next_week|dt_week }}{% endif %} + {% if last_week is not None %}Semaine {{ last_week|dt_week }}{% if next_week is not None %} – {% endif %}{% endif %}{% if next_week is not None %}Semaine {{ next_week|dt_week }}{% endif %} {% if group_mode %}{% if last_week is not None or next_week is not None %}
{% endif %} ICSRSSAtom{% endif %}

{% endblock %} -- cgit v1.2.1 From 8b0626139036e50396f14cf9ae39b12e2540af85 Mon Sep 17 00:00:00 2001 From: Alban Gruin Date: Fri, 19 Jan 2018 20:48:58 +0100 Subject: Préchargement des groupes et des salles lorsqu’on demande la liste des salles. Réduit le nombre de requêtes à effectuer ainsi que le temps de traitement. --- models.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/models.py b/models.py index 4903b11..ae04fb8 100644 --- a/models.py +++ b/models.py @@ -178,7 +178,8 @@ class CourseManager(Manager): qs = qs.filter(groups__in=Group.objects.get_parents(obj), **criteria) \ .prefetch_related("rooms") elif isinstance(obj, Room): - qs = qs.filter(rooms__in=(obj,), **criteria) + qs = qs.filter(rooms__in=(obj,), **criteria) \ + .prefetch_related("groups", "rooms") else: raise(TypeError, "obj must be a Group or a Room") -- cgit v1.2.1 From 046e92137ace30cd645ba0f42421c283a60ba0cd Mon Sep 17 00:00:00 2001 From: Alban Gruin Date: Fri, 19 Jan 2018 21:31:35 +0100 Subject: N’affiche plus la liste des groupes dans l’emploi du temps des salles si un cours n’en a pas, au lieu de se baser sur le nombre de salles d’un cours pour faire ce choix. Suppression du préchargement des salles lorsqu’on demande les cours d’une salle. Cela permet de réduire le nombre de requêtes effectuées. --- models.py | 3 ++- templates/timetable_common.html | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index ae04fb8..15f378a 100644 --- a/models.py +++ b/models.py @@ -31,6 +31,7 @@ class SlugModel(models.Model): super(SlugModel, self).save() + class Meta: abstract = True @@ -179,7 +180,7 @@ class CourseManager(Manager): .prefetch_related("rooms") elif isinstance(obj, Room): qs = qs.filter(rooms__in=(obj,), **criteria) \ - .prefetch_related("groups", "rooms") + .prefetch_related("groups") else: raise(TypeError, "obj must be a Group or a Room") diff --git a/templates/timetable_common.html b/templates/timetable_common.html index 21300f1..6e59322 100644 --- a/templates/timetable_common.html +++ b/templates/timetable_common.html @@ -4,7 +4,7 @@

{% filter title %}{{ day.0.begin|date:"l j F o" }}{% endfilter %} – de {{ day.0.begin|date:"H:i" }} à {% with day|last as last %}{{ last.end|date:"H:i" }}{% endwith %}

+ {% if timetable %}Retour à la liste des mentions{% else %}Retour à la liste des années{% endif %} {% endblock %} diff --git a/templates/index.html b/templates/index.html index 71665bc..5779b3e 100644 --- a/templates/index.html +++ b/templates/index.html @@ -21,6 +21,7 @@

Aucun emploi du temps à afficher

{% endfor %} + {% if year %}Retour à la liste des années{% else %}Emploi du temps des salles{% endif %} {% endblock %}