0001-backoffice-add-dedicated-fields-directory-for-cards-.patch
tests/admin_pages/test_card.py | ||
---|---|---|
448 | 448 |
assert '<span class="label">User support</span> <span class="value">Optional</span>' in resp.text |
449 | 449 | |
450 | 450 | |
451 |
def test_card_delete_field_existing_data(pub): |
|
452 |
create_superuser(pub) |
|
453 | ||
454 |
CardDef.wipe() |
|
455 |
carddef = CardDef() |
|
456 |
carddef.name = 'card title' |
|
457 |
carddef.fields = [ |
|
458 |
fields.StringField(id='1', label='1st field', type='string'), |
|
459 |
fields.CommentField(id='2', label='comment field', type='comment'), |
|
460 |
] |
|
461 |
carddef.store() |
|
462 |
carddef.data_class().wipe() |
|
463 | ||
464 |
carddata = carddef.data_class()() |
|
465 |
carddata.just_created() |
|
466 |
carddata.data = {'1': 'hello'} |
|
467 |
carddata.store() |
|
468 | ||
469 |
app = login(get_app(pub)) |
|
470 |
resp = app.get('/backoffice/cards/%s/fields/1/delete' % carddef.id) |
|
471 |
assert 'You are about to remove the "1st field" field.' in resp.text |
|
472 |
assert 'Warning: this field data will be permanently deleted from existing cards.' in resp.text |
|
473 |
resp = resp.forms[0].submit() |
|
474 |
assert resp.location == 'http://example.net/backoffice/cards/1/fields/#itemId_2' |
|
475 |
resp = resp.follow() |
|
476 |
carddef.refresh_from_storage() |
|
477 |
assert len(carddef.fields) == 1 |
|
478 | ||
479 | ||
451 | 480 |
def test_card_custom_view_data_source(pub): |
452 | 481 |
user = create_superuser(pub) |
453 | 482 |
pub.role_class.wipe() |
tests/admin_pages/test_form.py | ||
---|---|---|
1563 | 1563 |
resp = resp.click(href='fields/') |
1564 | 1564 |
resp = resp.click(href='1/delete') |
1565 | 1565 |
assert 'You are about to remove the "1st field" field.' in resp.text |
1566 |
assert 'Warning:' in resp.text |
|
1566 |
assert 'Warning: this field data will be permanently deleted from existing forms.' in resp.text
|
|
1567 | 1567 |
resp = resp.forms[0].submit() |
1568 | 1568 |
assert resp.location == 'http://example.net/backoffice/forms/1/fields/#itemId_2' |
1569 | 1569 |
resp = resp.follow() |
wcs/admin/fields.py | ||
---|---|---|
303 | 303 |
new_field_history_message = _('New field "%s"') |
304 | 304 |
field_count_message = _('This form contains %d fields.') |
305 | 305 |
field_over_count_message = _('This form contains more than %d fields.') |
306 | ||
307 | 306 |
support_import = True |
308 | 307 |
fields_count_total_soft_limit = 200 |
309 | 308 |
fields_count_total_hard_limit = 400 |
wcs/admin/forms.py | ||
---|---|---|
193 | 193 |
return formdef |
194 | 194 | |
195 | 195 | |
196 |
class AdminFieldDefPage(FieldDefPage):
|
|
196 |
class FormFieldDefPage(FieldDefPage):
|
|
197 | 197 |
section = 'forms' |
198 |
deletion_extra_warning_message = _( |
|
199 |
'Warning: this field data will be permanently deleted from existing forms.' |
|
200 |
) |
|
198 | 201 | |
199 | 202 |
def get_deletion_extra_warning(self): |
200 | 203 |
if not self.objectdef.data_class().count(): |
201 | 204 |
return None |
202 |
return _('Warning: this field data will be permanently deleted from existing forms.')
|
|
205 |
return self.deletion_extra_warning_message
|
|
203 | 206 | |
204 | 207 | |
205 |
class AdminFieldsDirectory(FieldsDirectory):
|
|
206 |
field_def_page_class = AdminFieldDefPage
|
|
208 |
class FormFieldsDirectory(FieldsDirectory):
|
|
209 |
field_def_page_class = FormFieldDefPage
|
|
207 | 210 |
field_var_prefix = 'form_var_' |
208 | 211 |
readonly_message = _('This form is readonly.') |
209 | 212 | |
... | ... | |
627 | 630 |
formdef_default_workflow = '_default' |
628 | 631 |
section = 'forms' |
629 | 632 |
options_directory_class = OptionsDirectory |
630 |
fields_directory_class = AdminFieldsDirectory
|
|
633 |
fields_directory_class = FormFieldsDirectory
|
|
631 | 634 | |
632 | 635 |
delete_message = _('You are about to irrevocably delete this form.') |
633 | 636 |
delete_title = _('Deleting Form:') |
wcs/backoffice/cards.py | ||
---|---|---|
19 | 19 | |
20 | 20 |
from wcs.admin import utils |
21 | 21 |
from wcs.admin.categories import CardDefCategoriesDirectory |
22 |
from wcs.admin.forms import AdminFieldsDirectory, FormDefPage, FormDefUI, FormsDirectory, OptionsDirectory |
|
22 |
from wcs.admin.forms import ( |
|
23 |
FormDefPage, |
|
24 |
FormDefUI, |
|
25 |
FormFieldDefPage, |
|
26 |
FormFieldsDirectory, |
|
27 |
FormsDirectory, |
|
28 |
OptionsDirectory, |
|
29 |
) |
|
23 | 30 |
from wcs.carddef import CardDef, get_cards_graph |
24 | 31 |
from wcs.categories import CardDefCategory |
25 | 32 |
from wcs.workflows import Workflow |
... | ... | |
40 | 47 |
section = 'cards' |
41 | 48 | |
42 | 49 | |
43 |
class CardDefFieldsDirectory(AdminFieldsDirectory): |
|
50 |
class CardFieldDefPage(FormFieldDefPage): |
|
51 |
section = 'cards' |
|
52 |
deletion_extra_warning_message = _( |
|
53 |
'Warning: this field data will be permanently deleted from existing cards.' |
|
54 |
) |
|
55 | ||
56 | ||
57 |
class CardFieldsDirectory(FormFieldsDirectory): |
|
58 |
field_def_page_class = CardFieldDefPage |
|
44 | 59 |
field_count_message = _('This card model contains %d fields.') |
45 | 60 |
field_over_count_message = _('This card model contains more than %d fields.') |
46 | 61 |
readonly_message = _('This card model is readonly.') |
... | ... | |
54 | 69 |
section = 'cards' |
55 | 70 | |
56 | 71 |
options_directory_class = CardDefOptionsDirectory |
57 |
fields_directory_class = CardDefFieldsDirectory
|
|
72 |
fields_directory_class = CardFieldsDirectory |
|
58 | 73 | |
59 | 74 |
delete_message = _('You are about to irrevocably delete this card model.') |
60 | 75 |
delete_title = _('Deleting Card Model:') |
61 |
- |