From 2a56f8e255b86e6a9bdc0fc89d3b097a48e9d894 Mon Sep 17 00:00:00 2001 From: Ludovic Stephan Date: Sun, 11 Sep 2016 13:32:38 +0200 Subject: [PATCH] buy more than one place --- bda/forms.py | 8 ++++++++ bda/views.py | 29 ++++++++++++++++------------- 2 files changed, 24 insertions(+), 13 deletions(-) diff --git a/bda/forms.py b/bda/forms.py index c2eec894..f50c496b 100644 --- a/bda/forms.py +++ b/bda/forms.py @@ -44,6 +44,14 @@ class AttributionModelMultipleChoiceField(forms.ModelMultipleChoiceField): return "%s" % obj.spectacle +class BuyResellForm(forms.Form): + num = forms.ChoiceField(choices=[]) + + def __init__(self, spectacle, *args, **kwargs): + super(BuyResellForm, self).__init__(*args, **kwargs) + self.fields['num'].choices = range(1, spectacle.revente.count()) + + class ResellForm(forms.Form): attributions = AttributionModelMultipleChoiceField( queryset=Attribution.objects.none(), diff --git a/bda/views.py b/bda/views.py index dc1f4cb2..7b3b30e9 100644 --- a/bda/views.py +++ b/bda/views.py @@ -28,7 +28,7 @@ from bda.models import Spectacle, Participant, ChoixSpectacle, Attribution,\ from bda.algorithm import Algorithm from bda.forms import BaseBdaFormSet, TokenForm, ResellForm, AnnulForm,\ - InscriptionReventeForm + InscriptionReventeForm, BuyResellForm @cof_required @@ -435,11 +435,14 @@ def buy_revente(request, spectacle_id): return render(request, "bda-no-revente.html", {}) if request.POST: - idx = random.randint(0, reventes.count() - 1) - revente = reventes.all()[idx] - revente.soldTo = participant - revente.save() - mail = """Bonjour ! + form = BuyResellForm(spectacle, request.POST) + if form.is_valid(): + num = form.cleaned_data['num'] + reventes = random.sample(reventes.all(), num) + for revente in reventes: + revente.soldTo = participant + revente.save() + mail = """Bonjour ! Je souhaiterais racheter ta place pour %s le %s (%s) à %.02f€. Contacte-moi si tu es toujours intéressé·e ! @@ -447,13 +450,13 @@ Contacte-moi si tu es toujours intéressé·e ! %s (%s)""" % (spectacle.title, spectacle.date_no_seconds(), spectacle.location, spectacle.price, request.user.get_full_name(), request.user.email) - send_mail("BdA-Revente : %s" % spectacle.title, mail, - request.user.email, - [revente.seller.user.email], - fail_silently=False) - return render(request, "bda-success.html", - {"seller": revente.seller.user, - "spectacle": spectacle}) + send_mail("BdA-Revente : %s" % spectacle.title, mail, + request.user.email, + [revente.seller.user.email], + fail_silently=False) + return render(request, "bda-success.html", + {"seller": revente.seller.user, + "spectacle": spectacle}) return render(request, "revente-confirm.html", {"spectacle": spectacle,