# HG changeset patch # User Thierry Florac # Date 1553273209 -3600 # Node ID 38e2977b726b908b097bac07cedc224169d58740 # Parent 6aded60a6fe778ff3f9a42f3176fdef3aaed5b71 Use request header to store new thesaurus theme diff -r 6aded60a6fe7 -r 38e2977b726b src/pyams_content/component/theme/zmi/manager.py --- a/src/pyams_content/component/theme/zmi/manager.py Fri Mar 22 12:46:49 2019 +0100 +++ b/src/pyams_content/component/theme/zmi/manager.py Fri Mar 22 17:46:49 2019 +0100 @@ -16,11 +16,10 @@ from z3c.form.browser.checkbox import SingleCheckBoxFieldWidget from zope.interface import alsoProvides -from pyams_content.component.theme.interfaces import \ - ITagsManagerTarget, ITagsManager, \ - IThemesManagerTarget, IThemesManager, \ - ICollectionsManagerTarget, ICollectionsManager -from pyams_content.interfaces import MANAGE_TOOL_PERMISSION, MANAGE_SITE_ROOT_PERMISSION +from pyams_content import _ +from pyams_content.component.theme.interfaces import ICollectionsManager, ICollectionsManagerTarget, ITagsManager, \ + ITagsManagerTarget, IThemesManager, IThemesManagerTarget +from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION, MANAGE_TOOL_PERMISSION from pyams_content.zmi import pyams_content from pyams_form.form import ajax_config from pyams_form.group import NamedWidgetsGroup @@ -34,8 +33,6 @@ from pyams_zmi.interfaces.menu import IPropertiesMenu from pyams_zmi.layer import IAdminLayer -from pyams_content import _ - # # Tags management view @@ -73,20 +70,20 @@ return ITagsManager(self.context) def updateWidgets(self, prefix=None): + # We have to store thesaurus name if request header to be able to set extract name correctly + # See :ref:`pyams_thesaurus.thesaurus.ThesaurusExtractsVocabulary` + if self.request.method == 'POST': + param_name = '{}widgets.thesaurus_name:list'.format(self.prefix) + param_value = self.request.params.get(param_name) + if param_value is not None: + self.request.headers['X-Thesaurus-Name'] = param_value + super(TagsManagerEditForm, self).updateWidgets(prefix) widget = self.widgets['thesaurus_name'] widget.object_data = { 'ams-plugins': 'pyams_content', 'ams-plugin-pyams_content-src': get_resource_path(pyams_content), - 'ams-plugin-pyams_content-callback': 'PyAMS_content.themes.initExtracts', - 'ams-plugin-pyams_content-async': 'false' - } - alsoProvides(widget, IObjectData) - widget = self.widgets['extract_name'] - widget.object_data = { - 'ams-events-handlers': { - 'select2-open': 'PyAMS_content.themes.getExtracts' - } + 'ams-change-handler': 'PyAMS_content.themes.updateThesaurus' } alsoProvides(widget, IObjectData) @@ -140,20 +137,20 @@ return IThemesManager(self.context) def updateWidgets(self, prefix=None): + # We have to store thesaurus name if request header to be able to set extract name correctly + # See :ref:`pyams_thesaurus.thesaurus.ThesaurusExtractsVocabulary` + if self.request.method == 'POST': + param_name = '{}widgets.thesaurus_name:list'.format(self.prefix) + param_value = self.request.params.get(param_name) + if param_value is not None: + self.request.headers['X-Thesaurus-Name'] = param_value + super(ThemesManagerEditForm, self).updateWidgets(prefix) widget = self.widgets['thesaurus_name'] widget.object_data = { 'ams-plugins': 'pyams_content', 'ams-plugin-pyams_content-src': get_resource_path(pyams_content), - 'ams-plugin-pyams_content-callback': 'PyAMS_content.themes.initExtracts', - 'ams-plugin-pyams_content-async': 'false' - } - alsoProvides(widget, IObjectData) - widget = self.widgets['extract_name'] - widget.object_data = { - 'ams-events-handlers': { - 'select2-open': 'PyAMS_content.themes.getExtracts' - } + 'ams-change-handler': 'PyAMS_content.themes.updateThesaurus' } alsoProvides(widget, IObjectData) @@ -190,19 +187,19 @@ return ICollectionsManager(self.context) def updateWidgets(self, prefix=None): + # We have to store thesaurus name if request header to be able to set extract name correctly + # See :ref:`pyams_thesaurus.thesaurus.ThesaurusExtractsVocabulary` + if self.request.method == 'POST': + param_name = '{}widgets.thesaurus_name:list'.format(self.prefix) + param_value = self.request.params.get(param_name) + if param_value is not None: + self.request.headers['X-Thesaurus-Name'] = param_value + super(CollectionsManagerEditForm, self).updateWidgets(prefix) widget = self.widgets['thesaurus_name'] widget.object_data = { 'ams-plugins': 'pyams_content', 'ams-plugin-pyams_content-src': get_resource_path(pyams_content), - 'ams-plugin-pyams_content-callback': 'PyAMS_content.collections.initExtracts', - 'ams-plugin-pyams_content-async': 'false' + 'ams-change-handler': 'PyAMS_content.themes.updateThesaurus' } alsoProvides(widget, IObjectData) - widget = self.widgets['extract_name'] - widget.object_data = { - 'ams-events-handlers': { - 'select2-open': 'PyAMS_content.themes.getExtracts' - } - } - alsoProvides(widget, IObjectData)