Projet

Général

Profil

0001-manager-add-ReturnURL-in-booking-form-url-52786.patch

Lauréline Guérin, 06 mai 2021 16:37

Télécharger (6,94 ko)

Voir les différences:

Subject: [PATCH] manager: add ReturnURL in booking form url (#52786)

 chrono/agendas/models.py                      | 22 +++++++++++--------
 .../chrono/manager_agenda_event_fragment.html |  2 +-
 .../chrono/manager_event_detail.html          |  2 +-
 tests/manager/test_event.py                   | 22 ++++++++++++-------
 4 files changed, 29 insertions(+), 19 deletions(-)
chrono/agendas/models.py
43 43
from django.utils.formats import date_format
44 44
from django.utils.functional import cached_property
45 45
from django.utils.module_loading import import_string
46
from django.utils.safestring import mark_safe
46 47
from django.utils.text import slugify
47 48
from django.utils.timezone import is_aware, localtime, make_aware, make_naive, now, utc
48 49
from django.utils.translation import ugettext
......
705 706
            recurring_events.filter(recurrence_end_date__isnull=False), excluded_datetimes
706 707
        )
707 708

  
708
    def get_booking_form_url(self):
709
        if not self.booking_form_url:
710
            return
711
        template_vars = Context(settings.TEMPLATE_VARS)
712
        try:
713
            return Template(self.booking_form_url).render(template_vars)
714
        except (VariableDoesNotExist, TemplateSyntaxError):
715
            return
716

  
717 709
    def get_recurrence_exceptions(self, min_start, max_start):
718 710
        return TimePeriodException.objects.filter(
719 711
            Q(desk__slug='_exceptions_holder', desk__agenda=self)
......
1341 1333
    def get_absolute_view_url(self):
1342 1334
        return reverse('chrono-manager-event-view', kwargs={'pk': self.agenda.id, 'event_pk': self.id})
1343 1335

  
1336
    def get_booking_form_url(self):
1337
        if not self.agenda.booking_form_url:
1338
            return
1339
        template_vars = Context(settings.TEMPLATE_VARS)
1340
        try:
1341
            url = Template(self.agenda.booking_form_url).render(template_vars)
1342
            url += '&' if '?' in url else '?'
1343
            url += 'agenda=%s&event=%s' % (self.agenda.slug, self.slug)
1344
            return mark_safe(url)
1345
        except (VariableDoesNotExist, TemplateSyntaxError):
1346
            return
1347

  
1344 1348
    @classmethod
1345 1349
    def import_json(cls, data):
1346 1350
        data['start_datetime'] = make_aware(
chrono/manager/templates/chrono/manager_agenda_event_fragment.html
49 49
    {% if view_mode == 'settings_view' %}
50 50
    <a rel="popup" class="delete" href="{% url 'chrono-manager-event-delete' pk=agenda.pk event_pk=event.pk %}?next=settings">{% trans "remove" %}</a>
51 51
    {% elif agenda.booking_form_url %}
52
    <a class="link-action-text" href="{{ agenda.get_booking_form_url }}?agenda={{ agenda.slug }}&event={{ event.slug }}">{% trans "Booking form" %}</a>
52
    <a class="link-action-text" href="{{ event.get_booking_form_url }}&ReturnURL={{ request.get_raw_uri }}">{% trans "Booking form" %}</a>
53 53
    {% endif %}
54 54
    <span class="occupation-bar"></span>
55 55
</li>
chrono/manager/templates/chrono/manager_event_detail.html
42 42
<a href="{% url 'chrono-manager-event-edit' pk=agenda.id event_pk=object.id %}">{% trans "Options" %}</a>
43 43
{% endif %}
44 44
{% if object.agenda.booking_form_url %}
45
<a href="{{ object.agenda.get_booking_form_url }}?agenda={{ object.agenda.slug }}&event={{ event.slug }}">{% trans "Booking form" %}</a>
45
<a href="{{ object.get_booking_form_url }}&ReturnURL={{ request.get_raw_uri }}">{% trans "Booking form" %}</a>
46 46
{% endif %}
47 47
</span>
48 48
{% endblock %}
tests/manager/test_event.py
987 987

  
988 988
    login(app)
989 989

  
990
    assert agenda.get_booking_form_url() is None
990
    assert event.get_booking_form_url() is None
991 991
    resp = app.get('/manage/agendas/%d/%d/%d/' % (agenda.pk, day.year, day.month))
992 992
    assert 'Booking form' not in resp.text
993 993
    resp = app.get('/manage/agendas/%d/events/open/' % agenda.pk)
......
998 998
    agenda.booking_form_url = '{{ eservices_url }}backoffice/submission/inscription-aux-activites/'
999 999
    agenda.save()
1000 1000
    assert (
1001
        agenda.get_booking_form_url() == 'http://demarches/backoffice/submission/inscription-aux-activites/'
1001
        event.get_booking_form_url()
1002
        == 'http://demarches/backoffice/submission/inscription-aux-activites/?agenda=%s&event=%s'
1003
        % (agenda.slug, event.slug)
1002 1004
    )
1003 1005
    resp = app.get('/manage/agendas/%d/%d/%d/' % (agenda.pk, day.year, day.month))
1004 1006
    assert (
1005
        '<a class="link-action-text" href="http://demarches/backoffice/submission/inscription-aux-activites/?agenda=%s&event=%s">Booking form</a>'
1006
        % (agenda.slug, event.slug)
1007
        '<a class="link-action-text" href="http://demarches/backoffice/submission/inscription-aux-activites/?agenda=%s&event=%s&ReturnURL=%s">Booking form</a>'
1008
        % (
1009
            agenda.slug,
1010
            event.slug,
1011
            'http://testserver/manage/agendas/%d/%d/%d/' % (agenda.pk, day.year, day.month),
1012
        )
1007 1013
        in resp.text
1008 1014
    )
1009 1015
    resp = app.get('/manage/agendas/%d/events/open/' % agenda.pk)
1010 1016
    assert (
1011
        '<a class="link-action-text" href="http://demarches/backoffice/submission/inscription-aux-activites/?agenda=%s&event=%s">Booking form</a>'
1012
        % (agenda.slug, event.slug)
1017
        '<a class="link-action-text" href="http://demarches/backoffice/submission/inscription-aux-activites/?agenda=%s&event=%s&ReturnURL=%s">Booking form</a>'
1018
        % (agenda.slug, event.slug, 'http://testserver/manage/agendas/%d/events/open/' % agenda.pk)
1013 1019
        in resp.text
1014 1020
    )
1015 1021
    resp = app.get('/manage/agendas/%d/events/%d/' % (agenda.pk, event.pk))
1016 1022
    assert (
1017
        '<a href="http://demarches/backoffice/submission/inscription-aux-activites/?agenda=%s&event=%s">Booking form</a>'
1018
        % (agenda.slug, event.slug)
1023
        '<a href="http://demarches/backoffice/submission/inscription-aux-activites/?agenda=%s&event=%s&ReturnURL=%s">Booking form</a>'
1024
        % (agenda.slug, event.slug, 'http://testserver/manage/agendas/%d/events/%d/' % (agenda.pk, event.pk))
1019 1025
        in resp.text
1020 1026
    )
1021 1027

  
1022
-