From 743dc7e2dc2fc76b20592fd4211fbf70a7458498 Mon Sep 17 00:00:00 2001 From: Jonas 12t Date: Fri, 14 Jan 2022 12:26:46 +0400 Subject: [PATCH 1/2] Jauge atteinte, evenement complet --- DjangoFiles/ApiBillet/serializers.py | 6 +++++- DjangoFiles/BaseBillet/models.py | 16 +++++++++++++--- DjangoFiles/BaseBillet/signals.py | 2 +- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/DjangoFiles/ApiBillet/serializers.py b/DjangoFiles/ApiBillet/serializers.py index 82f4a2b..e4bf1e8 100644 --- a/DjangoFiles/ApiBillet/serializers.py +++ b/DjangoFiles/ApiBillet/serializers.py @@ -291,10 +291,14 @@ class ReservationValidator(serializers.Serializer): if self.nbr_ticket == 0: raise serializers.ValidationError(_(f'pas de billet dans la reservation')) + event : Event = attrs.get('event') + if event.complet() : + raise serializers.ValidationError(_(f'Jauge atteinte : Evenement complet.')) + config = Configuration.get_solo() reservation = Reservation.objects.create( user_commande=self.user_commande, - event=attrs.get('event'), + event=event, ) lignes_article = [] diff --git a/DjangoFiles/BaseBillet/models.py b/DjangoFiles/BaseBillet/models.py index 316b002..6f987fb 100644 --- a/DjangoFiles/BaseBillet/models.py +++ b/DjangoFiles/BaseBillet/models.py @@ -23,6 +23,7 @@ from stdimage import StdImageField from stdimage.validators import MaxSizeValidator from django.db import connection +import AuthBillet.models from QrcodeCashless.models import CarteCashless from TiBillet import settings import stripe @@ -346,7 +347,7 @@ class Event(models.Model): delete_orphans=True ) - reservations = models.PositiveSmallIntegerField(default=0) + # reservations = models.PositiveSmallIntegerField(default=0) CONCERT = "LIV" FESTIVAL = "FES" @@ -362,9 +363,18 @@ class Event(models.Model): categorie = models.CharField(max_length=3, choices=TYPE_CHOICES, default=CONCERT, verbose_name=_("Catégorie d'évènement")) + + + def reservations(self): + return Ticket.objects.filter(reservation__event__pk=self.pk)\ + .exclude(status=Ticket.CREATED)\ + .exclude(status=Ticket.NOT_ACTIV)\ + .count() + + def complet(self): # TODO: Benchmarker et tester si c'est pas mieux dans template - if self.reservations >= Configuration.get_solo().jauge_max: + if self.reservations() >= Configuration.get_solo().jauge_max: return True else: return False @@ -388,7 +398,7 @@ class Reservation(models.Model): uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False, unique=True, db_index=True) datetime = models.DateTimeField(auto_now=True) - user_commande = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT) + user_commande: AuthBillet.models.TibilletUser = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT) event = models.ForeignKey(Event, on_delete=models.PROTECT, diff --git a/DjangoFiles/BaseBillet/signals.py b/DjangoFiles/BaseBillet/signals.py index dc46aa0..b7b2f40 100644 --- a/DjangoFiles/BaseBillet/signals.py +++ b/DjangoFiles/BaseBillet/signals.py @@ -169,7 +169,7 @@ def set_paiement_valid(old_instance, new_instance): new_instance: Reservation if new_instance.mail_send: logger.info( - f" TRIGGER RESERVATION set_paiement_valid Mail envoyé {new_instance.mail_send}, on valide les paiement payés") + f" TRIGGER RESERVATION set_paiement_valid Mail envoyé {new_instance.mail_send}, on valide les paiements payés") for paiement in new_instance.paiements.filter(status=Paiement_stripe.PAID): paiement.status = Paiement_stripe.VALID paiement.traitement_en_cours = False From afe7d74434ee129079258349dbdc2792b7a2730d Mon Sep 17 00:00:00 2001 From: Jonas 12t Date: Fri, 14 Jan 2022 12:27:14 +0400 Subject: [PATCH 2/2] Migration : Jauge atteinte, evenement complet --- .../0025_remove_event_reservations.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 DjangoFiles/BaseBillet/migrations/0025_remove_event_reservations.py diff --git a/DjangoFiles/BaseBillet/migrations/0025_remove_event_reservations.py b/DjangoFiles/BaseBillet/migrations/0025_remove_event_reservations.py new file mode 100644 index 0000000..19e6346 --- /dev/null +++ b/DjangoFiles/BaseBillet/migrations/0025_remove_event_reservations.py @@ -0,0 +1,17 @@ +# Generated by Django 3.2 on 2022-01-14 08:04 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('BaseBillet', '0024_alter_paiement_stripe_metadata_stripe'), + ] + + operations = [ + migrations.RemoveField( + model_name='event', + name='reservations', + ), + ]