0001-backoffice-warn-about-data-deletion-when-removing-a-.patch
tests/test_admin_pages.py | ||
---|---|---|
1075 | 1075 |
assert '<h3 data-field-id="1">baz</h3>' in resp.body |
1076 | 1076 | |
1077 | 1077 |
def test_form_delete_field(pub): |
1078 |
create_superuser(pub) |
|
1078 | 1079 |
create_role() |
1079 | 1080 | |
1080 | 1081 |
FormDef.wipe() |
... | ... | |
1090 | 1091 |
assert 'Use drag and drop' in resp.body |
1091 | 1092 | |
1092 | 1093 |
resp = resp.click(href='1/delete') |
1094 |
assert 'You are about to remove the "1st field" field.' in resp.body |
|
1095 |
assert 'Warning:' not in resp.body |
|
1096 |
resp = resp.forms[0].submit() |
|
1097 |
assert resp.location == 'http://example.net/backoffice/forms/1/fields/' |
|
1098 |
resp = resp.follow() |
|
1099 |
assert len(FormDef.get(1).fields) == 0 |
|
1100 | ||
1101 |
def test_form_delete_field_existing_data(pub): |
|
1102 |
create_superuser(pub) |
|
1103 |
create_role() |
|
1104 | ||
1105 |
FormDef.wipe() |
|
1106 |
formdef = FormDef() |
|
1107 |
formdef.name = 'form title' |
|
1108 |
formdef.fields = [fields.StringField(id='1', label='1st field', type='string')] |
|
1109 |
formdef.store() |
|
1110 | ||
1111 |
formdata = formdef.data_class()() |
|
1112 |
formdata.just_created() |
|
1113 |
formdata.data = {'1': 'hello'} |
|
1114 |
formdata.store() |
|
1115 | ||
1116 |
app = login(get_app(pub)) |
|
1117 |
resp = app.get('/backoffice/forms/1/') |
|
1118 |
resp = resp.click(href='fields/') |
|
1119 |
resp = resp.click(href='1/delete') |
|
1120 |
assert 'You are about to remove the "1st field" field.' in resp.body |
|
1121 |
assert 'Warning:' in resp.body |
|
1093 | 1122 |
resp = resp.forms[0].submit() |
1094 | 1123 |
assert resp.location == 'http://example.net/backoffice/forms/1/fields/' |
1095 | 1124 |
resp = resp.follow() |
... | ... | |
2553 | 2582 |
assert 'foobar' in resp.body |
2554 | 2583 |
resp = resp.click('Edit') |
2555 | 2584 |
assert not 'in_listing' in resp.form.fields.keys() |
2585 |
resp = resp.form.submit('cancel') |
|
2586 |
resp = resp.follow() |
|
2587 |
resp = resp.click('Remove') |
|
2588 |
assert 'You are about to remove the "foobar" field.' in resp.body |
|
2589 |
assert not 'Warning:' in resp.body |
|
2556 | 2590 | |
2557 | 2591 |
def test_workflows_edit_choice_action(pub): |
2558 | 2592 |
create_superuser(pub) |
wcs/admin/fields.py | ||
---|---|---|
98 | 98 |
setattr(self.field, f.replace('-', '_'), widget.parse()) |
99 | 99 |
self.objectdef.store() |
100 | 100 | |
101 |
def get_deletion_extra_warning(self): |
|
102 |
return _('Warning: this field data will be permanently deleted.') |
|
101 | 103 | |
102 | 104 |
def delete(self): |
103 | 105 |
form = Form(enctype='multipart/form-data') |
106 |
ellipsized_field_label = misc.ellipsize(self.field.unhtmled_label, 60) |
|
104 | 107 |
form.widgets.append(HtmlWidget('<p>%s</p>' % _( |
105 |
"You are about to remove a field."))) |
|
108 |
"You are about to remove the \"%s\" field.") % ellipsized_field_label)) |
|
109 |
warning = self.get_deletion_extra_warning() |
|
110 |
if warning: |
|
111 |
form.widgets.append(HtmlWidget('<div class="warningnotice">%s</div>' % warning)) |
|
106 | 112 |
form.add_submit('delete', _('Submit')) |
107 | 113 |
form.add_submit("cancel", _("Cancel")) |
108 | 114 |
if form.get_widget('cancel').parse(): |
... | ... | |
114 | 120 |
get_response().breadcrumb.append(('delete', _('Delete'))) |
115 | 121 |
self.html_top(title = _('Delete Field')) |
116 | 122 |
r = TemplateIO(html=True) |
117 |
r += htmltext('<h2>%s %s</h2>') % (_('Deleting Field:'), |
|
118 |
misc.ellipsize(self.field.unhtmled_label, 60)) |
|
123 |
r += htmltext('<h2>%s</h2>') % _('Deleting Field: %s') % ellipsized_field_label |
|
119 | 124 |
r += form.render() |
120 | 125 |
return r.getvalue() |
121 | 126 |
else: |
wcs/admin/forms.py | ||
---|---|---|
116 | 116 |
class FieldDefPage(FieldDefPage): |
117 | 117 |
section = 'forms' |
118 | 118 | |
119 |
def get_deletion_extra_warning(self): |
|
120 |
if not self.objectdef.data_class().count(): |
|
121 |
return None |
|
122 |
return _('Warning: this field data will be permanently deleted from existing forms.') |
|
123 | ||
119 | 124 | |
120 | 125 |
class FieldsDirectory(FieldsDirectory): |
121 | 126 |
field_def_page_class = FieldDefPage |
wcs/wf/form.py | ||
---|---|---|
62 | 62 |
form.remove('in_listing') |
63 | 63 |
return form |
64 | 64 | |
65 |
def get_deletion_extra_warning(self): |
|
66 |
return None |
|
67 | ||
65 | 68 | |
66 | 69 |
class WorkflowFormFieldsDirectory(FieldsDirectory): |
67 | 70 |
section = 'workflows' |
68 |
- |