First commit (without notification class)
This commit is contained in:
parent
a1ae3e9134
commit
6460ac5afc
|
@ -1,5 +1,5 @@
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from .models import Profile, Notification
|
from .models import Profile
|
||||||
from django_admin_listfilter_dropdown.filters import (
|
from django_admin_listfilter_dropdown.filters import (
|
||||||
ChoiceDropdownFilter,
|
ChoiceDropdownFilter,
|
||||||
RelatedDropdownFilter,
|
RelatedDropdownFilter,
|
||||||
|
@ -12,16 +12,16 @@ class ProfileAdmin(admin.ModelAdmin):
|
||||||
autocomplete_fields = ("user",)
|
autocomplete_fields = ("user",)
|
||||||
|
|
||||||
|
|
||||||
class NotificationAdmin(admin.ModelAdmin):
|
# class NotificationAdmin(admin.ModelAdmin):
|
||||||
model = Notification
|
# model = Notification
|
||||||
list_display = ("user", "gymnast", "functionality")
|
# list_display = ("user", "gymnast", "functionality")
|
||||||
autocomplete_fields = ("user", "gymnast")
|
# autocomplete_fields = ("user", "gymnast")
|
||||||
list_filter = (
|
# list_filter = (
|
||||||
("user", RelatedDropdownFilter),
|
# ("user", RelatedDropdownFilter),
|
||||||
("gymnast", RelatedDropdownFilter),
|
# ("gymnast", RelatedDropdownFilter),
|
||||||
("functionality", ChoiceDropdownFilter),
|
# ("functionality", ChoiceDropdownFilter),
|
||||||
)
|
# )
|
||||||
|
|
||||||
|
|
||||||
admin.site.register(Profile, ProfileAdmin)
|
admin.site.register(Profile, ProfileAdmin)
|
||||||
admin.site.register(Notification, NotificationAdmin)
|
# admin.site.register(Notification, NotificationAdmin)
|
||||||
|
|
|
@ -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")},
|
|
||||||
},
|
|
||||||
),
|
|
||||||
]
|
|
|
@ -58,17 +58,17 @@ class Profile(models.Model):
|
||||||
return "%s %s" % (self.user.first_name, self.user.last_name)
|
return "%s %s" % (self.user.first_name, self.user.last_name)
|
||||||
|
|
||||||
|
|
||||||
class Notification(models.Model):
|
# class Notification(models.Model):
|
||||||
"""Classe permettant de définir quelles notification un utilisateur veut recevoir."""
|
# """Classe permettant de définir quelles notification un utilisateur veut recevoir."""
|
||||||
|
|
||||||
class Meta:
|
# class Meta:
|
||||||
unique_together = ("user", "gymnast", "functionality")
|
# unique_together = ("user", "gymnast", "functionality")
|
||||||
|
|
||||||
user = models.ForeignKey(User, on_delete=models.CASCADE)
|
# user = models.ForeignKey(User, on_delete=models.CASCADE)
|
||||||
gymnast = models.ForeignKey(
|
# gymnast = models.ForeignKey(
|
||||||
Gymnast, on_delete=models.CASCADE, related_name="notifications"
|
# Gymnast, on_delete=models.CASCADE, related_name="notifications"
|
||||||
)
|
# )
|
||||||
functionality = models.PositiveSmallIntegerField(choices=FUNCTIONALITY_CHOICES)
|
# functionality = models.PositiveSmallIntegerField(choices=FUNCTIONALITY_CHOICES)
|
||||||
|
|
||||||
def __str__(self):
|
# def __str__(self):
|
||||||
return f"{self.user} will be notified for add/update {self.functionality} to {self.gymnast}"
|
# return f"{self.user} will be notified for add/update {self.functionality} to {self.gymnast}"
|
||||||
|
|
|
@ -7,11 +7,11 @@ from . import views
|
||||||
|
|
||||||
profile_urlpatterns = [
|
profile_urlpatterns = [
|
||||||
path(r"edit/", views.profile_update, name="profile_update"),
|
path(r"edit/", views.profile_update, name="profile_update"),
|
||||||
path(
|
# path(
|
||||||
r"notification_update/", views.notification_update, name="notification_update"
|
# r"notification_update/", views.notification_update, name="notification_update"
|
||||||
),
|
# ),
|
||||||
path(r"notification_add/", views.notification_add, name="notification_add"),
|
# path(r"notification_add/", views.notification_add, name="notification_add"),
|
||||||
path(
|
# path(
|
||||||
r"notification_remove/", views.notification_remove, name="notification_remove"
|
# r"notification_remove/", views.notification_remove, name="notification_remove"
|
||||||
),
|
# ),
|
||||||
]
|
]
|
||||||
|
|
|
@ -8,7 +8,7 @@ from django.views.decorators.http import require_http_methods
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
|
|
||||||
from .forms import ProfileForm
|
from .forms import ProfileForm
|
||||||
from .models import Profile, Notification, FUNCTIONALITY_CHOICES
|
from .models import Profile # , Notification, FUNCTIONALITY_CHOICES
|
||||||
from jarvis.people.models import Gymnast
|
from jarvis.people.models import Gymnast
|
||||||
|
|
||||||
|
|
||||||
|
@ -44,50 +44,50 @@ def profile_update(request):
|
||||||
return render(request, "update.html", context)
|
return render(request, "update.html", context)
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
# @login_required
|
||||||
@require_http_methods(["GET", "POST"])
|
# @require_http_methods(["GET", "POST"])
|
||||||
def notification_update(request):
|
# def notification_update(request):
|
||||||
gymnast_list = Gymnast.objects.filter(is_active=True)
|
# gymnast_list = Gymnast.objects.filter(is_active=True)
|
||||||
|
|
||||||
context = {
|
# context = {
|
||||||
"gymnast_list": gymnast_list,
|
# "gymnast_list": gymnast_list,
|
||||||
"functionality_list": FUNCTIONALITY_CHOICES,
|
# "functionality_list": FUNCTIONALITY_CHOICES,
|
||||||
}
|
# }
|
||||||
return render(request, "notification_update.html", context)
|
# return render(request, "notification_update.html", context)
|
||||||
|
|
||||||
|
|
||||||
@require_http_methods(["POST"])
|
# @require_http_methods(["POST"])
|
||||||
def notification_add(request):
|
# def notification_add(request):
|
||||||
"""
|
# """
|
||||||
Ajoute une demande de notification
|
# Ajoute une demande de notification
|
||||||
"""
|
# """
|
||||||
gymnast_id = request.POST.get("gymnast_id", None)
|
# gymnast_id = request.POST.get("gymnast_id", None)
|
||||||
notification_id = request.POST.get("notification_id", None)
|
# notification_id = request.POST.get("notification_id", None)
|
||||||
|
|
||||||
gymnast = get_object_or_404(Gymnast, pk=gymnast_id)
|
# gymnast = get_object_or_404(Gymnast, pk=gymnast_id)
|
||||||
row, created = Notification.objects.get_or_create(
|
# row, created = Notification.objects.get_or_create(
|
||||||
user=request.user, gymnast=gymnast, functionality=notification_id
|
# user=request.user, gymnast=gymnast, functionality=notification_id
|
||||||
)
|
# )
|
||||||
|
|
||||||
if created:
|
# if created:
|
||||||
return HttpResponse(200, (row, created)) # devrait être un 201
|
# return HttpResponse(200, (row, created)) # devrait être un 201
|
||||||
else:
|
# else:
|
||||||
return HttpResponse(400, (row, created))
|
# return HttpResponse(400, (row, created))
|
||||||
|
|
||||||
|
|
||||||
@require_http_methods(["POST"])
|
# @require_http_methods(["POST"])
|
||||||
def notification_remove(request):
|
# def notification_remove(request):
|
||||||
"""
|
# """
|
||||||
Supprime une demande de notification
|
# Supprime une demande de notification
|
||||||
"""
|
# """
|
||||||
gymnast_id = request.POST.get("gymnast_id", None)
|
# gymnast_id = request.POST.get("gymnast_id", None)
|
||||||
notification_id = request.POST.get("notification_id", None)
|
# notification_id = request.POST.get("notification_id", None)
|
||||||
|
|
||||||
try:
|
# try:
|
||||||
Notification.objects.get(
|
# Notification.objects.get(
|
||||||
user=request.user, gymnast=gymnast_id, functionality=notification_id
|
# user=request.user, gymnast=gymnast_id, functionality=notification_id
|
||||||
).delete()
|
# ).delete()
|
||||||
except Exception:
|
# except Exception:
|
||||||
return HttpResponse(409)
|
# return HttpResponse(409)
|
||||||
|
|
||||||
return HttpResponse(200)
|
# return HttpResponse(200)
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
from django import template
|
||||||
|
|
||||||
|
register = template.Library()
|
||||||
|
|
||||||
|
|
||||||
|
@register.filter
|
||||||
|
def get_item(dictionary, key):
|
||||||
|
return dictionary.get(key)
|
Loading…
Reference in New Issue