0003-custom-view-possibility-to-set-a-digest-45633.patch
tests/backoffice_pages/test_custom_view.py | ||
---|---|---|
782 | 782 |
assert pub.custom_view_class.get(1).is_default is False # not for datasource |
783 | 783 | |
784 | 784 | |
785 |
def test_carddata_custom_view_digest_template(pub): |
|
786 |
user = create_superuser(pub) |
|
787 |
pub.role_class.wipe() |
|
788 |
role = pub.role_class(name='foobar') |
|
789 |
role.store() |
|
790 |
user.roles = [role.id] |
|
791 |
user.store() |
|
792 | ||
793 |
CardDef.wipe() |
|
794 |
pub.custom_view_class.wipe() |
|
795 |
carddef = CardDef() |
|
796 |
carddef.name = 'foo' |
|
797 |
carddef.fields = [ |
|
798 |
fields.StringField(id='1', label='Test', type='string', varname='foo'), |
|
799 |
] |
|
800 |
carddef.backoffice_submission_roles = user.roles |
|
801 |
carddef.store() |
|
802 | ||
803 |
app = login(get_app(pub)) |
|
804 |
resp = app.get('/backoffice/data/foo/') |
|
805 |
resp = resp.forms['listing-settings'].submit() |
|
806 |
assert resp.forms['save-custom-view']['digest_template'].value == '' |
|
807 |
resp.forms['save-custom-view']['title'] = 'some view' |
|
808 |
resp.forms['save-custom-view']['visibility'] = 'any' |
|
809 |
resp.forms['save-custom-view']['digest_template'] = 'FOO {{ form_var_foo }} bar' |
|
810 |
resp = resp.forms['save-custom-view'].submit() |
|
811 |
assert CardDef.get(1).digest_templates == {'custom-view:some-view': 'FOO {{ form_var_foo }} bar'} |
|
812 |
assert resp.location.endswith('/some-view/') |
|
813 | ||
814 |
resp = resp.follow() |
|
815 |
resp = resp.forms['listing-settings'].submit() |
|
816 |
assert resp.forms['save-custom-view']['digest_template'].value == 'FOO {{ form_var_foo }} bar' |
|
817 |
assert resp.forms['save-custom-view']['update'].checked is True |
|
818 |
resp.forms['save-custom-view']['digest_template'] = 'FOO {{ form_var_foo }}' |
|
819 |
resp = resp.forms['save-custom-view'].submit() |
|
820 |
assert CardDef.get(1).digest_templates == {'custom-view:some-view': 'FOO {{ form_var_foo }}'} |
|
821 | ||
822 |
carddef = CardDef.get(1) |
|
823 |
carddef.digest_templates['default'] = 'plop' |
|
824 |
carddef.store() |
|
825 |
resp = app.get('/backoffice/data/foo/') |
|
826 |
resp = resp.forms['listing-settings'].submit() |
|
827 |
assert resp.forms['save-custom-view']['digest_template'].value == 'plop' |
|
828 |
resp.forms['save-custom-view']['title'] = 'another view' |
|
829 |
resp.forms['save-custom-view']['visibility'] = 'any' |
|
830 |
resp.forms['save-custom-view']['digest_template'] = '{{ form_var_foo }}' |
|
831 |
resp = resp.forms['save-custom-view'].submit() |
|
832 |
assert CardDef.get(1).digest_templates == { |
|
833 |
'default': 'plop', |
|
834 |
'custom-view:some-view': 'FOO {{ form_var_foo }}', |
|
835 |
'custom-view:another-view': '{{ form_var_foo }}', |
|
836 |
} |
|
837 | ||
838 | ||
785 | 839 |
def test_backoffice_custom_view_keep_filters(pub): |
786 | 840 |
user = create_superuser(pub) |
787 | 841 |
wcs/backoffice/management.py | ||
---|---|---|
31 | 31 |
from quixote.html import TemplateIO, htmlescape, htmltext |
32 | 32 |
from quixote.http_request import parse_query |
33 | 33 | |
34 |
from wcs.admin.forms import UpdateDigestAfterJob |
|
34 | 35 |
from wcs.admin.settings import UserFieldsFormDef |
35 | 36 |
from wcs.api_utils import get_user_from_api_query_string |
36 | 37 |
from wcs.carddef import CardDef |
... | ... | |
1681 | 1682 |
'data-dynamic-display-value-in': 'owner|any', |
1682 | 1683 |
}, |
1683 | 1684 |
) |
1685 |
if isinstance(self.formdef, CardDef): |
|
1686 |
digest_template = None |
|
1687 |
if self.view: |
|
1688 |
templates = self.formdef.digest_templates or {} |
|
1689 |
digest_template = templates.get('custom-view:%s' % self.view.get_url_slug()) |
|
1690 |
form.add( |
|
1691 |
StringWidget, |
|
1692 |
'digest_template', |
|
1693 |
title=_('Digest'), |
|
1694 |
value=digest_template or self.formdef.default_digest_template, |
|
1695 |
size=50, |
|
1696 |
attrs={ |
|
1697 |
'data-dynamic-display-child-of': 'visibility', |
|
1698 |
'data-dynamic-display-value-in': 'datasource|any', |
|
1699 |
}, |
|
1700 |
) |
|
1684 | 1701 |
else: |
1685 | 1702 |
form.add( |
1686 | 1703 |
CheckboxWidget, |
... | ... | |
1721 | 1738 |
custom_view.is_default = False |
1722 | 1739 |
custom_view.store() |
1723 | 1740 | |
1741 |
if form.get_widget('digest_template'): |
|
1742 |
if not self.formdef.digest_templates: |
|
1743 |
self.formdef.digest_templates = {} |
|
1744 |
old_value = self.formdef.digest_templates.get('custom-view:%s' % custom_view.get_url_slug()) |
|
1745 |
new_value = form.get_widget('digest_template').parse() |
|
1746 |
if old_value != new_value: |
|
1747 |
self.formdef.digest_templates[ |
|
1748 |
'custom-view:%s' % custom_view.get_url_slug() |
|
1749 |
] = form.get_widget('digest_template').parse() |
|
1750 |
self.formdef.store() |
|
1751 |
if self.formdef.data_class().count(): |
|
1752 |
get_response().add_after_job(UpdateDigestAfterJob(formdef=self.formdef)) |
|
1753 | ||
1724 | 1754 |
if custom_view.is_default and custom_view.visibility != 'datasource': |
1725 | 1755 |
# need to clean other views to have only one default per owner/any visibility |
1726 | 1756 |
for view in self.get_custom_views(): |
1727 |
- |