From d5711fac6913f869dcb136e1903b151cf48b907d Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Thu, 6 May 2021 17:45:56 +0200 Subject: [PATCH 3/3] lingo: use payment backend's slug in default callback URL (#49145) --- combo/apps/lingo/models.py | 6 ++++-- combo/apps/lingo/urls.py | 2 +- tests/test_lingo_manager.py | 4 ++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/combo/apps/lingo/models.py b/combo/apps/lingo/models.py index 1a101a4c..4fca4084 100644 --- a/combo/apps/lingo/models.py +++ b/combo/apps/lingo/models.py @@ -116,7 +116,9 @@ class PaymentBackendManager(models.Manager): class PaymentBackend(models.Model): label = models.CharField(verbose_name=_('Label'), max_length=64) slug = models.SlugField( - unique=True, verbose_name=_('Identifier'), help_text=_('The identifier is used in webservice calls.') + unique=True, + verbose_name=_('Identifier'), + help_text=_('The identifier is used in webservice calls and callback URLs for the payment backend.'), ) service = models.CharField(verbose_name=_('Payment Service'), max_length=64, choices=SERVICES) service_options = JSONField(blank=True, verbose_name=_('Payment Service Options')) @@ -171,7 +173,7 @@ class PaymentBackend(models.Model): backend.save() def get_callback_url(self): - return reverse('lingo-callback-payment-backend', kwargs={'payment_backend_pk': self.pk}) + return reverse('lingo-callback-payment-backend', kwargs={'payment_backend_pk': self.slug}) @python_2_unicode_compatible diff --git a/combo/apps/lingo/urls.py b/combo/apps/lingo/urls.py index 0363b13a..e7b5ed71 100644 --- a/combo/apps/lingo/urls.py +++ b/combo/apps/lingo/urls.py @@ -100,7 +100,7 @@ urlpatterns = [ url(r'^lingo/cancel/(?P\w+)/$', CancelItemView.as_view(), name='lingo-cancel-item'), url(r'^lingo/callback/(?P\w+)/$', CallbackView.as_view(), name='lingo-callback'), url( - r'^lingo/callback-payment-backend/(?P\w+)/$', + r'^lingo/callback-payment-backend/(?P[A-Za-z0-9_-]+)/$', CallbackView.as_view(), name='lingo-callback-payment-backend', ), diff --git a/tests/test_lingo_manager.py b/tests/test_lingo_manager.py index d3516d8e..41041ea6 100644 --- a/tests/test_lingo_manager.py +++ b/tests/test_lingo_manager.py @@ -72,7 +72,7 @@ def test_edit_regie(app, admin_user, payment_backend): # callback URL is shown assert 'Callback URL' in resp - assert 'http://testserver/lingo/callback-payment-backend/%s/' % payment_backend.pk in resp + assert 'http://testserver/lingo/callback-payment-backend/%s/' % payment_backend.slug in resp resp.forms[0]['description'] = 'other description' resp = resp.forms[0].submit() @@ -639,7 +639,7 @@ def test_edit_payment_backend(app, admin_user): # callback URL is shown assert 'Callback URL' in resp - assert 'http://testserver/lingo/callback-payment-backend/%s' % payment_backend.pk in resp + assert 'http://testserver/lingo/callback-payment-backend/%s' % payment_backend.slug in resp # service cannot be changed assert 'disabled' in resp.form['service'].attrs -- 2.31.1