From 3c135a6605eb00ef7cc540e0f00673689aea5f0d 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 | 11 +++++++++++ wcs/backoffice/management.py | 7 +++++++ 2 files changed, 18 insertions(+) diff --git a/tests/test_api.py b/tests/test_api.py index 43ac6367..6954c48b 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,20 @@ 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', re.MULTILINE) + m = pattern.findall(resp.body) + assert len(m) == 10 + assert resp.body.count('Jean Darmette') == 10 # 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', re.MULTILINE) + m = pattern.findall(resp.body) + assert len(m) == 20 + assert resp.body.count('Jean Darmette') == 20 # 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..1e0407b8 100644 --- a/wcs/backoffice/management.py +++ b/wcs/backoffice/management.py @@ -1647,6 +1647,13 @@ 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\n' % (form_name, formdata.get_display_id(), status_name) + description += formdata.get_url(backoffice=True) + if formdata.user_id: + description += '\n%s' % unicode(formdata.user.get_display_name(), charset) + vevent.add('description').value = description cal.add(vevent) get_response().set_content_type('text/calendar') -- 2.15.0.rc2