diff --git a/colloscope/models.py b/colloscope/models.py index f33c208..8485661 100644 --- a/colloscope/models.py +++ b/colloscope/models.py @@ -9,6 +9,7 @@ from django.db import models from django.db.models import F, Q, Count, QuerySet, Subquery, OuterRef, Sum from django.contrib.auth.models import User from django.conf import settings +from django.utils.translation import gettext_lazy as _ from discord import Webhook @@ -413,22 +414,7 @@ class Profile(models.Model): colleur = models.ForeignKey(Colleur, null=True, blank=True, on_delete=models.SET_NULL) def __str__(self): - return f"Profil {self.user} : {self.student} ; {self.colleur}" - - @staticmethod - def from_request(request, preprocess=lambda query: query): - user = request.user - session = request.session - - match session.get("profile"): - case "student": - profil = preprocess(Profile.objects.filter(user=user)).get() - return profil.student - case "colleur": - profil = preprocess(Profile.objects.filter(user=user)).get() - return profil.colleur - case _: - raise ValueError("profil non choisi") + return "Student" if self.student is not None else "Colleur" class CalendarLink(models.Model): diff --git a/colloscope/urls.py b/colloscope/urls.py index 4a55d0a..3063c93 100644 --- a/colloscope/urls.py +++ b/colloscope/urls.py @@ -11,7 +11,6 @@ urlpatterns = [ path("export/calendar//calendar.ics", views.icalendar, name="export-ics"), path("calendrier.ics", lambda req: redirect("colloscope:export-ics", key=req.GET.get("key")), name="export-ics-old"), - path("select_profile", views.select_profile, name="select_profile"), path("marketplace", views.marketplace, name="marketplace"), path("action/enroll", views.enroll, name="enroll"), path("action/withdraw", views.withdraw, name="withdraw"), diff --git a/colloscope/views.py b/colloscope/views.py index aec644e..d4ef940 100644 --- a/colloscope/views.py +++ b/colloscope/views.py @@ -20,41 +20,12 @@ def handler404(request): return render(request, '404.html', context, status=404) -@login_required -def select_profile(request): - user = request.user - session = request.session - - if not Profile.objects.filter(user=user).exists(): - profile = Profile(user=user) - profile.save() - else: - profile = Profile.objects.get(user=user) - - if profile.student is not None and profile.colleur is None: - session["profile"] = "student" - return redirect("colloscope:home") - elif profile.colleur is not None and profile.student is None: - session["profile"] = "colleur" - return redirect("colloscope:home") - else: - if profile.student is not None: - template = loader.get_template("select_profile.html") - else: - template = loader.get_template("unbound_profile.html") - - context = { - "profile": profile, - } - return HttpResponse(template.render(context)) - - class ColleListView(LoginRequiredMixin, ListView): model = Colle context_object_name = "colles" def get_queryset(self): - student = Profile.from_request(self.request) + student = self.request.user.profile.student base_query = (student.cls .current_term() .query_colles() @@ -71,12 +42,11 @@ class ColleListView(LoginRequiredMixin, ListView): @login_required def dashboard(request): try: - student = Profile.from_request( - request, - preprocess=lambda query: (query - .select_related("student__cls") - .prefetch_related("student__cls__term_set")) - ) + student = (Student.objects + .select_related("cls") + .prefetch_related("cls__term_set") + .get(profile__user=request.user)) + except ValueError: return redirect("colloscope:select_profile") @@ -123,12 +93,10 @@ class WithdrawForm(AmendForm): @login_required def marketplace(request): try: - student = Profile.from_request( - request, - preprocess=lambda query: (query - .select_related("student__cls") - .prefetch_related("student__cls__term_set")) - ) + student = (Student.objects + .select_related("cls") + .prefetch_related("cls__term_set") + .get(profile__user=request.user)) except ValueError: return redirect("colloscope:select_profile") @@ -148,12 +116,10 @@ def marketplace(request): @login_required def colloscope(request): try: - student = Profile.from_request( - request, - preprocess=lambda query: (query - .select_related("student__cls") - .prefetch_related("student__cls__term_set")) - ) + student = (Student.objects + .select_related("cls") + .prefetch_related("cls__term_set") + .get(profile__user=request.user)) except ValueError: return redirect("colloscope:select_profile") @@ -243,12 +209,10 @@ def icalendar(request, key): def amend(request, colle_id, do_enroll): try: - student = Profile.from_request( - request, - preprocess=lambda query: (query - .select_related("student__cls") - .prefetch_related("student__cls__term_set")) - ) + student = (Student.objects + .select_related("cls") + .prefetch_related("cls__term_set") + .get(profile__user=request.user)) except ValueError: return redirect("colloscope.choix_profil") diff --git a/templates/base.html b/templates/base.html index 103d1e0..95bdf6a 100644 --- a/templates/base.html +++ b/templates/base.html @@ -50,7 +50,7 @@
{% if request.user.is_authenticated %}