admin: fix duplication of fields (#11359)

This commit is contained in:
Frédéric Péters 2016-06-15 11:15:48 +02:00
parent c294c059e3
commit 5c100ef60f
2 changed files with 27 additions and 1 deletions

View File

@ -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()

View File

@ -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)