Skip to content

Commit a21bb4b

Browse files
committed
fix: Add server checks for ticket price
1 parent 250b920 commit a21bb4b

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

app/api/tickets.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,15 @@
2020
from app.api.helpers.exceptions import ConflictException, MethodNotAllowed, UnprocessableEntity
2121
from app.api.helpers.db import get_count
2222

23+
24+
def validate_ticket_price(data):
25+
if not data.get('price') or not data.get('type'):
26+
raise UnprocessableEntity({}, "Type/price of ticket is missing")
27+
if data.get('type') != 'free' and int(data.get('price')) <= 0:
28+
raise UnprocessableEntity(
29+
{'price': data.get('price')}, "Price of a paid/donation ticket must be greater than zero")
30+
31+
2332
class TicketListPost(ResourceList):
2433
"""
2534
Create and List Tickets
@@ -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:
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

Comments
 (0)