First commit (without notification class)

This commit is contained in:
Gregory Trullemans 2023-04-27 11:23:05 +02:00
parent a1ae3e9134
commit 6460ac5afc
6 changed files with 76 additions and 136 deletions

View File

@ -1,5 +1,5 @@
from django.contrib import admin
from .models import Profile, Notification
from .models import Profile
from django_admin_listfilter_dropdown.filters import (
ChoiceDropdownFilter,
RelatedDropdownFilter,
@ -12,16 +12,16 @@ class ProfileAdmin(admin.ModelAdmin):
autocomplete_fields = ("user",)
class NotificationAdmin(admin.ModelAdmin):
model = Notification
list_display = ("user", "gymnast", "functionality")
autocomplete_fields = ("user", "gymnast")
list_filter = (
("user", RelatedDropdownFilter),
("gymnast", RelatedDropdownFilter),
("functionality", ChoiceDropdownFilter),
)
# class NotificationAdmin(admin.ModelAdmin):
# model = Notification
# list_display = ("user", "gymnast", "functionality")
# autocomplete_fields = ("user", "gymnast")
# list_filter = (
# ("user", RelatedDropdownFilter),
# ("gymnast", RelatedDropdownFilter),
# ("functionality", ChoiceDropdownFilter),
# )
admin.site.register(Profile, ProfileAdmin)
admin.site.register(Notification, NotificationAdmin)
# admin.site.register(Notification, NotificationAdmin)

View File

@ -1,68 +0,0 @@
# Generated by Django 4.2 on 2023-04-23 06:42
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
("people", "0008_alter_gymnast_orientation"),
("profiles", "0001_initial"),
]
operations = [
migrations.CreateModel(
name="Notification",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"functionality",
models.PositiveSmallIntegerField(
choices=[
(0, "Chrono"),
(1, "Accident"),
(2, "LearnedSkill"),
(3, "Plan"),
(4, "Point"),
(5, "MindState"),
(6, "GymnastHasRoutine"),
(7, "NumberOfRoutineDone"),
(8, "HeightWeight"),
(9, "Note"),
(10, "Intensity"),
(11, "SeasonInformation"),
]
),
),
(
"gymnast",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="notifications",
to="people.gymnast",
),
),
(
"user",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
to=settings.AUTH_USER_MODEL,
),
),
],
options={
"unique_together": {("user", "gymnast", "functionality")},
},
),
]

View File

@ -58,17 +58,17 @@ class Profile(models.Model):
return "%s %s" % (self.user.first_name, self.user.last_name)
class Notification(models.Model):
"""Classe permettant de définir quelles notification un utilisateur veut recevoir."""
# class Notification(models.Model):
# """Classe permettant de définir quelles notification un utilisateur veut recevoir."""
class Meta:
unique_together = ("user", "gymnast", "functionality")
# class Meta:
# unique_together = ("user", "gymnast", "functionality")
user = models.ForeignKey(User, on_delete=models.CASCADE)
gymnast = models.ForeignKey(
Gymnast, on_delete=models.CASCADE, related_name="notifications"
)
functionality = models.PositiveSmallIntegerField(choices=FUNCTIONALITY_CHOICES)
# user = models.ForeignKey(User, on_delete=models.CASCADE)
# gymnast = models.ForeignKey(
# Gymnast, on_delete=models.CASCADE, related_name="notifications"
# )
# functionality = models.PositiveSmallIntegerField(choices=FUNCTIONALITY_CHOICES)
def __str__(self):
return f"{self.user} will be notified for add/update {self.functionality} to {self.gymnast}"
# def __str__(self):
# return f"{self.user} will be notified for add/update {self.functionality} to {self.gymnast}"

View File

@ -7,11 +7,11 @@ from . import views
profile_urlpatterns = [
path(r"edit/", views.profile_update, name="profile_update"),
path(
r"notification_update/", views.notification_update, name="notification_update"
),
path(r"notification_add/", views.notification_add, name="notification_add"),
path(
r"notification_remove/", views.notification_remove, name="notification_remove"
),
# path(
# r"notification_update/", views.notification_update, name="notification_update"
# ),
# path(r"notification_add/", views.notification_add, name="notification_add"),
# path(
# r"notification_remove/", views.notification_remove, name="notification_remove"
# ),
]

View File

@ -8,7 +8,7 @@ from django.views.decorators.http import require_http_methods
from django.urls import reverse
from .forms import ProfileForm
from .models import Profile, Notification, FUNCTIONALITY_CHOICES
from .models import Profile # , Notification, FUNCTIONALITY_CHOICES
from jarvis.people.models import Gymnast
@ -44,50 +44,50 @@ def profile_update(request):
return render(request, "update.html", context)
@login_required
@require_http_methods(["GET", "POST"])
def notification_update(request):
gymnast_list = Gymnast.objects.filter(is_active=True)
# @login_required
# @require_http_methods(["GET", "POST"])
# def notification_update(request):
# gymnast_list = Gymnast.objects.filter(is_active=True)
context = {
"gymnast_list": gymnast_list,
"functionality_list": FUNCTIONALITY_CHOICES,
}
return render(request, "notification_update.html", context)
# context = {
# "gymnast_list": gymnast_list,
# "functionality_list": FUNCTIONALITY_CHOICES,
# }
# 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)
notification_id = request.POST.get("notification_id", None)
# @require_http_methods(["POST"])
# def notification_add(request):
# """
# Ajoute une demande de notification
# """
# gymnast_id = request.POST.get("gymnast_id", None)
# notification_id = request.POST.get("notification_id", None)
gymnast = get_object_or_404(Gymnast, pk=gymnast_id)
row, created = Notification.objects.get_or_create(
user=request.user, gymnast=gymnast, functionality=notification_id
)
# gymnast = get_object_or_404(Gymnast, pk=gymnast_id)
# row, created = Notification.objects.get_or_create(
# user=request.user, gymnast=gymnast, functionality=notification_id
# )
if created:
return HttpResponse(200, (row, created)) # devrait être un 201
else:
return HttpResponse(400, (row, created))
# 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)
notification_id = request.POST.get("notification_id", None)
# @require_http_methods(["POST"])
# def notification_remove(request):
# """
# Supprime une demande de notification
# """
# gymnast_id = request.POST.get("gymnast_id", None)
# notification_id = request.POST.get("notification_id", None)
try:
Notification.objects.get(
user=request.user, gymnast=gymnast_id, functionality=notification_id
).delete()
except Exception:
return HttpResponse(409)
# try:
# Notification.objects.get(
# user=request.user, gymnast=gymnast_id, functionality=notification_id
# ).delete()
# except Exception:
# return HttpResponse(409)
return HttpResponse(200)
# return HttpResponse(200)

View File

@ -0,0 +1,8 @@
from django import template
register = template.Library()
@register.filter
def get_item(dictionary, key):
return dictionary.get(key)