Projet

Général

Profil

0001-lingo-show-backend-callback-URL-in-update-views-4914.patch

Benjamin Dauvergne, 06 mai 2021 17:51

Télécharger (5,86 ko)

Voir les différences:

Subject: [PATCH 1/3] lingo: show backend callback URL in update views (#49145)

 combo/apps/lingo/manager_views.py                      | 10 ++++++++++
 combo/apps/lingo/models.py                             |  6 ++++++
 .../lingo/templates/lingo/paymentbackend_form.html     |  4 ++++
 combo/apps/lingo/templates/lingo/regie_form.html       |  4 ++++
 combo/apps/lingo/views.py                              | 10 ++--------
 tests/test_lingo_manager.py                            |  9 +++++++++
 6 files changed, 35 insertions(+), 8 deletions(-)
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
-