From 00514516e1aa6f02e2a11e01ddcdc7c5ec54843d Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Sat, 5 Dec 2020 08:17:04 +0100 Subject: [PATCH] lingo: show backend callback URL in update views (#49145) --- combo/apps/lingo/manager_views.py | 12 ++++++++++++ combo/apps/lingo/models.py | 7 +++++++ .../lingo/templates/lingo/paymentbackend_form.html | 4 ++++ combo/apps/lingo/templates/lingo/regie_form.html | 4 ++++ combo/apps/lingo/views.py | 7 ++----- 5 files changed, 29 insertions(+), 5 deletions(-) diff --git a/combo/apps/lingo/manager_views.py b/combo/apps/lingo/manager_views.py index c1f6f126..542b0ac8 100644 --- a/combo/apps/lingo/manager_views.py +++ b/combo/apps/lingo/manager_views.py @@ -54,6 +54,12 @@ class RegieUpdateView(UpdateView): form_class = RegieForm success_url = reverse_lazy('lingo-manager-regie-list') + def get_context_data(self, **kwargs): + ctx = super().get_context_data(**kwargs) + ctx['callback_url'] = self.request.build_absolute_uri( + self.object.get_callback_url()) + return ctx + class RegieDeleteView(DeleteView): model = Regie @@ -78,6 +84,12 @@ class PaymentBackendUpdateView(UpdateView): form_class = PaymentBackendForm success_url = reverse_lazy('lingo-manager-paymentbackend-list') + def get_context_data(self, **kwargs): + ctx = super().get_context_data(**kwargs) + ctx['callback_url'] = self.request.build_absolute_uri( + self.object.get_callback_url()) + return ctx + class PaymentBackendDeleteView(DeleteView): model = PaymentBackend diff --git a/combo/apps/lingo/models.py b/combo/apps/lingo/models.py index 52cd9bf5..8cb6bd35 100644 --- a/combo/apps/lingo/models.py +++ b/combo/apps/lingo/models.py @@ -168,6 +168,10 @@ class PaymentBackend(models.Model): backend = next(serializers.deserialize('json', json.dumps([json_backend]), ignorenonexistent=True)) backend.save() + def get_callback_url(self): + return reverse('lingo-callback-payment-backend', kwargs={ + 'payment_backend_pk': self.pk}) + @python_2_unicode_compatible class Regie(models.Model): @@ -469,6 +473,9 @@ class Regie(models.Model): regie = next(serializers.deserialize('json', json.dumps([json_regie]), ignorenonexistent=True)) regie.save() + def get_callback_url(self): + return self.payment_backend.get_callback_url() + class BasketItem(models.Model): user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True) diff --git a/combo/apps/lingo/templates/lingo/paymentbackend_form.html b/combo/apps/lingo/templates/lingo/paymentbackend_form.html index 41ea23c4..e59e16fc 100644 --- a/combo/apps/lingo/templates/lingo/paymentbackend_form.html +++ b/combo/apps/lingo/templates/lingo/paymentbackend_form.html @@ -11,6 +11,10 @@ {% block content %} +{% if object.id and callback_url %} +

{% trans "Callback URL:" %} {{ callback_url }}

+{% endif %} +
{% csrf_token %} {{ form.as_p }} diff --git a/combo/apps/lingo/templates/lingo/regie_form.html b/combo/apps/lingo/templates/lingo/regie_form.html index 5d4442b4..527283fc 100644 --- a/combo/apps/lingo/templates/lingo/regie_form.html +++ b/combo/apps/lingo/templates/lingo/regie_form.html @@ -11,6 +11,10 @@ {% block content %} +{% if object.id and callback_url %} +

{% trans "Callback URL:" %} {{ callback_url }}

+{% endif %} + {% csrf_token %} {{ form.as_p }} diff --git a/combo/apps/lingo/views.py b/combo/apps/lingo/views.py index 124d01bc..d84f77cd 100644 --- a/combo/apps/lingo/views.py +++ b/combo/apps/lingo/views.py @@ -68,11 +68,8 @@ def get_eopayment_object(request, regie_or_payment_backend, transaction_id=None) if isinstance(regie_or_payment_backend, Regie): payment_backend = regie_or_payment_backend.payment_backend options = payment_backend.service_options - options.update({ - 'automatic_return_url': request.build_absolute_uri( - reverse('lingo-callback-payment-backend', - kwargs={'payment_backend_pk': payment_backend.id})), - }) + options['automatic_return_url'] = request.build_absolute_uri( + payment_backend.get_callback_url()) if transaction_id: options['normal_return_url'] = request.build_absolute_uri( -- 2.29.2