|
20 | 20 | from app.api.helpers.exceptions import ConflictException, MethodNotAllowed, UnprocessableEntity |
21 | 21 | from app.api.helpers.db import get_count |
22 | 22 |
|
| 23 | + |
| 24 | +def validate_ticket_price(ticket_type, price): |
| 25 | + if ticket_type != 'free' and int(price) <= 0: |
| 26 | + raise UnprocessableEntity( |
| 27 | + {'price': price}, "Price of a paid/donation ticket must be greater than zero") |
| 28 | + |
| 29 | + |
23 | 30 | class TicketListPost(ResourceList): |
24 | 31 | """ |
25 | 32 | Create and List Tickets |
@@ -59,6 +66,7 @@ def before_create_object(self, data, view_kwargs): |
59 | 66 | if not event.is_payment_enabled(): |
60 | 67 | raise UnprocessableEntity( |
61 | 68 | {'event_id': data['event']}, "Event having paid ticket must have a payment method") |
| 69 | + validate_ticket_price(data.get('type'), data.get('price')) |
62 | 70 |
|
63 | 71 | schema = TicketSchema |
64 | 72 | methods = ['POST', ] |
@@ -181,6 +189,8 @@ def before_update_object(self, ticket, data, view_kwargs): |
181 | 189 | if not event.is_payment_enabled(): |
182 | 190 | raise UnprocessableEntity( |
183 | 191 | {'event_id': ticket.event.id}, "Event having paid ticket must have a payment method") |
| 192 | + if data.get('price') and data.get('type'): |
| 193 | + validate_ticket_price(data.get('type'), data.get('price')) |
184 | 194 |
|
185 | 195 | decorators = (api.has_permission('is_coorganizer', fetch='event_id', |
186 | 196 | fetch_as="event_id", model=Ticket, methods="PATCH,DELETE"),) |
|
0 commit comments