diff --git a/colloscope/templates/dashboard.html b/colloscope/templates/dashboard.html new file mode 100644 index 0000000..1ad71dd --- /dev/null +++ b/colloscope/templates/dashboard.html @@ -0,0 +1,26 @@ +{% extends "base.html" %} + +{% block title %}Tableau de bord{% endblock title %} + +{% block main %} + +

Tableau de bord

+ +

+Bienvenue {{ etudiant }}. Votre lycée est {{ periode.classe.lycee.libelle }}, et votre classe est {{ periode.classe.libelle }}. +

+ +

Votre groupe de colle est {{ groupe }}.

+ + + +{% endblock main %} diff --git a/colloscope/templates/colloscope.html b/colloscope/templates/table.html similarity index 80% rename from colloscope/templates/colloscope.html rename to colloscope/templates/table.html index 5ff4976..87a3458 100644 --- a/colloscope/templates/colloscope.html +++ b/colloscope/templates/table.html @@ -80,26 +80,4 @@ - - -

Par groupes

- - {% for groupe, rot in rotations_par_groupes %} - -

Groupe {{ groupe }}

- - - - {% endfor %} - {% endblock main %} diff --git a/colloscope/urls.py b/colloscope/urls.py index 70df17a..72ec4e2 100644 --- a/colloscope/urls.py +++ b/colloscope/urls.py @@ -4,6 +4,7 @@ from . import views urlpatterns = [ path("", views.home_redirect, name="colloscope.home"), path("table.html", views.colloscope, name="colloscope.table"), + path("dashboard.html", views.dashboard, name="colloscope.dashboard"), path("export.pdf", views.export, name="colloscope.export"), path("choix_profil", views.choix_profil, name="colloscope.choix_profil"), ] diff --git a/colloscope/views.py b/colloscope/views.py index 05b0a29..58c5d02 100644 --- a/colloscope/views.py +++ b/colloscope/views.py @@ -51,6 +51,40 @@ def choix_profil(request): return HttpResponse(template.render(context)) +@login_required +def dashboard(request): + user = request.user + session = request.session + + match session.get("profil"): + case "etudiant": + profil = Profil.objects \ + .select_related("etudiant__classe") \ + .prefetch_related("etudiant__classe__periode_set") \ + .get(utilisateur=user) + etudiant = profil.etudiant + case "colleur": + return HttpResponse("pas (encore) supporté") + case _: + return redirect("/colloscope/choix_profil") + + periode = etudiant.classe.periode_set.order_by("-debut").first() + groupe = etudiant.groupe_de_colle(periode) + + rotations = groupe.get_colles_par_sem() + + template = loader.get_template("dashboard.html") + + context = { + "etudiant": etudiant, + "periode": periode, + "groupe": groupe, + "rotations" : rotations, + } + + return HttpResponse(template.render(context, request)) + + @login_required def colloscope(request): user = request.user @@ -68,23 +102,18 @@ def colloscope(request): case _: return redirect("/colloscope/choix_profil") - - """ - periode_str = request.GET.get("periode", "") - if periode_str=="": - periode = Periode.objects.get(id=3) + periode_str = request.GET.get("periode") + if periode_str is None: + periode = etudiant.classe.periode_set.order_by("-debut").first() else: try: - periode = Periode.objects.get(id=int(periode_str)) + periode = Periode.objects.get(id=int(periode_str), classe=etudiant.classe) except Periode.DoesNotExist: template = loader.get_template("404.html") context = {} response = HttpResponse(template.render(context, request)) response.status_code = 404 - return response - """ - periode = etudiant.classe.periode_set.order_by("-debut").first() creneaux = Creneau.objects \ .filter(periode=periode, est_colle=True) \ @@ -108,13 +137,7 @@ def colloscope(request): l.append((sem, exists, r, est_modifiee, groupes)) - - - - rotations_par_groupes = [ ( groupe, groupe.get_colles_par_sem() ) for groupe in Groupe.objects.filter(periode=periode, critere__libelle="colle") ] - - - template = loader.get_template("colloscope.html") + template = loader.get_template("table.html") context = { "periode": periode, @@ -122,7 +145,6 @@ def colloscope(request): "lundis": [periode.classe.date_debut_sem(n) for n in semaines], "jours" : ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"], "rotations" : rotations, - "rotations_par_groupes" : rotations_par_groupes, } return HttpResponse(template.render(context, request)) diff --git a/static/main.css b/static/main.css index f275b84..dba5bf7 100644 --- a/static/main.css +++ b/static/main.css @@ -37,7 +37,7 @@ header .bandeau button:active { } main { - margin: auto; + margin: 20px auto; width: clamp(350px, 60%, 1200px); background-color: white; padding: 10px;