From 7ad46addeea39baa82fb1fedbdf58a3a4fc1e6dd Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Thu, 26 Nov 2020 16:57:52 +0100 Subject: [PATCH] Order API: Add send_email parameter to creating payments --- doc/api/resources/orders.rst | 1 + src/pretix/api/views/order.py | 4 +++- src/tests/api/test_orders.py | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/doc/api/resources/orders.rst b/doc/api/resources/orders.rst index 802e5a9b3..0ba3a25b3 100644 --- a/doc/api/resources/orders.rst +++ b/doc/api/resources/orders.rst @@ -1976,6 +1976,7 @@ Order payment endpoints "amount": "23.00", "payment_date": "2017-12-04T12:13:12Z", "info": {}, + "send_email": false, "provider": "banktransfer" } diff --git a/src/pretix/api/views/order.py b/src/pretix/api/views/order.py index ad800a70f..892e78e8b 100644 --- a/src/pretix/api/views/order.py +++ b/src/pretix/api/views/order.py @@ -956,6 +956,7 @@ class PaymentViewSet(CreateModelMixin, viewsets.ReadOnlyModelViewSet): return order.payments.all() def create(self, request, *args, **kwargs): + send_mail = request.data.get('send_email', True) serializer = OrderPaymentCreateSerializer(data=request.data, context=self.get_serializer_context()) serializer.is_valid(raise_exception=True) with transaction.atomic(): @@ -971,7 +972,8 @@ class PaymentViewSet(CreateModelMixin, viewsets.ReadOnlyModelViewSet): user=self.request.user if self.request.user.is_authenticated else None, auth=self.request.auth, count_waitinglist=False, - force=request.data.get('force', False) + force=request.data.get('force', False), + send_mail=send_mail, ) except Quota.QuotaExceededException: pass diff --git a/src/tests/api/test_orders.py b/src/tests/api/test_orders.py index 6567f9708..7d913cbff 100644 --- a/src/tests/api/test_orders.py +++ b/src/tests/api/test_orders.py @@ -433,12 +433,14 @@ def test_payment_detail(token_client, organizer, event, order): @pytest.mark.django_db def test_payment_create_confirmed(token_client, organizer, event, order): + djmail.outbox = [] resp = token_client.post('/api/v1/organizers/{}/events/{}/orders/{}/payments/'.format( organizer.slug, event.slug, order.code ), format='json', data={ 'provider': 'banktransfer', 'state': 'confirmed', 'amount': order.total, + 'send_email': False, 'info': { 'foo': 'bar' } @@ -450,6 +452,7 @@ def test_payment_create_confirmed(token_client, organizer, event, order): assert p.info_data == {'foo': 'bar'} order.refresh_from_db() assert order.status == Order.STATUS_PAID + assert len(djmail.outbox) == 0 @pytest.mark.django_db