forked from DGNum/gestioCOF
Formatage du code selon PEP-8
This commit is contained in:
parent
a8428f1b41
commit
c4a3c1a92a
1 changed files with 58 additions and 19 deletions
77
bda/views.py
77
bda/views.py
|
@ -5,11 +5,10 @@ import hashlib
|
||||||
import time
|
import time
|
||||||
import json
|
import json
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
from more_itertools import unique_everseen
|
|
||||||
from custommail.shortcuts import (
|
from custommail.shortcuts import (
|
||||||
send_mass_custom_mail, send_custom_mail, render_custom_mail
|
send_mass_custom_mail, send_custom_mail, render_custom_mail
|
||||||
)
|
)
|
||||||
|
from more_itertools import unique_everseen
|
||||||
from django.shortcuts import render, get_object_or_404
|
from django.shortcuts import render, get_object_or_404
|
||||||
from django.contrib.auth.decorators import login_required
|
from django.contrib.auth.decorators import login_required
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
|
@ -17,7 +16,8 @@ from django.db import models, transaction
|
||||||
from django.core import serializers
|
from django.core import serializers
|
||||||
from django.db.models import Count, Q, Sum
|
from django.db.models import Count, Q, Sum
|
||||||
from django.forms.models import inlineformset_factory
|
from django.forms.models import inlineformset_factory
|
||||||
from django.http import HttpResponseBadRequest, HttpResponseRedirect, HttpResponse
|
from django.http import HttpResponseBadRequest, HttpResponseRedirect,\
|
||||||
|
HttpResponse
|
||||||
from django.core.urlresolvers import reverse
|
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
|
||||||
|
@ -642,7 +642,8 @@ def descriptions_spectacles(request, tirage_id):
|
||||||
"La variable GET 'location' doit contenir un entier")
|
"La variable GET 'location' doit contenir un entier")
|
||||||
return render(request, 'descriptions.html', {'shows': shows_qs.all()})
|
return render(request, 'descriptions.html', {'shows': shows_qs.all()})
|
||||||
|
|
||||||
def catalogue(request,request_type):
|
|
||||||
|
def catalogue(request, request_type):
|
||||||
"""
|
"""
|
||||||
Vue destinée à communiquer avec un client AJAX, fournissant soit :
|
Vue destinée à communiquer avec un client AJAX, fournissant soit :
|
||||||
- la liste des tirages
|
- la liste des tirages
|
||||||
|
@ -650,23 +651,33 @@ def catalogue(request,request_type):
|
||||||
- les descriptions d'un tirage (filtrées selon la catégorie et la salle)
|
- les descriptions d'un tirage (filtrées selon la catégorie et la salle)
|
||||||
"""
|
"""
|
||||||
if request_type == "list":
|
if request_type == "list":
|
||||||
# Dans ce cas on retourne la liste des tirages et de leur id sous forme de JSON
|
# Dans ce cas on retourne la liste des tirages et de leur id en JSON
|
||||||
data_return = [{'id':tirage.id, 'title':tirage.title} for tirage in Tirage.objects.filter(appear_catalogue = True).all()]
|
data_return = [
|
||||||
|
{'id': tirage.id, 'title': tirage.title}
|
||||||
|
for tirage in Tirage.objects.filter(appear_catalogue=True).all()
|
||||||
|
]
|
||||||
return HttpResponse(json.dumps(data_return))
|
return HttpResponse(json.dumps(data_return))
|
||||||
if request_type == "details":
|
if request_type == "details":
|
||||||
# Dans ce cas on retourne une liste des catégories et des salles du tirage
|
# Dans ce cas on retourne une liste des catégories et des salles
|
||||||
try :
|
try:
|
||||||
tirage_id = request.GET.get('id', '')
|
tirage_id = request.GET.get('id', '')
|
||||||
tirage = get_object_or_404(Tirage, id=tirage_id)
|
tirage = get_object_or_404(Tirage, id=tirage_id)
|
||||||
except:
|
except:
|
||||||
return HttpResponseBadRequest()
|
return HttpResponseBadRequest()
|
||||||
categories = list(unique_everseen([str(spectacle.category) for spectacle in tirage.spectacle_set.all()]))
|
categories = list(unique_everseen([
|
||||||
|
str(spectacle.category)
|
||||||
|
for spectacle in tirage.spectacle_set.all()
|
||||||
|
]))
|
||||||
categories.remove('None')
|
categories.remove('None')
|
||||||
locations = list(unique_everseen([str(spectacle.location) for spectacle in tirage.spectacle_set.all()]))
|
locations = list(unique_everseen([
|
||||||
data_return = [{'categories':categories, 'locations':locations}]
|
str(spectacle.location)
|
||||||
|
for spectacle in tirage.spectacle_set.all()
|
||||||
|
]))
|
||||||
|
data_return = [{'categories': categories, 'locations': locations}]
|
||||||
return HttpResponse(json.dumps(data_return))
|
return HttpResponse(json.dumps(data_return))
|
||||||
if request_type == "descriptions":
|
if request_type == "descriptions":
|
||||||
# Ici on retourne les descriptions correspondant à la catégorie et à la salle spécifiées
|
# Ici on retourne les descriptions correspondant à la catégorie et
|
||||||
|
# à la salle spécifiées
|
||||||
locations = {}
|
locations = {}
|
||||||
for salle in Salle.objects.all():
|
for salle in Salle.objects.all():
|
||||||
locations[salle.name] = salle.id
|
locations[salle.name] = salle.id
|
||||||
|
@ -680,20 +691,48 @@ def catalogue(request,request_type):
|
||||||
if category_name:
|
if category_name:
|
||||||
shows_qs = shows_qs.filter(category__name=category_name)
|
shows_qs = shows_qs.filter(category__name=category_name)
|
||||||
if location_name:
|
if location_name:
|
||||||
shows_qs = shows_qs.filter(location__id=locations[location_name])
|
shows_qs = shows_qs.filter(
|
||||||
|
location__id=locations[location_name])
|
||||||
except:
|
except:
|
||||||
return HttpResponseBadRequest("Impossible de trouver des résultats correspondant à ces caractéristiques")
|
return HttpResponseBadRequest(
|
||||||
|
"Impossible de trouver des résultats correspondant \
|
||||||
|
à ces caractéristiques")
|
||||||
|
|
||||||
def getImgUrl(obj):
|
def getImgUrl(obj):
|
||||||
""" Cette fonction permet de gérer les cas où il n'y a pas d'image """
|
"""
|
||||||
|
Cette fonction permet de gérer les cas où il n'y a pas d'image
|
||||||
|
"""
|
||||||
try:
|
try:
|
||||||
return obj.image.url
|
return obj.image.url
|
||||||
except:
|
except:
|
||||||
return ''
|
return ''
|
||||||
|
|
||||||
specquotes = lambda spectacle: [{'author': str(quote.author), 'text': str(quote.text)} for quote in Quote.objects.filter(spectacle = spectacle).all()]
|
def specquotes(spectacle): [
|
||||||
|
{'author': str(quote.author), 'text': str(quote.text)}
|
||||||
|
for quote in Quote.objects.filter(spectacle = spectacle).all()
|
||||||
|
]
|
||||||
|
|
||||||
# On convertit les descriptions à envoyer en une liste facilement JSONifiable (il devrait y avoir un moyen plus efficace en redéfinissant le serializer de JSON)
|
# On convertit les descriptions à envoyer en une liste facilement
|
||||||
data_return = [{'title': spectacle.title, 'category': str(spectacle.category), 'date': str(formats.date_format(timezone.localtime(spectacle.date), "SHORT_DATETIME_FORMAT")), 'location': str(spectacle.location), 'vips': spectacle.vips, 'description': spectacle.description, 'slots_description': spectacle.slots_description, 'quotes': specquotes(spectacle),'image': getImgUrl(spectacle), 'ext_link': spectacle.ext_link, 'price': spectacle.price, 'slots': spectacle.slots} for spectacle in shows_qs.all()]
|
# JSONifiable (il devrait y avoir un moyen plus efficace en
|
||||||
|
# redéfinissant le serializer de JSON)
|
||||||
|
data_return = [{
|
||||||
|
'title': spectacle.title,
|
||||||
|
'category': str(spectacle.category),
|
||||||
|
'date': str(formats.date_format(
|
||||||
|
timezone.localtime(spectacle.date),
|
||||||
|
"SHORT_DATETIME_FORMAT")),
|
||||||
|
'location': str(spectacle.location),
|
||||||
|
'vips': spectacle.vips,
|
||||||
|
'description': spectacle.description,
|
||||||
|
'slots_description': spectacle.slots_description,
|
||||||
|
'quotes': specquotes(spectacle),
|
||||||
|
'image': getImgUrl(spectacle),
|
||||||
|
'ext_link': spectacle.ext_link,
|
||||||
|
'price': spectacle.price,
|
||||||
|
'slots': spectacle.slots
|
||||||
|
}
|
||||||
|
for spectacle in shows_qs.all()
|
||||||
|
]
|
||||||
return HttpResponse(json.dumps(data_return))
|
return HttpResponse(json.dumps(data_return))
|
||||||
return HttpResponseBadRequest() # Si la requête n'est pas de la forme attendue, on quitte avec une erreur
|
# Si la requête n'est pas de la forme attendue, on quitte avec une erreur
|
||||||
|
return HttpResponseBadRequest()
|
||||||
|
|
Loading…
Reference in a new issue