diff --git a/app/api/tickets.py b/app/api/tickets.py index b9f5c86864..e762eaf40c 100644 --- a/app/api/tickets.py +++ b/app/api/tickets.py @@ -77,6 +77,13 @@ def before_create_object(self, data, view_kwargs): "Event having paid ticket must have a payment method", ) + if data.get('type') == 'donation': + if not event.is_payment_enabled(): + raise UnprocessableEntity( + {'event_id': data['event']}, + "Event having donation ticket must have a payment method", + ) + if data.get('sales_ends_at') > event.ends_at: raise UnprocessableEntity( {'sales_ends_at': '/data/attributes/sales-ends-at'}, @@ -248,6 +255,23 @@ def before_update_object(self, ticket, data, view_kwargs): "Event having paid ticket must have a payment method", ) + if ticket.type == 'donation': + try: + event = ( + db.session.query(Event) + .filter_by(id=ticket.event.id, deleted_at=None) + .one() + ) + except NoResultFound: + raise UnprocessableEntity( + {'event_id': ticket.event.id}, "Event does not exist" + ) + if not event.is_payment_enabled(): + raise UnprocessableEntity( + {'event_id': ticket.event.id}, + "Event having donation ticket must have a payment method", + ) + decorators = ( api.has_permission( 'is_coorganizer',