Projet

Général

Profil

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

Benjamin Dauvergne, 10 mai 2021 13:16

Télécharger (5,76 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                        | 15 ++++++++++-----
 .../templates/lingo/paymentbackend_form.html      |  4 +++-
 combo/apps/lingo/templates/lingo/regie_form.html  |  4 +++-
 tests/test_lingo_manager.py                       |  9 +++++++++
 5 files changed, 35 insertions(+), 7 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.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.callback_url)
85
        return ctx
86

  
77 87

  
78 88
class PaymentBackendDeleteView(DeleteView):
79 89
    model = PaymentBackend
combo/apps/lingo/models.py
172 172
            options = {}
173 173
        if request:
174 174
            if not automatic_return_url:
175
                automatic_return_url = reverse(
176
                    'lingo-callback-payment-backend', kwargs={'payment_backend_pk': self.id}
177
                )
178

  
175
                automatic_return_url = self.callback_url
179 176
            if automatic_return_url:
180 177
                automatic_return_url = request.build_absolute_uri(automatic_return_url)
181 178
            if normal_return_url:
182 179
                normal_return_url = request.build_absolute_uri(normal_return_url)
180
                options['normal_return_url'] = normal_return_url
183 181
            options['automatic_return_url'] = automatic_return_url
184
            options['normal_return_url'] = normal_return_url
185 182
        else:
186 183
            assert (
187 184
                not automatic_return_url and not normal_return_url
......
280 277
                last_pk = transaction.pk
281 278
                transaction.poll_backend(ignore_errors=False)
282 279

  
280
    @property
281
    def callback_url(self):
282
        return reverse('lingo-callback-payment-backend', kwargs={'payment_backend_pk': self.pk})
283

  
283 284

  
284 285
@python_2_unicode_compatible
285 286
class Regie(models.Model):
......
606 607
    def make_eopayment(self, **kwargs):
607 608
        return self.payment_backend.make_eopayment(**kwargs)
608 609

  
610
    @property
611
    def callback_url(self):
612
        return self.payment_backend.callback_url
613

  
609 614

  
610 615
class BasketItem(models.Model):
611 616
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True)
combo/apps/lingo/templates/lingo/paymentbackend_form.html
10 10
{% endblock %}
11 11

  
12 12
{% block content %}
13

  
14 13
<form method="post" enctype="multipart/form-data">
14
  {% if object.id and callback_url %}
15
    <p><label>{% trans "Callback URL:" %}</label> <a href="{{ callback_url }}">{{ callback_url }}</a></p>
16
  {% endif %}
15 17
  {% csrf_token %}
16 18
  {{ form.as_p }}
17 19
  <div class="buttons">
combo/apps/lingo/templates/lingo/regie_form.html
10 10
{% endblock %}
11 11

  
12 12
{% block content %}
13

  
14 13
<form method="post" enctype="multipart/form-data">
14
  {% if object.id and callback_url %}
15
    <p><label>{% trans "Callback URL:" %}</label> <a href="{{ callback_url }}">{{ callback_url }}</a></p>
16
  {% endif %}
15 17
  {% csrf_token %}
16 18
  {{ form.as_p }}
17 19
  <div class="buttons">
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
-