from django.shortcuts import render, get_object_or_404 from django.contrib.auth.decorators import login_required from django.views.decorators.http import require_http_methods from django.http import HttpResponse, HttpResponseRedirect from jumpers.models import Jumper from .models import Chrono from .forms import ChronoForm @login_required # @require_http_methods(["GET"]) def chrono_listing(request): """ Récupère la liste des chronos """ 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): """ Création ou modification d'un chrono. """ 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: return HttpResponseRedirect("/chrono/" + str(chronoid) + "/") 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} return render(request, "chronos/create.html", context)