0001-lingo-show-backend-callback-URL-in-update-views-4914.patch
combo/apps/lingo/manager_views.py | ||
---|---|---|
50 | 50 |
form_class = RegieForm |
51 | 51 |
success_url = reverse_lazy('lingo-manager-regie-list') |
52 | 52 | |
53 |
def get_context_data(self, **kwargs): |
|
54 |
ctx = super().get_context_data(**kwargs) |
|
55 |
ctx['callback_url'] = self.request.build_absolute_uri(self.object.get_callback_url()) |
|
56 |
return ctx |
|
57 | ||
53 | 58 | |
54 | 59 |
class RegieDeleteView(DeleteView): |
55 | 60 |
model = Regie |
... | ... | |
74 | 79 |
form_class = PaymentBackendForm |
75 | 80 |
success_url = reverse_lazy('lingo-manager-paymentbackend-list') |
76 | 81 | |
82 |
def get_context_data(self, **kwargs): |
|
83 |
ctx = super().get_context_data(**kwargs) |
|
84 |
ctx['callback_url'] = self.request.build_absolute_uri(self.object.get_callback_url()) |
|
85 |
return ctx |
|
86 | ||
77 | 87 | |
78 | 88 |
class PaymentBackendDeleteView(DeleteView): |
79 | 89 |
model = PaymentBackend |
combo/apps/lingo/models.py | ||
---|---|---|
170 | 170 |
backend = next(serializers.deserialize('json', json.dumps([json_backend]), ignorenonexistent=True)) |
171 | 171 |
backend.save() |
172 | 172 | |
173 |
def get_callback_url(self): |
|
174 |
return reverse('lingo-callback-payment-backend', kwargs={'payment_backend_pk': self.pk}) |
|
175 | ||
173 | 176 | |
174 | 177 |
@python_2_unicode_compatible |
175 | 178 |
class Regie(models.Model): |
... | ... | |
487 | 490 |
regie = next(serializers.deserialize('json', json.dumps([json_regie]), ignorenonexistent=True)) |
488 | 491 |
regie.save() |
489 | 492 | |
493 |
def get_callback_url(self): |
|
494 |
return self.payment_backend.get_callback_url() |
|
495 | ||
490 | 496 | |
491 | 497 |
class BasketItem(models.Model): |
492 | 498 |
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True) |
combo/apps/lingo/templates/lingo/paymentbackend_form.html | ||
---|---|---|
11 | 11 | |
12 | 12 |
{% block content %} |
13 | 13 | |
14 |
{% if object.id and callback_url %} |
|
15 |
<p class="info">{% trans "Callback URL:" %} <a href="{{ callback_url }}">{{ callback_url }}</a></p> |
|
16 |
{% endif %} |
|
17 | ||
14 | 18 |
<form method="post" enctype="multipart/form-data"> |
15 | 19 |
{% csrf_token %} |
16 | 20 |
{{ form.as_p }} |
combo/apps/lingo/templates/lingo/regie_form.html | ||
---|---|---|
11 | 11 | |
12 | 12 |
{% block content %} |
13 | 13 | |
14 |
{% if object.id and callback_url %} |
|
15 |
<p class="info">{% trans "Callback URL:" %} <a href="{{ callback_url }}">{{ callback_url }}</a></p> |
|
16 |
{% endif %} |
|
17 | ||
14 | 18 |
<form method="post" enctype="multipart/form-data"> |
15 | 19 |
{% csrf_token %} |
16 | 20 |
{{ form.as_p }} |
combo/apps/lingo/views.py | ||
---|---|---|
80 | 80 |
payment_backend = regie_or_payment_backend |
81 | 81 |
if isinstance(regie_or_payment_backend, Regie): |
82 | 82 |
payment_backend = regie_or_payment_backend.payment_backend |
83 |
options = payment_backend.service_options |
|
84 |
options.update( |
|
85 |
{ |
|
86 |
'automatic_return_url': request.build_absolute_uri( |
|
87 |
reverse('lingo-callback-payment-backend', kwargs={'payment_backend_pk': payment_backend.id}) |
|
88 |
), |
|
89 |
} |
|
90 |
) |
|
83 |
options = payment_backend.service_options.copy() |
|
84 |
options['automatic_return_url'] = request.build_absolute_uri(payment_backend.get_callback_url()) |
|
91 | 85 | |
92 | 86 |
if transaction_id: |
93 | 87 |
options['normal_return_url'] = request.build_absolute_uri( |
tests/test_lingo_manager.py | ||
---|---|---|
69 | 69 |
resp = app.get('/manage/lingo/regies/', status=200) |
70 | 70 |
resp = resp.click('Test') |
71 | 71 |
assert '/manage/lingo/regies/' in resp.text |
72 | ||
73 |
# callback URL is shown |
|
74 |
assert 'Callback URL' in resp |
|
75 |
assert 'http://testserver/lingo/callback-payment-backend/%s/' % payment_backend.pk in resp |
|
76 | ||
72 | 77 |
resp.forms[0]['description'] = 'other description' |
73 | 78 |
resp = resp.forms[0].submit() |
74 | 79 |
assert resp.location.endswith('/manage/lingo/regies/') |
... | ... | |
632 | 637 |
resp = app.get('/manage/lingo/paymentbackends/%s/edit' % payment_backend.pk, status=200) |
633 | 638 |
assert '/manage/lingo/paymentbackends/' in resp.text |
634 | 639 | |
640 |
# callback URL is shown |
|
641 |
assert 'Callback URL' in resp |
|
642 |
assert 'http://testserver/lingo/callback-payment-backend/%s' % payment_backend.pk in resp |
|
643 | ||
635 | 644 |
# service cannot be changed |
636 | 645 |
assert 'disabled' in resp.form['service'].attrs |
637 | 646 | |
638 |
- |