2021-11-04 13:49:07 +01:00
|
|
|
from django.shortcuts import render, get_object_or_404
|
2021-11-03 06:19:59 +01:00
|
|
|
from django.contrib.auth.decorators import login_required
|
2021-11-04 13:49:07 +01:00
|
|
|
from django.views.decorators.http import require_http_methods
|
|
|
|
from django.http import HttpResponse, HttpResponseRedirect
|
2021-11-11 15:21:48 +01:00
|
|
|
from django.db.models import Q
|
2021-11-02 14:05:32 +01:00
|
|
|
|
2021-11-04 13:49:07 +01:00
|
|
|
from jumpers.models import Jumper
|
2021-11-11 15:21:48 +01:00
|
|
|
from .models import Chrono, Skill
|
2021-11-04 13:49:07 +01:00
|
|
|
from .forms import ChronoForm
|
|
|
|
|
|
|
|
@login_required
|
2021-11-11 15:21:48 +01:00
|
|
|
@require_http_methods(["GET"])
|
2021-11-04 13:49:07 +01:00
|
|
|
def chrono_listing(request):
|
|
|
|
""" Récupère la liste des chronos """
|
2021-11-11 15:21:48 +01:00
|
|
|
|
2021-11-04 13:49:07 +01:00
|
|
|
chrono_list = Chrono.objects.all()
|
|
|
|
context = {'chrono_list': chrono_list}
|
|
|
|
return render(request, "chronos/list.html", context)
|
|
|
|
|
|
|
|
|
|
|
|
@login_required
|
|
|
|
@require_http_methods(["GET", "POST"])
|
|
|
|
def chrono_create_or_update(request, chronoid=None, jumperid=None):
|
2021-11-11 19:45:39 +01:00
|
|
|
""" Création ou modification d'un chrono """
|
2021-11-04 13:49:07 +01:00
|
|
|
|
|
|
|
if chronoid:
|
|
|
|
chrono = get_object_or_404(Chrono, pk=chronoid)
|
|
|
|
data = {
|
|
|
|
"jumper": chrono.jumper.id,
|
|
|
|
"jumper_related": str(chrono.jumper),
|
|
|
|
}
|
|
|
|
else:
|
|
|
|
chrono = None
|
|
|
|
data = None
|
|
|
|
|
|
|
|
if request.method == "POST":
|
|
|
|
form = ChronoForm(request.POST, instance=chrono)
|
|
|
|
|
|
|
|
if form.is_valid():
|
|
|
|
form.save()
|
|
|
|
if chronoid is not None:
|
2021-11-11 19:45:39 +01:00
|
|
|
return HttpResponseRedirect("/chrono/")
|
2021-11-04 13:49:07 +01:00
|
|
|
elif jumperid is not None:
|
|
|
|
return HttpResponseRedirect(
|
|
|
|
"/jumper/" + str(jumperid)
|
|
|
|
)
|
|
|
|
else:
|
|
|
|
return HttpResponseRedirect("/chrono/")
|
|
|
|
|
|
|
|
else:
|
|
|
|
if data is None and jumperid is not None:
|
|
|
|
jumper = get_object_or_404(Jumper, pk=jumperid)
|
|
|
|
data = {"jumper": jumperid, "jumper_related": jumper}
|
|
|
|
|
|
|
|
form = ChronoForm(instance=chrono, initial=data)
|
|
|
|
|
|
|
|
context = {"form": form, "chronoid": chronoid}
|
2021-11-11 15:21:48 +01:00
|
|
|
return render(request, "chronos/create.html", context)
|
|
|
|
|
|
|
|
|
|
|
|
@login_required
|
|
|
|
@require_http_methods(["GET"])
|
|
|
|
def skill_listing(request, field=None, expression=None, value=None, level=None):
|
|
|
|
"""
|
|
|
|
Récupère la liste des skills suivant un pattern si celui-ci est définit.
|
|
|
|
"""
|
|
|
|
|
|
|
|
pattern = None
|
|
|
|
|
|
|
|
if not field or not value or not expression:
|
|
|
|
pattern = request.GET.get("pattern", None)
|
|
|
|
|
|
|
|
if pattern:
|
|
|
|
skill_list = Skill.objects.filter(
|
|
|
|
Q(longLabel__icontains=pattern) | Q(shortLabel__icontains=pattern)
|
|
|
|
)
|
|
|
|
elif field and expression and value:
|
|
|
|
kwargs = {"{0}__{1}".format(field, expression): value}
|
|
|
|
# print(kwargs)
|
|
|
|
# skill_list = Skill.objects.filter(level__lte=4)
|
|
|
|
skill_list = Skill.objects.filter(**kwargs)
|
|
|
|
elif level is not None:
|
|
|
|
skill_list = Skill.objects.filter
|
|
|
|
else:
|
|
|
|
skill_list = Skill.objects.all()
|
|
|
|
|
|
|
|
context = {'skill_list': skill_list}
|
|
|
|
return render(request, 'skills/list.html', context)
|
|
|
|
|
|
|
|
|
|
|
|
@login_required
|
|
|
|
@require_http_methods(["GET"])
|
|
|
|
def skill_details(request, skillid):
|
|
|
|
"""
|
|
|
|
Récupère toutes les informations d'un skill.
|
|
|
|
|
|
|
|
:param skillig: id d'un `skill`
|
|
|
|
:type skillid: int
|
|
|
|
|
|
|
|
:return: skill
|
|
|
|
"""
|
|
|
|
context = {"skill": get_object_or_404(Skill, pk=skillid)}
|
|
|
|
return render(request, "skills/details.html", context)
|