lingo: show backend callback URL in update views (#49145)

This commit is contained in:
Benjamin Dauvergne 2020-12-05 08:17:04 +01:00
parent 829fc79e8e
commit 2bfb96ea95
5 changed files with 35 additions and 7 deletions

View File

@ -50,6 +50,11 @@ 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.callback_url)
return ctx
class RegieDeleteView(DeleteView):
model = Regie
@ -74,6 +79,11 @@ 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.callback_url)
return ctx
class PaymentBackendDeleteView(DeleteView):
model = PaymentBackend

View File

@ -172,16 +172,13 @@ class PaymentBackend(models.Model):
options = {}
if request:
if not automatic_return_url:
automatic_return_url = reverse(
'lingo-callback-payment-backend', kwargs={'payment_backend_pk': self.id}
)
automatic_return_url = self.callback_url
if automatic_return_url:
automatic_return_url = request.build_absolute_uri(automatic_return_url)
if normal_return_url:
normal_return_url = request.build_absolute_uri(normal_return_url)
options['normal_return_url'] = normal_return_url
options['automatic_return_url'] = automatic_return_url
options['normal_return_url'] = normal_return_url
else:
assert (
not automatic_return_url and not normal_return_url
@ -280,6 +277,10 @@ class PaymentBackend(models.Model):
last_pk = transaction.pk
transaction.poll_backend(ignore_errors=False)
@property
def callback_url(self):
return reverse('lingo-callback-payment-backend', kwargs={'payment_backend_pk': self.pk})
@python_2_unicode_compatible
class Regie(models.Model):
@ -606,6 +607,10 @@ class Regie(models.Model):
def make_eopayment(self, **kwargs):
return self.payment_backend.make_eopayment(**kwargs)
@property
def callback_url(self):
return self.payment_backend.callback_url
class BasketItem(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True)

View File

@ -10,8 +10,10 @@
{% endblock %}
{% block content %}
<form method="post" enctype="multipart/form-data">
{% if object.id and callback_url %}
<p><label>{% trans "Callback URL:" %}</label> <a href="{{ callback_url }}">{{ callback_url }}</a></p>
{% endif %}
{% csrf_token %}
{{ form.as_p }}
<div class="buttons">

View File

@ -10,8 +10,10 @@
{% endblock %}
{% block content %}
<form method="post" enctype="multipart/form-data">
{% if object.id and callback_url %}
<p><label>{% trans "Callback URL:" %}</label> <a href="{{ callback_url }}">{{ callback_url }}</a></p>
{% endif %}
{% csrf_token %}
{{ form.as_p }}
<div class="buttons">

View File

@ -69,6 +69,11 @@ def test_edit_regie(app, admin_user, payment_backend):
resp = app.get('/manage/lingo/regies/', status=200)
resp = resp.click('Test')
assert '/manage/lingo/regies/' in resp.text
# callback URL is shown
assert 'Callback URL' in resp
assert 'http://testserver/lingo/callback-payment-backend/%s/' % payment_backend.pk in resp
resp.forms[0]['description'] = 'other description'
resp = resp.forms[0].submit()
assert resp.location.endswith('/manage/lingo/regies/')
@ -632,6 +637,10 @@ def test_edit_payment_backend(app, admin_user):
resp = app.get('/manage/lingo/paymentbackends/%s/edit' % payment_backend.pk, status=200)
assert '/manage/lingo/paymentbackends/' in resp.text
# callback URL is shown
assert 'Callback URL' in resp
assert 'http://testserver/lingo/callback-payment-backend/%s' % payment_backend.pk in resp
# service cannot be changed
assert 'disabled' in resp.form['service'].attrs