Coverage for payment\services\ticket_service.py: 21%
19 statements
« prev ^ index » next coverage.py v7.10.7, created at 2025-10-13 15:18 +0200
« prev ^ index » next coverage.py v7.10.7, created at 2025-10-13 15:18 +0200
1from api.models import Ticket
4class TicketService:
5 @staticmethod
6 def create_tickets_from_items(_client_profile, _items):
7 """
8 Crée des tickets à partir des items du panier.
9 Retourne une liste de tickets créés et une liste d'erreurs.
10 """
11 tickets_created = []
12 tickets_uncreated = []
14 for item_data in _items:
15 offre = item_data['offre']
16 evenement = item_data['evenement']
17 quantity = item_data['quantity']
19 for _ in range(quantity):
20 if evenement.nb_place_restante >= offre.nb_personne:
21 evenement.nb_place_restante -= offre.nb_personne
22 evenement.save()
23 ticket = Ticket(
24 client=_client_profile,
25 evenement=evenement,
26 offre=offre,
27 statut='valide'
28 )
29 ticket.save()
30 tickets_created.append(ticket)
31 else:
32 tickets_uncreated.append({
33 "offre": offre.libelle,
34 "evenement": evenement.description,
35 "reason": "Places insuffisantes"
36 })
38 return tickets_created, tickets_uncreated