2020from  app .api .helpers .exceptions  import  ConflictException , MethodNotAllowed , UnprocessableEntity 
2121from  app .api .helpers .db  import  get_count 
2222
23+ 
24+ def  validate_ticket_price (data ):
25+     if  data .get ('type' ) !=  'free'  and  int (data .get ('price' )) <=  0 :
26+         raise  UnprocessableEntity (
27+             {'price' : data .get ('price' )}, "Price of a paid/donation ticket must be greater than zero" )
28+ 
29+ 
2330class  TicketListPost (ResourceList ):
2431    """ 
2532    Create and List Tickets 
@@ -51,6 +58,8 @@ def before_create_object(self, data, view_kwargs):
5158        :param view_kwargs: 
5259        :return: 
5360        """ 
61+         if  not  data .get ('price' ) or  not  data .get ('type' ):
62+             raise  UnprocessableEntity ({}, "Type/price of ticket is missing" )
5463        if  data .get ('type' ) ==  'paid'  and  data .get ('event' ):
5564            try :
5665                event  =  db .session .query (Event ).filter_by (id = data ['event' ], deleted_at = None ).one ()
@@ -59,6 +68,7 @@ def before_create_object(self, data, view_kwargs):
5968            if  not  event .is_payment_enabled ():
6069                raise  UnprocessableEntity (
6170                    {'event_id' : data ['event' ]}, "Event having paid ticket must have a payment method" )
71+         validate_ticket_price (data )
6272
6373    schema  =  TicketSchema 
6474    methods  =  ['POST' , ]
@@ -181,7 +191,8 @@ def before_update_object(self, ticket, data, view_kwargs):
181191            if  not  event .is_payment_enabled ():
182192                raise  UnprocessableEntity (
183193                    {'event_id' : ticket .event .id }, "Event having paid ticket must have a payment method" )
184- 
194+         if  data .get ('type' ) and  data .get ('price' ):
195+             validate_ticket_price (data )
185196    decorators  =  (api .has_permission ('is_coorganizer' , fetch = 'event_id' ,
186197                  fetch_as = "event_id" , model = Ticket , methods = "PATCH,DELETE" ),)
187198    schema  =  TicketSchema 
0 commit comments