manager: add ReturnURL in booking form url (#52786)

This commit is contained in:
Lauréline Guérin 2021-05-06 16:37:03 +02:00
parent f1b62254e5
commit 853f1b31f1
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
4 changed files with 29 additions and 10 deletions

View File

@ -43,6 +43,7 @@ from django.utils.encoding import force_text
from django.utils.formats import date_format
from django.utils.functional import cached_property
from django.utils.module_loading import import_string
from django.utils.safestring import mark_safe
from django.utils.text import slugify
from django.utils.timezone import is_aware, localtime, make_aware, make_naive, now, utc
from django.utils.translation import ugettext
@ -1353,6 +1354,18 @@ class Event(models.Model):
def get_absolute_view_url(self):
return reverse('chrono-manager-event-view', kwargs={'pk': self.agenda.id, 'event_pk': self.id})
def get_booking_form_url(self):
if not self.agenda.booking_form_url:
return
template_vars = Context(settings.TEMPLATE_VARS)
try:
url = Template(self.agenda.booking_form_url).render(template_vars)
url += '&' if '?' in url else '?'
url += 'agenda=%s&event=%s' % (self.agenda.slug, self.slug)
return mark_safe(url)
except (VariableDoesNotExist, TemplateSyntaxError):
return
@classmethod
def import_json(cls, data):
data['start_datetime'] = make_aware(

View File

@ -49,7 +49,7 @@
{% if view_mode == 'settings_view' %}
<a rel="popup" class="delete" href="{% url 'chrono-manager-event-delete' pk=agenda.pk event_pk=event.pk %}?next=settings">{% trans "remove" %}</a>
{% elif agenda.booking_form_url %}
<a class="link-action-text" href="{{ agenda.get_booking_form_url }}?agenda={{ agenda.slug }}&event={{ event.slug }}">{% trans "Booking form" %}</a>
<a class="link-action-text" href="{{ event.get_booking_form_url }}&ReturnURL={{ request.build_absolute_uri }}">{% trans "Booking form" %}</a>
{% endif %}
<span class="occupation-bar"></span>
</li>

View File

@ -42,7 +42,7 @@
<a href="{% url 'chrono-manager-event-check' pk=agenda.pk event_pk=object.pk %}">{% trans "Check" %}</a>
{% endif %}
{% if object.agenda.booking_form_url %}
<a href="{{ object.agenda.get_booking_form_url }}?agenda={{ object.agenda.slug }}&event={{ event.slug }}">{% trans "Booking form" %}</a>
<a href="{{ object.get_booking_form_url }}&ReturnURL={{ request.build_absolute_uri }}">{% trans "Booking form" %}</a>
{% endif %}
</span>
{% endblock %}

View File

@ -987,7 +987,7 @@ def test_event_booking_form_url(settings, app, admin_user):
login(app)
assert agenda.get_booking_form_url() is None
assert event.get_booking_form_url() is None
resp = app.get('/manage/agendas/%d/%d/%d/' % (agenda.pk, day.year, day.month))
assert 'Booking form' not in resp.text
resp = app.get('/manage/agendas/%d/events/open/' % agenda.pk)
@ -998,24 +998,30 @@ def test_event_booking_form_url(settings, app, admin_user):
agenda.booking_form_url = '{{ eservices_url }}backoffice/submission/inscription-aux-activites/'
agenda.save()
assert (
agenda.get_booking_form_url() == 'http://demarches/backoffice/submission/inscription-aux-activites/'
event.get_booking_form_url()
== 'http://demarches/backoffice/submission/inscription-aux-activites/?agenda=%s&event=%s'
% (agenda.slug, event.slug)
)
resp = app.get('/manage/agendas/%d/%d/%d/' % (agenda.pk, day.year, day.month))
assert (
'<a class="link-action-text" href="http://demarches/backoffice/submission/inscription-aux-activites/?agenda=%s&event=%s">Booking form</a>'
% (agenda.slug, event.slug)
'<a class="link-action-text" href="http://demarches/backoffice/submission/inscription-aux-activites/?agenda=%s&event=%s&ReturnURL=%s">Booking form</a>'
% (
agenda.slug,
event.slug,
'http://testserver/manage/agendas/%d/%d/%d/' % (agenda.pk, day.year, day.month),
)
in resp.text
)
resp = app.get('/manage/agendas/%d/events/open/' % agenda.pk)
assert (
'<a class="link-action-text" href="http://demarches/backoffice/submission/inscription-aux-activites/?agenda=%s&event=%s">Booking form</a>'
% (agenda.slug, event.slug)
'<a class="link-action-text" href="http://demarches/backoffice/submission/inscription-aux-activites/?agenda=%s&event=%s&ReturnURL=%s">Booking form</a>'
% (agenda.slug, event.slug, 'http://testserver/manage/agendas/%d/events/open/' % agenda.pk)
in resp.text
)
resp = app.get('/manage/agendas/%d/events/%d/' % (agenda.pk, event.pk))
assert (
'<a href="http://demarches/backoffice/submission/inscription-aux-activites/?agenda=%s&event=%s">Booking form</a>'
% (agenda.slug, event.slug)
'<a href="http://demarches/backoffice/submission/inscription-aux-activites/?agenda=%s&event=%s&ReturnURL=%s">Booking form</a>'
% (agenda.slug, event.slug, 'http://testserver/manage/agendas/%d/events/%d/' % (agenda.pk, event.pk))
in resp.text
)