71 lines
2.0 KiB
Python
71 lines
2.0 KiB
Python
# coding=UTF-8
|
|
|
|
from django.shortcuts import render, get_object_or_404
|
|
from django.contrib.auth.decorators import login_required
|
|
from django.http import HttpResponse, HttpResponseRedirect
|
|
from django.views.decorators.http import require_http_methods
|
|
from django.db.models import Q
|
|
|
|
from .forms import ScoreForm
|
|
from .models import Point
|
|
from people.models import Gymnast
|
|
|
|
|
|
@login_required
|
|
@require_http_methods(["GET", "POST"])
|
|
def score_create_or_update(request, scoreid=None, gymnastid=None):
|
|
"""
|
|
Formulaire de création d'un nouveau score.
|
|
"""
|
|
|
|
if scoreid:
|
|
score = get_object_or_404(Point, pk=scoreid)
|
|
data = {
|
|
"gymnast_related": str(score.gymnast),
|
|
"event_related": str(score.event),
|
|
}
|
|
else:
|
|
score = None
|
|
data = {}
|
|
if gymnastid is not None:
|
|
gymnast = get_object_or_404(Gymnast, pk=gymnastid)
|
|
data["gymnast"] = gymnastid
|
|
data["gymnast_related"] = str(gymnast)
|
|
|
|
if request.method == "POST":
|
|
form = ScoreForm(request.POST, instance=score)
|
|
|
|
if form.is_valid():
|
|
# print(form.cleaned_data)
|
|
form.save()
|
|
return HttpResponseRedirect(
|
|
"/gymnast/" + str(form.cleaned_data["gymnast"].id) + "/tab/scores/"
|
|
)
|
|
# return HttpResponseRedirect("/score/")
|
|
|
|
else:
|
|
form = ScoreForm(instance=score, initial=data)
|
|
|
|
context = {"form": form, "scoreid": scoreid}
|
|
return render(request, "score_create.html", context)
|
|
|
|
|
|
@login_required
|
|
@require_http_methods(["GET"])
|
|
def score_listing(request):
|
|
"""
|
|
Revoie la liste des scores
|
|
"""
|
|
|
|
pattern = request.GET.get("pattern", None)
|
|
|
|
if pattern:
|
|
score_list = Point.objects.filter(
|
|
Q(event__icontains=pattern) | Q(gymnast__icontains=pattern)
|
|
)
|
|
else:
|
|
score_list = Point.objects.all()
|
|
|
|
context = {"score_list": score_list}
|
|
return render(request, "score_list.html", context)
|