From d5ec8ba45fabd3183e7dbcb9769f7f04e73f0bfc Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Tue, 2 Feb 2016 19:16:43 +0100 Subject: [PATCH 2/2] export workflow in formdef json exports (fixes #9849) --- tests/test_api.py | 24 ++++++++++++++++++++++++ wcs/formdef.py | 1 + 2 files changed, 25 insertions(+) diff --git a/tests/test_api.py b/tests/test_api.py index 0954ae9..c8a264e 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -8,6 +8,7 @@ import urllib import urlparse import datetime import time +import json from quixote import cleanup, get_publisher from wcs.qommon.http_request import HTTPRequest @@ -820,3 +821,26 @@ def test_workflow_trigger(pub, local_user): formdata.store() # (will get back to wf-st1) resp = get_app(pub).post(sign_uri(formdata.get_url() + 'jump/trigger/XXX'), status=403) + +def test_formdefs_api(pub, local_user): + workflow = Workflow(name='test') + st1 = workflow.add_status('Status1', 'st1') + st2 = workflow.add_status('Status2', 'st2') + workflow.store() + + FormDef.wipe() + formdef = FormDef() + formdef.name = 'test' + formdef.fields = [] + formdef.workflow_id = workflow.id + formdef.store() + + resp = get_app(pub).get(sign_uri('/api/formdefs/test/schema', user=local_user)) + assert set(resp.json.keys()) == set(['enable_tracking_codes', 'url_name', 'workflow_schema', + 'description', 'workflow', 'expiration_date', 'discussion', + 'last_modification_time', 'has_captcha', 'always_advertise', + 'name', 'disabled', 'workflow_id', 'only_allow_one', + 'private_status_and_history', 'fields', 'keywords', + 'publication_date', 'detailed_emails', + 'disabled_redirection']) + assert len(resp.json['workflow_schema']['statuses']) == 2 diff --git a/wcs/formdef.py b/wcs/formdef.py index 7ac26d1..0082a09 100644 --- a/wcs/formdef.py +++ b/wcs/formdef.py @@ -525,6 +525,7 @@ class FormDef(StorableObject): if self.workflow: root['workflow'] = unicode(self.workflow.name, charset) root['workflow_id'] = str(self.workflow.id) + root['workflow_schema'] = self.workflow.to_dict(include_id=include_id) if self.max_field_id is None and self.fields: self.max_field_id = max([lax_int(x.id) for x in self.fields]) -- 2.1.4