From 9c6b6d8db77e64b1df8c08ccb3beabcdc95183a6 Mon Sep 17 00:00:00 2001 From: Serghei Mihai Date: Wed, 4 Oct 2017 13:51:54 +0200 Subject: [PATCH] ics: add formdata description with backoffice url (#18406) --- tests/test_api.py | 13 +++++++++++++ wcs/backoffice/management.py | 9 +++++++++ 2 files changed, 22 insertions(+) diff --git a/tests/test_api.py b/tests/test_api.py index 43ac6367..cd2bce4a 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -9,6 +9,7 @@ import hmac import base64 import hashlib import mock +import re import urllib import urlparse import datetime @@ -1607,10 +1608,22 @@ def test_api_ics_formdata(pub, local_user, ics_data): resp = get_app(pub).get(sign_uri('/api/forms/test/ics/foobar', user=local_user)) assert resp.headers['content-type'] == 'text/calendar; charset=utf-8' assert resp.body.count('BEGIN:VEVENT') == 10 + # check that description contains form name, display id, workflow status, + # backoffice url and attached user + pattern = re.compile('DESCRIPTION:testé \| 1-\d+ \| New\s+http://example.net/backoffice/management/test/\d+/\s+(.+)', re.MULTILINE) + m = pattern.findall(resp.body) + assert len(m) == 10 + for user in m: + assert user.strip() == 'Jean Darmette' # check with a filter resp = get_app(pub).get(sign_uri('/api/forms/test/ics/foobar?filter=done', user=local_user)) assert resp.body.count('BEGIN:VEVENT') == 20 + pattern = re.compile('DESCRIPTION:testé \| 1-\d+ \| Finished\s+http://example.net/backoffice/management/test/\d+/\s+(.+)', re.MULTILINE) + m = pattern.findall(resp.body) + assert len(m) == 20 + for user in m: + assert user.strip() == 'Jean Darmette' # check 404 on erroneous field var resp = get_app(pub).get(sign_uri('/api/forms/test/ics/xxx', user=local_user), status=404) diff --git a/wcs/backoffice/management.py b/wcs/backoffice/management.py index eb1c8b22..94b58ce1 100644 --- a/wcs/backoffice/management.py +++ b/wcs/backoffice/management.py @@ -1647,6 +1647,15 @@ class FormPage(Directory): vevent.add('dtstart').value = make_datetime(formdata.data[datefield_field_id]) vevent.dtstart.value_param = 'DATE' vevent.add('url').value = formdata.get_url(backoffice=True) + form_name = unicode(formdef.name, charset) + status_name = unicode(formdata.get_status().name, charset) + description = '%s | %s | %s' % (form_name, formdata.get_display_id(), status_name) + description = description.ljust(74, ' ') + description += formdata.get_url(backoffice=True).ljust(74, ' ') + if formdata.user_id: + description += unicode(formdata.user.get_display_name(), charset).ljust(74, ' ') + vevent.add('description') + vevent.description.value = description cal.add(vevent) get_response().set_content_type('text/calendar') -- 2.15.0.rc0