2023-04-25 17:06:14 +02:00
|
|
|
"""Vues de gestion des profils utilisateurs."""
|
|
|
|
|
|
|
|
from django.contrib.auth.decorators import login_required
|
|
|
|
from django.contrib.auth import get_user_model
|
2023-04-27 15:05:53 +02:00
|
|
|
from django.contrib.contenttypes.models import ContentType
|
2023-04-25 17:06:14 +02:00
|
|
|
from django.http import HttpResponseRedirect, HttpResponse
|
|
|
|
from django.shortcuts import render, get_object_or_404
|
|
|
|
from django.views.decorators.http import require_http_methods
|
|
|
|
from django.urls import reverse
|
|
|
|
|
|
|
|
from .forms import ProfileForm
|
2023-04-27 15:05:53 +02:00
|
|
|
from .models import Profile, Notification
|
2023-04-25 17:06:14 +02:00
|
|
|
from jarvis.people.models import Gymnast
|
|
|
|
|
|
|
|
|
|
|
|
User = get_user_model()
|
|
|
|
|
|
|
|
|
|
|
|
@login_required
|
|
|
|
@require_http_methods(["GET", "POST"])
|
|
|
|
def profile_update(request):
|
|
|
|
"""Modification du profil de l'utilisateur connecté"""
|
|
|
|
|
|
|
|
try:
|
|
|
|
profile = request.user.profile
|
|
|
|
except Exception: # don't do this !
|
|
|
|
profile = Profile.objects.create(user=request.user)
|
|
|
|
|
|
|
|
if request.method == "POST":
|
|
|
|
form = ProfileForm(request.POST, instance=profile)
|
|
|
|
|
|
|
|
if form.is_valid():
|
|
|
|
form.save()
|
|
|
|
request.session["template"] = profile.template_color
|
|
|
|
request.session["sidebar"] = profile.sidebar_color
|
|
|
|
request.session["is_sidebar_minified"] = profile.is_sidebar_minified
|
|
|
|
return HttpResponseRedirect(reverse("home"))
|
|
|
|
|
|
|
|
else:
|
|
|
|
form = ProfileForm(instance=profile)
|
|
|
|
|
|
|
|
context = {
|
|
|
|
"form": form,
|
|
|
|
}
|
|
|
|
return render(request, "update.html", context)
|
|
|
|
|
|
|
|
|
2023-04-27 15:05:53 +02:00
|
|
|
@login_required
|
|
|
|
@require_http_methods(["GET", "POST"])
|
|
|
|
def notification_update(request):
|
|
|
|
gymnast_list = Gymnast.objects.filter(is_active=True)
|
|
|
|
functionality_list = ContentType.objects.filter(app_label="followup")
|
|
|
|
|
2023-04-27 15:26:04 +02:00
|
|
|
notification_dict = {}
|
|
|
|
for gymnast in gymnast_list:
|
2023-04-28 12:20:55 +02:00
|
|
|
query = gymnast.notifications.filter(user=request.user).values_list(
|
|
|
|
"functionality", flat=True
|
|
|
|
)
|
2023-04-27 15:26:04 +02:00
|
|
|
if query:
|
|
|
|
notification_dict[gymnast.id] = query
|
|
|
|
|
2023-04-27 15:05:53 +02:00
|
|
|
context = {
|
|
|
|
"gymnast_list": gymnast_list,
|
|
|
|
"functionality_list": functionality_list,
|
2023-04-27 15:26:04 +02:00
|
|
|
"notification_dict": notification_dict,
|
2023-04-27 15:05:53 +02:00
|
|
|
}
|
|
|
|
return render(request, "notification_update.html", context)
|
|
|
|
|
|
|
|
|
|
|
|
@require_http_methods(["POST"])
|
|
|
|
def notification_add(request):
|
|
|
|
"""
|
|
|
|
Ajoute une demande de notification
|
|
|
|
"""
|
|
|
|
gymnast_id = request.POST.get("gymnast_id", None)
|
|
|
|
functionality_id = request.POST.get("functionality_id", None)
|
|
|
|
|
|
|
|
gymnast = get_object_or_404(Gymnast, pk=gymnast_id)
|
|
|
|
functionality = get_object_or_404(ContentType, pk=functionality_id)
|
|
|
|
row, created = Notification.objects.get_or_create(
|
|
|
|
user=request.user, gymnast=gymnast, functionality=functionality
|
|
|
|
)
|
|
|
|
|
|
|
|
if created:
|
|
|
|
return HttpResponse(200, (row, created)) # devrait être un 201
|
|
|
|
else:
|
|
|
|
return HttpResponse(400, (row, created))
|
|
|
|
|
|
|
|
|
|
|
|
@require_http_methods(["POST"])
|
|
|
|
def notification_remove(request):
|
|
|
|
"""
|
|
|
|
Supprime une demande de notification
|
|
|
|
"""
|
|
|
|
gymnast_id = request.POST.get("gymnast_id", None)
|
2023-04-28 12:20:55 +02:00
|
|
|
functionnality_id = request.POST.get("functionality_id", None)
|
2023-04-27 15:05:53 +02:00
|
|
|
|
|
|
|
try:
|
|
|
|
Notification.objects.get(
|
|
|
|
user=request.user, gymnast=gymnast_id, functionality=functionnality_id
|
|
|
|
).delete()
|
|
|
|
except Exception:
|
|
|
|
return HttpResponse(409)
|
|
|
|
|
|
|
|
return HttpResponse(200)
|