diff options
-rw-r--r-- | templates/index.html | 18 | ||||
-rw-r--r-- | templates/mention_list.html | 14 | ||||
-rw-r--r-- | templates/timetables_list.html | 9 | ||||
-rw-r--r-- | urls.py | 7 | ||||
-rw-r--r-- | views.py | 11 |
5 files changed, 47 insertions, 12 deletions
diff --git a/templates/index.html b/templates/index.html index d834884..09bb0f6 100644 --- a/templates/index.html +++ b/templates/index.html @@ -58,13 +58,17 @@ li.course { <header> <h1><a href="{% url "index" %}">celcatsanitizer</a></h1> </header> - <div class="content">{% block body %}{% for timetable in timetables %} - <section id="{{ timetable.slug }}"> - <h3><a href="{{ timetable.url }}">{{ timetable.name }}</a></h3> - <ul>{% for group in groups %}{% if group.timetable.id == timetable.id %} - <li><a class="text"{% if group.weeks is not None %} href="{% url "timetable" timetable.slug group.slug %}"{% endif %}>{{ group.name }}</a> – {% for week in group.weeks %}<a href="{% url "timetable" timetable.slug group.slug week.year week|dt_week %}">{{ week|dt_prettyprint }}</a> {% empty %}<em>aucun cours</em>{% endfor %}</li>{% endif %}{% endfor %} - </ul> - </section>{% endfor %}{% endblock %} + <div class="content"> + {% block body %} + <h3>Choisissez votre année</h3> + <ul> + {% for year in years %} + <li><a href="{% url "mentions" year.year %}">{{ year.year }}</a> <small>({{ year.count }})</small></li> + {% empty %} + <p><em>Aucun emploi du temps à afficher</em></p> + {% endfor %} + </ul> + {% endblock %} </div> <footer> <p>(c) 2017 – Alban Gruin<br /> diff --git a/templates/mention_list.html b/templates/mention_list.html new file mode 100644 index 0000000..3c455af --- /dev/null +++ b/templates/mention_list.html @@ -0,0 +1,14 @@ +{% extends "index.html" %} + +{% block title %}{{ year }} – {% endblock %} + +{% block body %} + <h3>Choisissez votre mention</h3> + <ul> +{% for timetable in timetables %} + <li><a href="#">{{ timetable.name }}</a></li> +{% empty %} + <p>Aucun emploi du temps à afficher</p> +{% endfor %} + </ul> +{% endblock %} diff --git a/templates/timetables_list.html b/templates/timetables_list.html new file mode 100644 index 0000000..d4c3579 --- /dev/null +++ b/templates/timetables_list.html @@ -0,0 +1,9 @@ +{% extends "index.html" %} + +{% block body %}{% for timetable in timetables %} + <section id="{{ timetable.slug }}"> + <h3><a href="{{ timetable.url }}">{{ timetable.name }}</a></h3> + <ul>{% for group in groups %}{% if group.timetable.id == timetable.id %} + <li><a class="text"{% if group.weeks is not None %} href="{% url "timetable" timetable.slug group.slug %}"{% endif %}>{{ group.name }}</a> – {% for week in group.weeks %}<a href="{% url "timetable" timetable.slug group.slug week.year week|dt_week %}">{{ week|dt_prettyprint }}</a> {% empty %}<em>aucun cours</em>{% endfor %}</li>{% endif %}{% endfor %} + </ul> + </section>{% endfor %}{% endblock %} @@ -15,16 +15,15 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. from django.conf.urls import url - -from . import views -from .feeds import IcalFeed +from . import feeds, views urlpatterns = [ url(r"^$", views.index, name="index"), + url(r"^(?P<year>[-\w]+)/$", views.mention_list, name="mentions"), url(r"^(?P<timetable_slug>[-\w]+)/(?P<group_slug>[-\w]+)/$", views.timetable, name="timetable"), url(r"^(?P<timetable_slug>[-\w]+)/(?P<group_slug>[-\w]+)/(?P<year>[0-9]{4})/(?P<week>[0-4]?[0-9]|5[0-3])/$", views.timetable, name="timetable"), url(r"^(?P<timetable_slug>[-\w]+)/(?P<group_slug>[-\w]+)/(?P<year>[0-9]{4})/(?P<week>[0-4]?[0-9]|5[0-3])/subscribe$", views.subscribe, name="subscribe"), - url(r"^(?P<timetable_slug>[-\w]+)/(?P<group_slug>[-\w]+)/calendar.ics$", IcalFeed(), name="ics"), + url(r"^(?P<timetable_slug>[-\w]+)/(?P<group_slug>[-\w]+)/calendar.ics$", feeds.IcalFeed(), name="ics"), url(r"^subscriptions/confirm/(?P<token>[0-9a-f]{40})$", views.confirm_subscription, name="confirm"), url(r"^subscriptions/cancel/(?P<token>[0-9a-f]{40})$", views.cancel_subscription, name="cancel"), ] @@ -18,12 +18,21 @@ from django.shortcuts import get_object_or_404, redirect, render from django.core.mail import send_mail from django.conf import settings from django.template import Context, loader +from django.db.models import Count from .forms import SubscribeForm from .models import Timetable, LastUpdate, Group, Subscription, Course from .utils import get_current_week, get_week, group_courses def index(request): + years = Timetable.objects.order_by("year").values("year").annotate(count=Count("year")) + return render(request, "index.html", {"years": years}) + +def mention_list(request, year): + timetables = Timetable.objects.order_by("name").filter(year=year) + return render(request, "mention_list.html", {"year": year, "timetables": timetables}) + +def timetables_list(request): timetables = Timetable.objects.order_by("name") groups = Group.objects.get_relevant_groups().order_by("name") @@ -44,7 +53,7 @@ def index(request): if hasattr(group, "weeks"): group.weeks.sort() - return render(request, "index.html", {"timetables": timetables, "groups": groups}) + return render(request, "timetables_list.html", {"timetables": timetables, "groups": groups}) def timetable(request, timetable_slug, group_slug, year=None, week=None): if year is None or week is None: |