khana/khana/competition/views.py

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)