diff --git a/bda/forms.py b/bda/forms.py index c2eec894..fe20e565 100644 --- a/bda/forms.py +++ b/bda/forms.py @@ -68,7 +68,7 @@ class AnnulForm(forms.Form): self.fields['attributions'].queryset = participant.attribution_set\ .filter(spectacle__date__gte=timezone.now(), revente__isnull=False, - revente__date__gte=timezone.now()-timedelta(hours=1))\ + revente__date__gt=timezone.now()-timedelta(hours=1))\ .filter(Q(revente__soldTo__isnull=True) | Q(revente__soldTo=participant)) diff --git a/bda/models.py b/bda/models.py index d1b5ba3c..3642ee83 100644 --- a/bda/models.py +++ b/bda/models.py @@ -8,6 +8,7 @@ import calendar import random from datetime import timedelta +from django.contrib.sites.models import Site from django.db import models from django.contrib.auth.models import User from django.template import loader, Context @@ -105,22 +106,26 @@ class Spectacle(models.Model): for attr in Attribution.objects.filter(spectacle=self).all(): member = attr.participant.user if member.id in members: - members[member.id].nb_attr = 2 + members[member.id][1] = 2 else: - member.nb_attr = 1 - members[member.id] = member + members[member.id] = [member.first_name, 1, member.email] + # Pour le BdA + members[0] = ['BdA', 1, 'bda@ens.fr'] + members[-1] = ['BdA', 2, 'bda@ens.fr'] # On écrit un mail personnalisé à chaque participant mails_to_send = [] mail_object = "%s - %s - %s" % (self.title, self.date_no_seconds(), self.location) for member in members.values(): mail_body = render_template('mail-rappel.txt', { - 'member': member, + 'name': member[0], + 'nb_attr': member[1], 'show': self}) mail_tot = mail.EmailMessage( mail_object, mail_body, - settings.RAPPEL_FROM, [member.email], - [], headers={'Reply-To': settings.RAPPEL_REPLY_TO}) + settings.MAIL_DATA['rappels']['FROM'], [member[2]], + [], headers={ + 'Reply-To': settings.MAIL_DATA['rappels']['REPLYTO']}) mails_to_send.append(mail_tot) # On envoie les mails connection = mail.get_connection() @@ -223,6 +228,7 @@ class SpectacleRevente(models.Model): answered_mail = models.ManyToManyField(Participant, related_name="wanted", blank=True) + seller = models.ForeignKey(Participant, related_name="original_shows", verbose_name="Vendeur") @@ -244,6 +250,11 @@ class SpectacleRevente(models.Model): # On a aussi 1h pour changer d'avis return self.date + delay + timedelta(hours=1) + def expiration_time_str(self): + return self.expiration_time \ + .astimezone(timezone.get_current_timezone()) \ + .strftime('%D à %H:%M') + @property def shotgun(self): # Soit on a dépassé le délai du tirage, soit il reste peu de @@ -270,14 +281,14 @@ class SpectacleRevente(models.Model): mail_body = render_template('mail-revente.txt', { 'user': participant.user, 'spectacle': self.attribution.spectacle, - 'time': self.date.astimezone( - timezone.get_current_timezone()) \ - .strftime('%d %b %Y %H:%M'), - 'id': self.id}) + 'revente': self, + 'domain': Site.objects.get_current().domain}) mail_tot = mail.EmailMessage( mail_object, mail_body, - settings.REVENTE_FROM, [participant.user.email], - [], headers={'Reply-To': settings.REVENTE_REPLY_TO}) + settings.MAIL_DATA['revente']['FROM'], + [participant.user.email], + [], headers={ + 'Reply-To': settings.MAIL_DATA['revente']['REPLYTO']}) mails_to_send.append(mail_tot) connection = mail.get_connection() @@ -294,11 +305,14 @@ class SpectacleRevente(models.Model): mail_body = render_template('mail-shotgun.txt', { 'user': participant.user, 'spectacle': self.attribution.spectacle, + 'domain': Site.objects.get_current(), 'mail': self.attribution.participant.user.email}) mail_tot = mail.EmailMessage( mail_object, mail_body, - settings.REVENTE_FROM, [participant.user.email], - [], headers={'Reply-To': settings.REVENTE_REPLY_TO}) + settings.MAIL_DATA['revente']['FROM'], + [participant.user.email], + [], headers={ + 'Reply-To': settings.MAIL_DATA['revente']['REPLYTO']}) mails_to_send.append(mail_tot) connection = mail.get_connection() @@ -320,7 +334,7 @@ Tu peux contacter le/la vendeur-se à l'adresse %s. Chaleureusement, Le BdA""" % (spectacle.title, spectacle.date_no_seconds(), - spectacle.location, spectacle.price, seller.email) + spectacle.location, spectacle.price, seller.user.email) mail.send_mail("BdA-Revente : %s" % spectacle.title, mail_buyer, "bda@ens.fr", [winner.user.email], @@ -333,7 +347,7 @@ 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", [seller.email], + mail_seller, "bda@ens.fr", [seller.user.email], fail_silently=False) self.tirage_done = True self.save() diff --git a/bda/templates/liste-reventes.html b/bda/templates/liste-reventes.html index d08d4010..5eac7100 100644 --- a/bda/templates/liste-reventes.html +++ b/bda/templates/liste-reventes.html @@ -11,20 +11,7 @@ {% endif %}
{% csrf_token %} -
-

Spectacles

-
- - - -
-
    - {% for checkbox in form.spectacles %} -
  • {{checkbox}}
  • - {%endfor%} -
-
-
+ {{form | bootstrap}}
diff --git a/bda/templates/mail-rappel.txt b/bda/templates/mail-rappel.txt index 5152b1db..4759a849 100644 --- a/bda/templates/mail-rappel.txt +++ b/bda/templates/mail-rappel.txt @@ -1,14 +1,14 @@ -Bonjour {{ member.get_full_name }}, +Bonjour {{ name }}, -Nous te rappellons que tu as eu la chance d'obtenir {{ member.nb_attr|pluralize:"une place,deux places" }} +Nous te rappellons que tu as eu la chance d'obtenir {{ nb_attr|pluralize:"une place,deux places" }} pour {{ show.title }}, le {{ show.date_no_seconds }} au {{ show.location }}. N'oublie pas de t'y rendre ! -{% if member.nb_attr == 2 %} +{% if nb_attr == 2 %} Tu as obtenu deux places pour ce spectacle. Nous te rappelons que ces places sont strictement réservées aux personnes de moins de 28 ans. {% endif %} {% if show.listing %}Pour ce spectacle, tu as reçu des places sur listing. Il te faudra donc te rendre 15 minutes en avance sur les lieux de la représentation -pour retirer {{ member.nb_attr|pluralize:"ta place,tes places" }}. +pour retirer {{ nb_attr|pluralize:"ta place,tes places" }}. {% else %}Pour assister à ce spectacle, tu dois présenter les billets qui ont été distribués au burô. {% endif %} diff --git a/bda/templates/mail-revente.txt b/bda/templates/mail-revente.txt index 4dff5b7e..899afe3b 100644 --- a/bda/templates/mail-revente.txt +++ b/bda/templates/mail-revente.txt @@ -1,9 +1,12 @@ -Bonjour {{ user.get_full_name }} +Bonjour {{ user.first_name }} -Une place pour le spectacle {{ spectacle.title }} ({{spectacle.date_no_seconds}}) a été postée sur BdA-Revente. +Une place pour le spectacle {{ spectacle.title }} ({{ spectacle.date_no_seconds }}) +a été postée sur BdA-Revente. -Si ce spectacle t'intéresse toujours, merci de nous le signaler en cliquant sur ce lien : {% url "bda-revente-interested" id %}. -Dans le cas où plusieurs personnes seraient intéressées, nous procèderons à un tirage au sort le {{time}}. +Si ce spectacle t'intéresse toujours, merci de nous le signaler en cliquant +sur ce lien : http://{{ domain }}{% url "bda-revente-interested" revente.id %}. +Dans le cas où plusieurs personnes seraient intéressées, nous procèderons à +un tirage au sort le {{ revente.expiration_time_str }}. Chaleureusement, Le BdA diff --git a/bda/templates/mail-shotgun.txt b/bda/templates/mail-shotgun.txt index 4f972cf9..899d5c85 100644 --- a/bda/templates/mail-shotgun.txt +++ b/bda/templates/mail-shotgun.txt @@ -1,8 +1,11 @@ -Bonjour {{ user.get_full_name }} +Bonjour {{ user.first_name }} -Une place pour le spectacle {{ spectacle.title }} ({{spectacle.date_no_seconds}}) a été postée sur BdA-Revente. +Une place pour le spectacle {{ spectacle.title }} ({{ spectacle.date_no_seconds }}) +a été postée sur BdA-Revente. -Puisque ce spectacle a lieu dans moins de 24h, il n'y a pas de tirage au sort pour cette place : elle est disponible immédiatement à l'addresse {%url "bda-buy-revente" spectacle.id%}, à la disposition de tous. +Puisque ce spectacle a lieu dans moins de 24h, il n'y a pas de tirage au sort pour +cette place : elle est disponible immédiatement à l'addresse +http://{{ domain }}{% url "bda-buy-revente" spectacle.id %}, à la disposition de tous. Chaleureusement, Le BdA diff --git a/bda/views.py b/bda/views.py index 01758e18..494b0f36 100644 --- a/bda/views.py +++ b/bda/views.py @@ -333,7 +333,9 @@ def revente(request, tirage_id): revente = rev.get() revente.date = timezone.now() - timedelta(hours=1) revente.soldTo = None - revente.answered_mail = None + if revente.answered_mail: + revente.answered_mail.clear() + revente.save() else: resellform = ResellForm(participant, prefix='resell') diff --git a/cof/settings_dev.py b/cof/settings_dev.py index 0ed4a618..b2bda35d 100644 --- a/cof/settings_dev.py +++ b/cof/settings_dev.py @@ -145,15 +145,18 @@ ADMIN_MEDIA_PREFIX = '/static/grappelli/' GRAPPELLI_ADMIN_HEADLINE = "GestioCOF" GRAPPELLI_ADMIN_TITLE = "GestioCOF" -PETITS_COURS_FROM = "Le COF " -PETITS_COURS_BCC = "archivescof@gmail.com" -PETITS_COURS_REPLYTO = "cof@ens.fr" - -RAPPEL_FROM = 'Le BdA ' -RAPPEL_REPLY_TO = RAPPEL_FROM - -REVENTE_FROM = 'BdA-Revente ' -REVENTE_REPLY_TO = REVENTE_FROM +MAIL_DATA = { + 'petits_cours': { + 'FROM': "Le COF ", + 'BCC': "archivescof@gmail.com", + 'REPLYTO': "cof@ens.fr"}, + 'rappels': { + 'FROM': 'Le BdA ', + 'REPLYTO': 'Le BdA '}, + 'revente': { + 'FROM': 'BdA-Revente ', + 'REPLYTO': 'BdA-Revente '}, +} LOGIN_URL = "/gestion/login" LOGIN_REDIRECT_URL = "/gestion/" diff --git a/gestioncof/petits_cours_views.py b/gestioncof/petits_cours_views.py index 1a31115d..e9fe511e 100644 --- a/gestioncof/petits_cours_views.py +++ b/gestioncof/petits_cours_views.py @@ -282,9 +282,9 @@ def _traitement_post(request, demande): {"proposals": proposals_list, "unsatisfied": unsatisfied, "extra": extra}) - frommail = settings.PETITS_COURS_FROM - bccaddress = settings.PETITS_COURS_BCC - replyto = settings.PETITS_COURS_REPLYTO + frommail = settings.MAIL_DATA['petits_cours']['FROM'] + bccaddress = settings.MAIL_DATA['petits_cours']['BCC'] + replyto = settings.MAIL_DATA['petits_cours']['REPLYTO'] mails_to_send = [] for (user, msg) in proposed_mails: msg = EmailMessage("Petits cours ENS par le COF", msg,