From 8f47f98adb93fcd000889b2d67634cb71465ef6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Wed, 15 Jun 2016 11:15:48 +0200 Subject: [PATCH] admin: fix duplication of fields (#11359) --- tests/test_admin_pages.py | 26 ++++++++++++++++++++++++++ wcs/admin/fields.py | 2 +- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/tests/test_admin_pages.py b/tests/test_admin_pages.py index 1b5e602..40be280 100644 --- a/tests/test_admin_pages.py +++ b/tests/test_admin_pages.py @@ -825,6 +825,32 @@ def test_form_duplicate_field(pub): assert FormDef.get(1).fields[0].label == '1st field' assert FormDef.get(1).fields[1].label == '1st field' +def test_form_duplicate_file_field(pub): + create_superuser(pub) + create_role() + + FormDef.wipe() + formdef = FormDef() + formdef.name = 'form title' + formdef.fields = [] + formdef.store() + + app = login(get_app(pub)) + resp = app.get('/backoffice/forms/1/') + resp = resp.click(href='fields/') + + # add a first field + resp.forms[0]['label'] = 'foobar' + resp.forms[0]['type'] = 'File Upload' + resp = resp.forms[0].submit() + assert resp.location == 'http://example.net/backoffice/forms/%s/fields/' % formdef.id + resp = resp.follow() + assert 'foobar' in resp.body + + resp = resp.click(href='%s/duplicate' % FormDef.get(formdef.id).fields[0].id) + assert resp.location == 'http://example.net/backoffice/forms/1/fields/' + resp = resp.follow() + def test_form_edit_field(pub): create_superuser(pub) create_role() diff --git a/wcs/admin/fields.py b/wcs/admin/fields.py index 19288d2..3dd378d 100644 --- a/wcs/admin/fields.py +++ b/wcs/admin/fields.py @@ -138,7 +138,7 @@ class FieldDefPage(Directory): def duplicate(self): field_pos = self.objectdef.fields.index(self.field) fields = self.objectdef.fields - new_field = copy.copy(self.field) + new_field = copy.deepcopy(self.field) # allocate a new id new_field.id = self.objectdef.get_new_field_id() fields.insert(field_pos+1, new_field) -- 2.8.1