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

1from api.models import Ticket 

2 

3 

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 = [] 

13 

14 for item_data in _items: 

15 offre = item_data['offre'] 

16 evenement = item_data['evenement'] 

17 quantity = item_data['quantity'] 

18 

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 }) 

37 

38 return tickets_created, tickets_uncreated