Projet

Général

Profil

0001-admin-fix-duplication-of-fields-11359.patch

Frédéric Péters, 15 juin 2016 11:20

Télécharger (2,12 ko)

Voir les différences:

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(-)
tests/test_admin_pages.py
825 825
    assert FormDef.get(1).fields[0].label == '1st field'
826 826
    assert FormDef.get(1).fields[1].label == '1st field'
827 827

  
828
def test_form_duplicate_file_field(pub):
829
    create_superuser(pub)
830
    create_role()
831

  
832
    FormDef.wipe()
833
    formdef = FormDef()
834
    formdef.name = 'form title'
835
    formdef.fields = []
836
    formdef.store()
837

  
838
    app = login(get_app(pub))
839
    resp = app.get('/backoffice/forms/1/')
840
    resp = resp.click(href='fields/')
841

  
842
    # add a first field
843
    resp.forms[0]['label'] = 'foobar'
844
    resp.forms[0]['type'] = 'File Upload'
845
    resp = resp.forms[0].submit()
846
    assert resp.location == 'http://example.net/backoffice/forms/%s/fields/' % formdef.id
847
    resp = resp.follow()
848
    assert 'foobar' in resp.body
849

  
850
    resp = resp.click(href='%s/duplicate' % FormDef.get(formdef.id).fields[0].id)
851
    assert resp.location == 'http://example.net/backoffice/forms/1/fields/'
852
    resp = resp.follow()
853

  
828 854
def test_form_edit_field(pub):
829 855
    create_superuser(pub)
830 856
    create_role()
wcs/admin/fields.py
138 138
    def duplicate(self):
139 139
        field_pos = self.objectdef.fields.index(self.field)
140 140
        fields = self.objectdef.fields
141
        new_field = copy.copy(self.field)
141
        new_field = copy.deepcopy(self.field)
142 142
        # allocate a new id
143 143
        new_field.id = self.objectdef.get_new_field_id()
144 144
        fields.insert(field_pos+1, new_field)
145
-