PEP8: fixed ' = ' → '=' on parameters

'unexpected spaces around keyword / parameter equals'
This commit is contained in:
Théophile Bastian 2016-07-09 20:19:37 +01:00
parent 7de11f2285
commit c7a3656ded
18 changed files with 496 additions and 379 deletions

View file

@ -19,23 +19,25 @@ class AttributionInline(admin.TabularInline):
class ParticipantAdmin(admin.ModelAdmin):
inlines = [AttributionInline]
def get_queryset(self, request):
return Participant.objects.annotate(nb_places = Count('attributions'),
total = Sum('attributions__price'))
return Participant.objects.annotate(nb_places=Count('attributions'),
total=Sum('attributions__price'))
def nb_places(self, obj):
return obj.nb_places
nb_places.admin_order_field = "nb_places"
nb_places.short_description = "Nombre de places"
def total(self, obj):
tot = obj.total
if tot: return u"%.02f" % tot
else: return u"0 €"
if tot:
return u"%.02f" % tot
else:
return u"0 €"
total.admin_order_field = "total"
total.short_description = "Total à payer"
list_display = ("user", "nb_places", "total", "paid", "paymenttype",
"tirage")
list_filter = ("paid", "tirage")
search_fields = ('user__username', 'user__first_name', 'user__last_name')
actions = ['send_attribs',]
actions = ['send_attribs', ]
actions_on_bottom = True
list_per_page = 400
readonly_fields = ("total",)
@ -97,7 +99,7 @@ Le Bureau des Arts
mail = mail % (name, attribs_text, deadline.strftime('%d %b %Y'))
send_mail ("Résultats du tirage au sort", mail,
"bda@ens.fr", [member.user.email],
fail_silently = True)
fail_silently=True)
count = len(queryset.all())
if count == 1:
message_bit = u"1 membre a"
@ -110,7 +112,7 @@ Le Bureau des Arts
class AttributionAdminForm(forms.ModelForm):
def clean(self):
cleaned_data=super(AttributionAdminForm, self).clean()
cleaned_data = super(AttributionAdminForm, self).clean()
participant = cleaned_data.get("participant")
spectacle = cleaned_data.get("spectacle")
if participant and spectacle:

View file

@ -39,8 +39,10 @@ class Algorithm(object):
member_shows[member] = {}
for choice in choices:
member = choice.participant
if choice.spectacle in member_shows[member]: continue
else: member_shows[member][choice.spectacle] = True
if choice.spectacle in member_shows[member]:
continue
else:
member_shows[member][choice.spectacle] = True
showdict[choice.spectacle].requests.append(member)
showdict[choice.spectacle].nrequests += 2 if choice.double else 1
self.ranks[member][choice.spectacle] = next_rank[member]
@ -49,7 +51,7 @@ class Algorithm(object):
for member in members:
self.origranks[member] = dict(self.ranks[member])
def IncrementRanks(self, member, currank, increment = 1):
def IncrementRanks(self, member, currank, increment=1):
for show in self.ranks[member]:
if self.ranks[member][show] > currank:
self.ranks[member][show] -= increment
@ -63,7 +65,7 @@ class Algorithm(object):
def __call__(self, seed):
random.seed(seed)
results = []
shows = sorted(self.shows, key = lambda x: x.nrequests / x.slots, reverse = True)
shows = sorted(self.shows, key=lambda x: x.nrequests / x.slots, reverse=True)
for show in shows:
# On regroupe tous les gens ayant le même rang
groups = dict([(i, []) for i in range(1, self.max_group + 1)])
@ -78,7 +80,7 @@ class Algorithm(object):
group = list(groups[i])
random.shuffle(group)
for member in group:
if self.choices[member][show].double: # double
if self.choices[member][show].double: # double
if len(winners) + 1 < show.slots:
self.appendResult(winners, member, show)
self.appendResult(winners, member, show)
@ -89,12 +91,11 @@ class Algorithm(object):
self.appendResult(losers, member, show)
self.appendResult(losers, member, show)
self.IncrementRanks(member, i, 2)
else: # simple
else: # simple
if len(winners) < show.slots:
self.appendResult(winners, member, show)
else:
self.appendResult(losers, member, show)
self.IncrementRanks(member, i)
results.append((show,winners,losers))
results.append((show, winners, losers))
return results

View file

@ -9,7 +9,8 @@ class BaseBdaFormSet(BaseInlineFormSet):
"""Checks that no two articles have the same title."""
super(BaseBdaFormSet, self).clean()
if any(self.errors):
# Don't bother validating the formset unless each form is valid on its own
# Don't bother validating the formset unless each form is valid on
# its own
return
spectacles = []
for i in range(0, self.total_form_count()):
@ -32,10 +33,9 @@ class SpectacleModelChoiceField(forms.ModelChoiceField):
obj.location, obj.price)
class ResellForm(forms.Form):
count = forms.ChoiceField(choices = (("1","1"),("2","2"),))
count = forms.ChoiceField(choices=(("1", "1"), ("2", "2"),))
spectacle = SpectacleModelChoiceField(queryset=Spectacle.objects.none())
def __init__(self, participant, *args, **kwargs):
super(ResellForm, self).__init__(*args, **kwargs)
self.fields['spectacle'].queryset = participant.attributions.all().distinct()

View file

@ -18,12 +18,12 @@ class Tirage(models.Model):
def __unicode__(self):
return u"%s - %s" % (self.title, self.date_no_seconds())
class Salle(models.Model):
name = models.CharField("Nom", max_length = 300)
name = models.CharField("Nom", max_length=300)
address = models.TextField("Adresse")
def __unicode__ (self):
def __unicode__(self):
return self.name
class Spectacle(models.Model):
@ -39,9 +39,9 @@ class Spectacle(models.Model):
class Meta:
verbose_name = "Spectacle"
ordering = ("priority", "date","title",)
ordering = ("priority", "date", "title",)
def __repr__ (self):
def __repr__(self):
return u"[%s]" % self.__unicode__()
def timestamp(self):
@ -50,15 +50,15 @@ class Spectacle(models.Model):
def date_no_seconds(self):
return self.date.strftime('%d %b %Y %H:%M')
def __unicode__ (self):
def __unicode__(self):
return u"%s - %s, %s, %.02f" % (self.title, self.date_no_seconds(),
self.location, self.price)
PAYMENT_TYPES = (
("cash",u"Cash"),
("cb","CB"),
("cheque",u"Chèque"),
("autre",u"Autre"),
("cash", u"Cash"),
("cb", "CB"),
("cheque", u"Chèque"),
("autre", u"Autre"),
)
class Participant(models.Model):
@ -69,12 +69,12 @@ class Participant(models.Model):
attributions = models.ManyToManyField(Spectacle,
through="Attribution",
related_name="attributed_to")
paid = models.BooleanField (u"A payé", default=False)
paid = models.BooleanField(u"A payé", default=False)
paymenttype = models.CharField(u"Moyen de paiement",
max_length=6, choices=PAYMENT_TYPES, blank=True)
tirage = models.ForeignKey(Tirage)
def __unicode__ (self):
def __unicode__(self):
return u"%s" % (self.user)
DOUBLE_CHOICES = (
@ -109,6 +109,5 @@ class Attribution(models.Model):
spectacle = models.ForeignKey(Spectacle, related_name="attribues")
given = models.BooleanField(u"Donnée", default=False)
def __unicode__ (self):
def __unicode__(self):
return u"%s -- %s" % (self.participant, self.spectacle)

View file

@ -21,14 +21,14 @@ urlpatterns = patterns('',
name='bda-etat-places'),
url(r'tirage/(?P<tirage_id>\d+)$', 'bda.views.tirage'),
url(r'spectacles/(?P<tirage_id>\d+)$',
SpectacleListView.as_view() ,
name ="bda-liste-spectacles"),
SpectacleListView.as_view(),
name="bda-liste-spectacles"),
url(r'spectacles/(?P<tirage_id>\d+)/(?P<spectacle_id>\d+)$',
"bda.views.spectacle",
name="bda-spectacle"),
url(r'spectacles-ics/(?P<tirage_id>\d+)$',
'bda.views.liste_spectacles_ics',
name ="bda-liste-spectacles-ics"),
name="bda-liste-spectacles-ics"),
url(r'spectacles/unpaid/(?P<tirage_id>\d+)$',
"bda.views.unpaid",
name="bda-unpaid"),

View file

@ -10,7 +10,7 @@ from django.core import serializers
from django.forms.models import inlineformset_factory
import hashlib
from django.core.mail import send_mail
from django.core.mail import send_mail
from django.utils import timezone
from django.views.generic.list import ListView
@ -23,6 +23,7 @@ from bda.algorithm import Algorithm
from bda.forms import BaseBdaFormSet, TokenForm, ResellForm
@cof_required
def etat_places(request, tirage_id):
tirage = get_object_or_404(Tirage, id=tirage_id)
@ -30,13 +31,13 @@ def etat_places(request, tirage_id):
.filter(spectacle__tirage=tirage) \
.filter(double_choice="1") \
.all() \
.values('spectacle','spectacle__title') \
.values('spectacle', 'spectacle__title') \
.annotate(total=models.Count('spectacle'))
spectacles2 = ChoixSpectacle.objects \
.filter(spectacle__tirage=tirage) \
.exclude(double_choice="1") \
.all() \
.values('spectacle','spectacle__title') \
.values('spectacle', 'spectacle__title') \
.annotate(total=models.Count('spectacle'))
spectacles = tirage.spectacle_set.all()
spectacles_dict = {}
@ -50,22 +51,24 @@ def etat_places(request, tirage_id):
spectacles_dict[spectacle["spectacle"]].ratio = \
spectacles_dict[spectacle["spectacle"]].total / \
spectacles_dict[spectacle["spectacle"]].slots
total += spectacle["total"]
total += spectacle["total"]
for spectacle in spectacles2:
spectacles_dict[spectacle["spectacle"]].total += 2*spectacle["total"]
spectacles_dict[spectacle["spectacle"]].ratio = \
spectacles_dict[spectacle["spectacle"]].total / \
spectacles_dict[spectacle["spectacle"]].slots
total += spectacle["total"]
total += spectacle["total"]
return render(request, "etat-places.html",
{"spectacles": spectacles, "total": total, 'tirage': tirage})
def _hash_queryset(queryset):
data = serializers.serialize("json", queryset)
hasher = hashlib.sha256()
hasher.update(data)
return hasher.hexdigest()
@cof_required
def places(request, tirage_id):
tirage = get_object_or_404(Tirage, id=tirage_id)
@ -99,7 +102,8 @@ def places(request, tirage_id):
"total": total,
"warning": warning})
@cof_required
@cof_required
def places_ics(request, tirage_id):
tirage = get_object_or_404(Tirage, id=tirage_id)
participant, created = Participant.objects.get_or_create(
@ -114,7 +118,8 @@ def places_ics(request, tirage_id):
places_dict[place.spectacle].double = True
else:
place.double = False
place.spectacle.dtend = place.spectacle.date + timedelta(seconds=7200)
place.spectacle.dtend = place.spectacle.date + \
timedelta(seconds=7200)
places_dict[place.spectacle] = place
spectacles.append(place.spectacle)
filtered_places.append(place)
@ -122,6 +127,7 @@ def places_ics(request, tirage_id):
{"participant": participant,
"places": filtered_places}, content_type="text/calendar")
@cof_required
def inscription(request, tirage_id):
tirage = get_object_or_404(Tirage, id=tirage_id)
@ -130,7 +136,7 @@ def inscription(request, tirage_id):
tirage.ouverture.strftime('%d %b %Y à %H:%M'))
return render(request, 'resume_inscription.html',
{ "error_title": "Le tirage n'est pas encore ouvert !",
"error_description": error_desc })
"error_description": error_desc})
if timezone.now() > tirage.fermeture:
participant, created = Participant.objects.get_or_create(
user=request.user, tirage=tirage)
@ -146,7 +152,7 @@ def inscription(request, tirage_id):
BdaFormSet = inlineformset_factory(
Participant,
ChoixSpectacle,
fields=("spectacle","double_choice","priority"),
fields=("spectacle", "double_choice", "priority"),
formset=BaseBdaFormSet,
formfield_callback=formfield_callback)
participant, created = Participant.objects.get_or_create(
@ -170,7 +176,8 @@ def inscription(request, tirage_id):
total_price = 0
for choice in participant.choixspectacle_set.all():
total_price += choice.spectacle.price
if choice.double: total_price += choice.spectacle.price
if choice.double:
total_price += choice.spectacle.price
return render(request, "inscription-bda.html",
{ "formset": formset,
"success": success,
@ -179,6 +186,7 @@ def inscription(request, tirage_id):
'tirage': tirage,
"stateerror": stateerror})
def do_tirage(request, tirage_id):
tirage_elt = get_object_or_404(Tirage, id=tirage_id)
form = TokenForm(request.POST)
@ -221,8 +229,9 @@ def do_tirage(request, tirage_id):
data["duration"] = time.time() - start
if request.user.is_authenticated():
members2 = {}
members_uniq = {} # Participant objects are not shared accross spectacle results,
# So assign a single object for each Participant id
# Participant objects are not shared accross spectacle results,
# so assign a single object for each Participant id
members_uniq = {}
for (show, members, _) in results:
for (member, _, _, _) in members:
if member.id not in members_uniq:
@ -249,6 +258,7 @@ def do_tirage(request, tirage_id):
else:
return render(request, "bda-attrib.html", data)
@buro_required
def tirage(request, tirage_id):
if request.POST:
@ -259,6 +269,7 @@ def tirage(request, tirage_id):
form = TokenForm()
return render(request, "bda-token.html", {"form": form})
def do_resell(request, form):
spectacle = form.cleaned_data["spectacle"]
count = form.cleaned_data["count"]
@ -273,9 +284,10 @@ Contactez moi par email si vous êtes intéressé·e·s !
request.user.email)
send_mail("%s" % spectacle, mail,
request.user.email, ["bda-revente@lists.ens.fr"],
fail_silently = False)
fail_silently=False)
return render(request, "bda-success.html", {"show": spectacle, "places": places})
@login_required
def revente(request, tirage_id):
tirage = get_object_or_404(Tirage, id=tirage_id)
@ -291,6 +303,7 @@ def revente(request, tirage_id):
form = ResellForm(participant)
return render(request, "bda-revente.html", {"form": form, 'tirage': tirage})
@buro_required
def spectacle(request, tirage_id, spectacle_id):
tirage = get_object_or_404(Tirage, id=tirage_id)
@ -299,37 +312,41 @@ def spectacle(request, tirage_id, spectacle_id):
participants = {}
for attrib in attributions:
participant = attrib.participant
participant_info = {'lastname': participant.user.last_name,
'name': participant.user.get_full_name,
'username': participant.user.username,
'email': participant.user.email,
'given': int(attrib.given),
'paid': participant.paid,
participant_info = {'lastname': participant.user.last_name,
'name': participant.user.get_full_name,
'username': participant.user.username,
'email': participant.user.email,
'given': int(attrib.given),
'paid': participant.paid,
'nb_places': 1}
if participant.id in participants:
participants[participant.id]['nb_places'] += 1
participants[participant.id]['nb_places'] += 1
participants[participant.id]['given'] += attrib.given
else:
participants[participant.id] = participant_info
participants_info = sorted(participants.values(),
participants_info = sorted(participants.values(),
key=lambda part: part['lastname'])
return render(request, "bda-participants.html",
return render(request, "bda-participants.html",
{"spectacle": spectacle, "participants": participants_info})
class SpectacleListView(ListView):
model = Spectacle
template_name = 'spectacle_list.html'
def get_queryset(self):
self.tirage = get_object_or_404(Tirage, id=self.kwargs['tirage_id'])
categories = self.tirage.spectacle_set.all()
return categories
def get_context_data(self, **kwargs):
context = super(SpectacleListView, self).get_context_data(**kwargs)
context['tirage_id'] = self.tirage.id
context['tirage_name'] = self.tirage.title
return context
@buro_required
def unpaid(request, tirage_id):
tirage = get_object_or_404(Tirage, id=tirage_id)
@ -338,7 +355,8 @@ def unpaid(request, tirage_id):
.filter(paid=False, nb_attributions__gt=0).all()
return render(request, "bda-unpaid.html", {"unpaid": unpaid})
@buro_required
@buro_required
def liste_spectacles_ics(request, tirage_id):
tirage = get_object_or_404(Tirage, id=tirage_id)
spectacles = tirage.spectacle_set.order_by("date").all()
@ -347,4 +365,3 @@ def liste_spectacles_ics(request, tirage_id):
return render(request, "liste_spectacles.ics",
{"spectacles": spectacles, "tirage": tirage},
content_type="text/calendar")