Nettoyage des profils
This commit is contained in:
parent
eb84355d17
commit
acb5eff36b
|
@ -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
|
||||
|
||||
|
@ -411,22 +412,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):
|
||||
|
|
|
@ -11,7 +11,6 @@ urlpatterns = [
|
|||
path("export/calendar/<str:key>/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"),
|
||||
|
|
|
@ -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")
|
||||
|
||||
|
|
|
@ -50,7 +50,7 @@
|
|||
<div class="block">
|
||||
{% if request.user.is_authenticated %}
|
||||
<div class="link">
|
||||
<i class="fa-solid fa-user"></i> {{ user.username }} ({{ request.session.profile }})
|
||||
<i class="fa-solid fa-user"></i> {{ user.username }} ({{ request.user.profile }})
|
||||
</div>
|
||||
|
||||
<form action="{% url 'logout' %}" method="post">
|
||||
|
|
Loading…
Reference in New Issue