Correction des messages d'erreur et de la gestion des exceptions

This commit is contained in:
Hugo Roussille 2017-04-01 16:34:17 +02:00
parent 67b4421933
commit 6b8001db56

View file

@ -22,7 +22,7 @@ from django.core.urlresolvers import reverse
from django.conf import settings from django.conf import settings
from django.utils import timezone, formats from django.utils import timezone, formats
from django.views.generic.list import ListView from django.views.generic.list import ListView
from django.core.exceptions import ObjectDoesNotExist
from gestioncof.decorators import cof_required, buro_required from gestioncof.decorators import cof_required, buro_required
from bda.models import ( from bda.models import (
Spectacle, Participant, ChoixSpectacle, Attribution, Tirage, Spectacle, Participant, ChoixSpectacle, Attribution, Tirage,
@ -661,11 +661,17 @@ def catalogue(request, request_type):
return JsonResponse(data_return, safe=False) return JsonResponse(data_return, safe=False)
if request_type == "details": if request_type == "details":
# Dans ce cas on retourne une liste des catégories et des salles # Dans ce cas on retourne une liste des catégories et des salles
tirage_id = request.GET.get('id', '')
try: try:
tirage_id = request.GET.get('id', '') tirage = Tirage.objects.get(id=tirage_id)
tirage = get_object_or_404(Tirage, id=tirage_id) except ObjectDoesNotExist:
return HttpResponseBadRequest(
"Aucun tirage correspondant à l'id "
+ tirage_id)
except ValueError: except ValueError:
return HttpResponseBadRequest("Pas de tirage pour cet id") return HttpResponseBadRequest(
"Mauvais format d'identifiant : "
+ tirage_id)
categories = list( categories = list(
CategorieSpectacle.objects.filter( CategorieSpectacle.objects.filter(
spectacle__in=tirage.spectacle_set.all()) spectacle__in=tirage.spectacle_set.all())
@ -680,11 +686,13 @@ def catalogue(request, request_type):
# Ici on retourne les descriptions correspondant à la catégorie et # Ici on retourne les descriptions correspondant à la catégorie et
# à la salle spécifiées # à la salle spécifiées
tirage_id = request.GET.get('id', '')
categories = request.GET.get('category', '[0]')
locations = request.GET.get('location', '[0]')
try: try:
tirage_id = request.GET.get('id', '') category_id = json.loads(categories)
category_id = json.loads(request.GET.get('category', '[0]')) location_id = json.loads(locations)
location_id = json.loads(request.GET.get('location', '[0]')) tirage = Tirage.objects.get(id=tirage_id)
tirage = get_object_or_404(Tirage, id=tirage_id)
shows_qs = tirage.spectacle_set shows_qs = tirage.spectacle_set
if not(0 in category_id): if not(0 in category_id):
@ -693,10 +701,19 @@ def catalogue(request, request_type):
if not(0 in location_id): if not(0 in location_id):
shows_qs = shows_qs.filter( shows_qs = shows_qs.filter(
location__id__in=location_id) location__id__in=location_id)
except ValueError: except ObjectDoesNotExist:
return HttpResponseBadRequest( return HttpResponseBadRequest(
"Impossible de trouver des résultats correspondant " "Impossible de trouver des résultats correspondant "
"à ces caractéristiques") "à ces caractéristiques : "
+ "id = " + tirage_id
+ ", catégories = " + categories
+ ", salles = " + locations)
except ValueError: # Contient JSONDecodeError
return HttpResponseBadRequest(
"Impossible de parser les paramètres donnés : "
+ "id = " + request.GET.get('id', '')
+ ", catégories = " + request.GET.get('category', '[0]')
+ ", salles = " + request.GET.get('location', '[0]'))
# On convertit les descriptions à envoyer en une liste facilement # On convertit les descriptions à envoyer en une liste facilement
# JSONifiable (il devrait y avoir un moyen plus efficace en # JSONifiable (il devrait y avoir un moyen plus efficace en