Première passe de relecture de l'application `planning`
This commit is contained in:
parent
0419a5e731
commit
2d8cc1b764
|
@ -64,16 +64,25 @@ def event_lookup(request):
|
|||
@login_required
|
||||
@require_http_methods(["GET", "POST"])
|
||||
def event_create_or_update(request, eventid=None):
|
||||
"""
|
||||
Création ou mise à jour d'un event.
|
||||
"""Création ou mise à jour d'un évènement.
|
||||
|
||||
Remarks:
|
||||
* Il faut éviter de cibler une URL précise.
|
||||
|
||||
Pour cela, il faut passer par la fonction `reverse`:
|
||||
https://docs.djangoproject.com/fr/3.1/ref/urlresolvers/
|
||||
|
||||
Si jamais l'URL `/event` devait être modifiée, cela ne fonctionnerait plus.
|
||||
|
||||
* J'ai modifié l'ordre des conditions pour un peu plus de clarté.
|
||||
Notamment, tu faisais une première requête pour récupérer le nom du lieu
|
||||
Mais tu n'utilisais cette valeur que dans le cas d'un GET.
|
||||
|
||||
Dans ce cas-ci, une CBV serait intéressante, parce qu'elle découplerait
|
||||
complètement le GET du POST.
|
||||
"""
|
||||
|
||||
if eventid:
|
||||
event = get_object_or_404(Event, pk=eventid)
|
||||
data = {"place_related": event.place.name}
|
||||
else:
|
||||
event = None
|
||||
data = {}
|
||||
|
||||
|
||||
if request.method == "POST":
|
||||
form = EventForm(request.POST, instance=event)
|
||||
|
@ -85,6 +94,14 @@ def event_create_or_update(request, eventid=None):
|
|||
else:
|
||||
return HttpResponseRedirect("/event/")
|
||||
else:
|
||||
data = {}
|
||||
|
||||
if eventid:
|
||||
event = get_object_or_404(Event, pk=eventid)
|
||||
data["place_related"] = event.place.name
|
||||
else:
|
||||
event = None
|
||||
|
||||
form = EventForm(instance=event, initial=data)
|
||||
|
||||
context = {"form": form, "eventid": eventid}
|
||||
|
@ -93,8 +110,16 @@ def event_create_or_update(request, eventid=None):
|
|||
|
||||
@require_http_methods(["GET"])
|
||||
def link_gymnast_to_event(request, eventid, gymnastid):
|
||||
"""
|
||||
Crée un lien entre un gymnaste et un évènement.
|
||||
"""Crée un lien entre un gymnaste et un évènement.
|
||||
|
||||
Returns:
|
||||
Si tout se passe bien, un code 200 (Success) est retourné.
|
||||
|
||||
Excepts:
|
||||
Si une erreur se produit lors de l'association, un code HTTP 409 (Conflict) est retourné.
|
||||
|
||||
Remarks:
|
||||
Tu ne veux pas retourner le lien qui vient d'être créé ?
|
||||
"""
|
||||
try:
|
||||
gymnast = get_object_or_404(Gymnast, pk=gymnastid)
|
||||
|
@ -109,8 +134,14 @@ def link_gymnast_to_event(request, eventid, gymnastid):
|
|||
|
||||
@require_http_methods(["GET"])
|
||||
def remove_link_between_gymnast_and_event(request, eventid, gymnastid):
|
||||
"""
|
||||
Supprime le lien entre un gymnaste et un évènement.
|
||||
"""Supprime le lien entre un gymnaste et un évènement.
|
||||
|
||||
Remarks:
|
||||
En fait, tes fonctions `link_gymnast_to_event`
|
||||
et `remove_link_between_gymnast_and_event` sont _très_ similaires.
|
||||
|
||||
Il faudrait sans doute mieux passer par une CBV, voire mieux: DRF ;-)
|
||||
Surtout qu'ici, on gère directement des `link_between_g_and_e`, à ajouter ou supprimer.
|
||||
"""
|
||||
try:
|
||||
gymnast = get_object_or_404(Gymnast, pk=gymnastid)
|
||||
|
@ -124,20 +155,30 @@ def remove_link_between_gymnast_and_event(request, eventid, gymnastid):
|
|||
|
||||
|
||||
def __get_event_list(request):
|
||||
"""Récupère une liste d'évènement.
|
||||
|
||||
Par défaut, la liste est triée chronologiquement - le plus ancien étant le premier élément.
|
||||
|
||||
Cette fonction est utilisée pour l'affichage des évènements et au niveau du calendrier.
|
||||
|
||||
Args:
|
||||
request (HttpRequest): La requête en entrée
|
||||
pattern (str?): Optionnel. Permet de spécifier un pattern à appliquer à la recherche.
|
||||
"""
|
||||
pattern = request.GET.get("pattern", None)
|
||||
|
||||
if pattern:
|
||||
event_list = Event.objects.filter(name__icontains=pattern).order_by("datebegin")
|
||||
event_list = Event.objects.filter(name__icontains=pattern)
|
||||
else:
|
||||
event_list = Event.objects.all().order_by("datebegin")
|
||||
return event_list
|
||||
event_list = Event.objects.all()
|
||||
|
||||
return event_list.order_by("datebegin")
|
||||
|
||||
|
||||
@login_required
|
||||
@require_http_methods(["GET"])
|
||||
def calendar(request):
|
||||
"""
|
||||
Récupère la liste de tous évènements suivant un pattern si celui-ci est
|
||||
définit.
|
||||
"""Récupère la liste de tous évènements suivant un pattern si celui-ci est définit.
|
||||
"""
|
||||
event_list = __get_event_list(request)
|
||||
context = {"event_list": event_list}
|
||||
|
@ -216,7 +257,7 @@ def event_detail(request, eventid):
|
|||
@require_http_methods(["GET"])
|
||||
def course_detail(request, courseid, date=None):
|
||||
"""
|
||||
Récupère toutes les informations d'un course.
|
||||
Récupère toutes les informations d'un cours.
|
||||
|
||||
:return: une instance de la classe `Course`, une liste de gymnaste associés
|
||||
à ce cours, …
|
||||
|
@ -1238,8 +1279,10 @@ def program_date_listing(request, gymnastid=None):
|
|||
@login_required
|
||||
@require_http_methods(["GET", "POST"])
|
||||
def planningline_update(request, planninglineid=None):
|
||||
"""
|
||||
Mise à jour d'une ligne de programme.
|
||||
"""Mise à jour d'une ligne de programme.
|
||||
|
||||
Remarks:
|
||||
Pourquoi ne pas juste faire un `form.save()` plutôt que de réattribuer chaque valeur ?
|
||||
"""
|
||||
|
||||
planningline = get_object_or_404(PlanningLine, pk=planninglineid)
|
||||
|
|
Loading…
Reference in New Issue