From e9e0be7960cf7c7e5f48d2f18e6f8486efe0de0d Mon Sep 17 00:00:00 2001 From: Ludovic Stephan Date: Sun, 4 Sep 2016 11:14:09 +0200 Subject: [PATCH] =?UTF-8?q?g=C3=A8re=20les=20places=20demand=C3=A9es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bda/models.py | 32 +++++++++++++++++++++++++++++++ bda/templates/bda-interested.html | 9 +++++++++ bda/urls.py | 3 +++ bda/views.py | 16 +++++++++++++++- 4 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 bda/templates/bda-interested.html diff --git a/bda/models.py b/bda/models.py index 7856b517..c3621a45 100644 --- a/bda/models.py +++ b/bda/models.py @@ -6,6 +6,7 @@ from __future__ import unicode_literals import calendar import datetime +import random from django.db import models from django.contrib.auth.models import User @@ -256,3 +257,34 @@ class SpectacleRevente(models.Model): connection = mail.get_connection() connection.send_messages(mails_to_send) + + def tirage(self): + inscrits = self.interested + spectacle = self.attribution.spectacle + user = self.attribution.participant.user + if inscrits.exists(): + idx = random.randint(0, inscrits.count() - 1) + winner = inscrits.all()[idx] + self.soldTo = winner + mail_buyer = """Bonjour, + +Tu as été tiré-e au sort pour racheter une place pour %s le %s (%s) à %0.02f€. +Tu peux contacter le vendeur à l'adresse %s. + +Chaleureusement, +Le BdA""" % (spectacle.title, spectacle.date_no_seconds(), + spectacle.location, spectacle.price, user.email) + + mail.send_mail("BdA-Revente : %s" % spectacle.title, + mail_buyer, "bda@ens.fr", [winner.user.email], + fail_silently=False) + mail_seller = """Bonjour, +La personne tirée au sort pour racheter ta place pour %s est %s. +Tu peux le/la contacter à l'adresse %s. + +Chaleureusement, +Le BdA""" % (spectacle.title, winner.user.get_full_name(), winner.user.email) + + mail.send_mail("BdA-Revente : %s" % spectacle.title, + mail_seller, "bda@ens.fr", [user.email], + fail_silently=False) diff --git a/bda/templates/bda-interested.html b/bda/templates/bda-interested.html new file mode 100644 index 00000000..acfb1d1e --- /dev/null +++ b/bda/templates/bda-interested.html @@ -0,0 +1,9 @@ +{% extends "base_title.html" %} +{% load staticfiles %} + +{% block realcontent %} +

Inscription à une revente

+

Votre inscription pour a bien été enregistrée !

+

Le tirage au sort pour cette revente ({{spectacle}}) sera effectué le {{date}}. + +{% endblock %} diff --git a/bda/urls.py b/bda/urls.py index 13a163f4..94b797fa 100644 --- a/bda/urls.py +++ b/bda/urls.py @@ -38,6 +38,9 @@ urlpatterns = [ url(r'^buy-revente/(?P\d+)$', "bda.views.buy_revente", name="bda-buy-revente"), + url(r'^revente-interested/(?P\d+)$', + "bda.views.revente_interested", + name='bda-revente-interested'), url(r'^mails-rappel/(?P\d+)$', views.send_rappel), url(r'^descriptions/(?P\d+)$', views.descriptions_spectacles, name='bda-descriptions'), diff --git a/bda/views.py b/bda/views.py index 3641b776..a3fd9168 100644 --- a/bda/views.py +++ b/bda/views.py @@ -318,6 +318,20 @@ def revente(request, tirage_id): "annulform": annulform, "resellform": resellform}) +@login_required +def revente_interested(request, revente_id): + revente = get_object_or_404(SpectacleRevente, id=revente_id) + participant, created = Participant.objects.get_or_create( + user=request.user, tirage=revente.attribution.spectacle.tirage) + if timezone.now() < revente.date + timedelta(hours=1) or revente.shotgun: + return render(request, "bda-wrongtime.html", {}) + + revente.interested.add(participant) + return render(request, "bda-interested.html", + {"spectacle": revente.attribution.spectacle, + "date": revente.expiration_time}) + + @login_required def list_revente(request, tirage_id): tirage = get_object_or_404(Tirage, id=tirage_id) @@ -373,7 +387,7 @@ def buy_revente(request, spectacle_id): revente.save() mail = """Bonjour ! -Je souhaiterais racheter ta place pour %s le %s (%s) à %.02f€. +Je souhaiterais racheter ta place pour %s le %s (%s) à %.02f€. Contacte-moi si tu es toujours intéressé·e ! %s (%s)""" % (spectacle.title, spectacle.date_no_seconds(),