0001-manager-add-ReturnURL-in-booking-form-url-52786.patch
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 |
- |