From f105e8152b50357208a6962d3defbd30a8d3ed28 Mon Sep 17 00:00:00 2001 From: Nicolas PASCAL Date: Thu, 5 Mar 2020 14:01:18 +0100 Subject: [PATCH 01/11] Fix travis python3.7 lxml test/requirements.txt --- tests/requirements.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/requirements.txt b/tests/requirements.txt index 9f03e2295..46824e4a4 100644 --- a/tests/requirements.txt +++ b/tests/requirements.txt @@ -1,4 +1,5 @@ -lxml==3.5.0 +lxml +#lxml==3.5.0 pluggy==0.12.0 py==1.8.0 pytest==4.5.0 From ce2ed484994c647da9571960d0b483f576fe3b66 Mon Sep 17 00:00:00 2001 From: Nicolas PASCAL Date: Thu, 5 Mar 2020 15:01:31 +0100 Subject: [PATCH 02/11] Fix travis python3.7 lxml in tox.ini --- tox.ini | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tox.ini b/tox.ini index 631d264a7..d08dd207e 100644 --- a/tox.ini +++ b/tox.ini @@ -14,6 +14,8 @@ deps = django22: Django<3.0 django111: Django-Select2<6 django{20,21,22}: Django-Select2 + py{35,36}: lxml==3.5.0 + py{37}: lxml==4.5.0 -r requirements/base.txt -r tests/requirements.txt beautifulsoup4==4.8.1 From e04e1b11760badebe6c58b70178eb9e7b56d19cb Mon Sep 17 00:00:00 2001 From: Nicolas PASCAL Date: Thu, 5 Mar 2020 15:06:33 +0100 Subject: [PATCH 03/11] Update test/requirements.txt fix travis lxml --- tests/requirements.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/requirements.txt b/tests/requirements.txt index 46824e4a4..748e05382 100644 --- a/tests/requirements.txt +++ b/tests/requirements.txt @@ -1,5 +1,3 @@ -lxml -#lxml==3.5.0 pluggy==0.12.0 py==1.8.0 pytest==4.5.0 From 51a0bce932a7086a113573e09ef9e95b7a6c597b Mon Sep 17 00:00:00 2001 From: Nicolas PASCAL Date: Fri, 6 Mar 2020 10:23:11 +0100 Subject: [PATCH 04/11] add merge extra_fields feature --- cmsplugin_cascade/extra_fields/mixins.py | 44 +++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/cmsplugin_cascade/extra_fields/mixins.py b/cmsplugin_cascade/extra_fields/mixins.py index 1fa95f50f..c1c554917 100644 --- a/cmsplugin_cascade/extra_fields/mixins.py +++ b/cmsplugin_cascade/extra_fields/mixins.py @@ -8,6 +8,31 @@ from cmsplugin_cascade import app_settings from cmsplugin_cascade.fields import SizeField +class ExtraFieldsPluginFormMixin( EntangledModelFormMixin): + """In this form, choices and help_text will overided later to give path of parameter custom css classes + and styles for the plugin""" + + custom_css_classes_and_styles = ChoiceField( + widget=widgets.RadioSelect(attrs={'style': 'display:none;'}), + choices=[], + required=False, + label=_("Set custom css classes and styles"), + ) + + def custom_form(clsname, request, extra_fields): + site = get_current_site(request) + form_custom = ExtraFieldsPluginFormMixin.base_fields['custom_css_classes_and_styles'] + if hasattr(extra_fields, 'id'): + admin_path_plugin_extra_field_set = "/admin/cmsplugin_cascade/pluginextrafields/{}/change/".format( extra_fields.id ) + form_custom.choices = [('', format_html('{0}',admin_path_plugin_extra_field_set, request.path_info ))] + form_custom.help_text = format_html('
Site: {} Plugin: {}
', site, clsname) + elif extra_fields: + admin_path_plugin_extra_field_set = "/admin/cmsplugin_cascade/pluginextrafields/" + form_custom.choices = [('', format_html('{0}',admin_path_plugin_extra_field_set, request.path_info ))] + form_custom.help_text = format_html('
Site: {} Plugin: {}
', site, clsname) + + class Meta: + entangled_fields = {'glossary':['custom_css_classes_and_styles']} class ExtraFieldsMixin(metaclass=MediaDefiningClass): """ @@ -30,6 +55,21 @@ def get_form(self, request, obj=None, **kwargs): except ObjectDoesNotExist: extra_fields = app_settings.CMSPLUGIN_CASCADE['plugins_with_extra_fields'].get(clsname) + if hasattr(extra_fields, 'id') and app_settings.CMSPLUGIN_CASCADE['merge_extra_fields'] : + settings_extra_fields = app_settings.CMSPLUGIN_CASCADE['plugins_with_extra_fields'] + if clsname in settings_extra_fields.keys(): + for key_style, value_style in settings_extra_fields[clsname].inline_styles.items(): + extra_fields.inline_styles.update({key_style:extra_fields.inline_styles[key_style] + value_style}) + for key_css_classes, value_css_classes in settings_extra_fields[clsname].css_classes.items(): + if value_css_classes == '': + value_css_classes = extra_fields.css_classes[key_css_classes] + elif type(value_css_classes) == list: + list_extra_fields = extra_fields.css_classes[key_css_classes].replace(' ', '').split(",") + list_css_classes = list(dict.fromkeys(list_extra_fields + value_css_classes)) + value_css_classes = ','.join(list_css_classes) + extra_fields.css_classes.update({ key_css_classes:value_css_classes}) + extra_fields.save() + if isinstance(extra_fields, (PluginExtraFields, PluginExtraFieldsConfig)): form_fields = {} @@ -85,7 +125,9 @@ def get_form(self, request, obj=None, **kwargs): class Meta: entangled_fields = {'glossary': list(form_fields.keys())} form_fields['Meta'] = Meta - kwargs['form'] = type(base_form.__name__, (base_form,), form_fields) + # overide fields 'custom_css_classes_and_styles' attributes: choices, help_text. + ExtraFieldsPluginFormMixin.custom_form(clsname ,request, extra_fields + kwargs['form'] = type(base_form.__name__, (base_form,ExtraFieldsPluginFormMixin), form_fields) return super().get_form(request, obj, **kwargs) @classmethod From 65c0522def7fc40521874be26461be3cfed744b8 Mon Sep 17 00:00:00 2001 From: Nicolas PASCAL Date: Fri, 6 Mar 2020 10:24:43 +0100 Subject: [PATCH 05/11] add doc merge extra_fields feature --- docs/source/customize-styles.rst | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/source/customize-styles.rst b/docs/source/customize-styles.rst index 804a8875a..1efc5f3cc 100644 --- a/docs/source/customize-styles.rst +++ b/docs/source/customize-styles.rst @@ -86,6 +86,14 @@ styles shall be applied. .. |customize-styles| image:: /_static/customize-styles.png +If the plugin has the default configuration, for example: sets the upper, lower, upper, and lower margins. +The default settings above will be available in the plug-in editor because CMSPLUGIN_CASCADE variable. +**merge_extra_fields**: True are set in defaults. + +Also it is possible to access the configuration of the plugin directly in its form, via a link +that opens in a new window. + + Allow ID -------- From 61cb1449047a77a3a90368a3ac45182daa0730c1 Mon Sep 17 00:00:00 2001 From: Nicolas PASCAL Date: Fri, 6 Mar 2020 10:26:01 +0100 Subject: [PATCH 06/11] add merge extra_fields feature --- cmsplugin_cascade/app_settings.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cmsplugin_cascade/app_settings.py b/cmsplugin_cascade/app_settings.py index 6618a3600..7d56cc6c8 100644 --- a/cmsplugin_cascade/app_settings.py +++ b/cmsplugin_cascade/app_settings.py @@ -129,6 +129,8 @@ def CMSPLUGIN_CASCADE(self): config.setdefault('allow_plugin_hiding', False) config.setdefault('cache_strides', True) + + config.setdefault('merge_extra_fields',True) config.setdefault('register_page_editor', True) From 6052dcd8b4531af4f7ed7dbea9789631076b3271 Mon Sep 17 00:00:00 2001 From: Nicolas PASCAL Date: Fri, 6 Mar 2020 10:36:16 +0100 Subject: [PATCH 07/11] fix syntax --- cmsplugin_cascade/extra_fields/mixins.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmsplugin_cascade/extra_fields/mixins.py b/cmsplugin_cascade/extra_fields/mixins.py index c1c554917..917755286 100644 --- a/cmsplugin_cascade/extra_fields/mixins.py +++ b/cmsplugin_cascade/extra_fields/mixins.py @@ -126,7 +126,7 @@ class Meta: entangled_fields = {'glossary': list(form_fields.keys())} form_fields['Meta'] = Meta # overide fields 'custom_css_classes_and_styles' attributes: choices, help_text. - ExtraFieldsPluginFormMixin.custom_form(clsname ,request, extra_fields + ExtraFieldsPluginFormMixin.custom_form(clsname ,request, extra_fields) kwargs['form'] = type(base_form.__name__, (base_form,ExtraFieldsPluginFormMixin), form_fields) return super().get_form(request, obj, **kwargs) From 7430f9081e6dd00b1ac2d013a768b5c2e8e94d63 Mon Sep 17 00:00:00 2001 From: Nicolas PASCAL Date: Fri, 6 Mar 2020 10:43:24 +0100 Subject: [PATCH 08/11] remove predictive link edit admin --- cmsplugin_cascade/extra_fields/mixins.py | 32 ++---------------------- 1 file changed, 2 insertions(+), 30 deletions(-) diff --git a/cmsplugin_cascade/extra_fields/mixins.py b/cmsplugin_cascade/extra_fields/mixins.py index 917755286..a229e7edb 100644 --- a/cmsplugin_cascade/extra_fields/mixins.py +++ b/cmsplugin_cascade/extra_fields/mixins.py @@ -8,32 +8,6 @@ from cmsplugin_cascade import app_settings from cmsplugin_cascade.fields import SizeField -class ExtraFieldsPluginFormMixin( EntangledModelFormMixin): - """In this form, choices and help_text will overided later to give path of parameter custom css classes - and styles for the plugin""" - - custom_css_classes_and_styles = ChoiceField( - widget=widgets.RadioSelect(attrs={'style': 'display:none;'}), - choices=[], - required=False, - label=_("Set custom css classes and styles"), - ) - - def custom_form(clsname, request, extra_fields): - site = get_current_site(request) - form_custom = ExtraFieldsPluginFormMixin.base_fields['custom_css_classes_and_styles'] - if hasattr(extra_fields, 'id'): - admin_path_plugin_extra_field_set = "/admin/cmsplugin_cascade/pluginextrafields/{}/change/".format( extra_fields.id ) - form_custom.choices = [('', format_html('{0}',admin_path_plugin_extra_field_set, request.path_info ))] - form_custom.help_text = format_html('
Site: {} Plugin: {}
', site, clsname) - elif extra_fields: - admin_path_plugin_extra_field_set = "/admin/cmsplugin_cascade/pluginextrafields/" - form_custom.choices = [('', format_html('{0}',admin_path_plugin_extra_field_set, request.path_info ))] - form_custom.help_text = format_html('
Site: {} Plugin: {}
', site, clsname) - - class Meta: - entangled_fields = {'glossary':['custom_css_classes_and_styles']} - class ExtraFieldsMixin(metaclass=MediaDefiningClass): """ If a Cascade plugin is listed in ``settings.CMSPLUGIN_CASCADE['plugins_with_extra_fields']``, @@ -124,10 +98,8 @@ def get_form(self, request, obj=None, **kwargs): assert issubclass(base_form, EntangledModelFormMixin), "Form must inherit from EntangledModelFormMixin" class Meta: entangled_fields = {'glossary': list(form_fields.keys())} - form_fields['Meta'] = Meta - # overide fields 'custom_css_classes_and_styles' attributes: choices, help_text. - ExtraFieldsPluginFormMixin.custom_form(clsname ,request, extra_fields) - kwargs['form'] = type(base_form.__name__, (base_form,ExtraFieldsPluginFormMixin), form_fields) + form_fields['Meta'] = Meta + kwargs['form'] = type(base_form.__name__, (base_form), form_fields) return super().get_form(request, obj, **kwargs) @classmethod From 6f006832492223eafab291c7cf2d96d995e7d2df Mon Sep 17 00:00:00 2001 From: Nicolas PASCAL Date: Fri, 6 Mar 2020 10:44:12 +0100 Subject: [PATCH 09/11] clean syntax --- cmsplugin_cascade/extra_fields/mixins.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cmsplugin_cascade/extra_fields/mixins.py b/cmsplugin_cascade/extra_fields/mixins.py index a229e7edb..69b05552c 100644 --- a/cmsplugin_cascade/extra_fields/mixins.py +++ b/cmsplugin_cascade/extra_fields/mixins.py @@ -8,6 +8,7 @@ from cmsplugin_cascade import app_settings from cmsplugin_cascade.fields import SizeField + class ExtraFieldsMixin(metaclass=MediaDefiningClass): """ If a Cascade plugin is listed in ``settings.CMSPLUGIN_CASCADE['plugins_with_extra_fields']``, @@ -98,7 +99,7 @@ def get_form(self, request, obj=None, **kwargs): assert issubclass(base_form, EntangledModelFormMixin), "Form must inherit from EntangledModelFormMixin" class Meta: entangled_fields = {'glossary': list(form_fields.keys())} - form_fields['Meta'] = Meta + form_fields['Meta'] = Meta kwargs['form'] = type(base_form.__name__, (base_form), form_fields) return super().get_form(request, obj, **kwargs) From 9c7e618398292061fd4cdffea05243cf8da8be5c Mon Sep 17 00:00:00 2001 From: Nicolas PASCAL Date: Sat, 7 Mar 2020 01:35:33 +0100 Subject: [PATCH 10/11] fix syntax tuple --- cmsplugin_cascade/extra_fields/mixins.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmsplugin_cascade/extra_fields/mixins.py b/cmsplugin_cascade/extra_fields/mixins.py index 69b05552c..de8f54ec7 100644 --- a/cmsplugin_cascade/extra_fields/mixins.py +++ b/cmsplugin_cascade/extra_fields/mixins.py @@ -100,7 +100,7 @@ def get_form(self, request, obj=None, **kwargs): class Meta: entangled_fields = {'glossary': list(form_fields.keys())} form_fields['Meta'] = Meta - kwargs['form'] = type(base_form.__name__, (base_form), form_fields) + kwargs['form'] = type(base_form.__name__, (base_form,), form_fields) return super().get_form(request, obj, **kwargs) @classmethod From f8b0b23fc4ef56e7cd3c7dbb9d7121b936d611b6 Mon Sep 17 00:00:00 2001 From: Nicolas PASCAL Date: Sat, 7 Mar 2020 23:49:17 +0100 Subject: [PATCH 11/11] Update customize-styles.rst --- docs/source/customize-styles.rst | 3 --- 1 file changed, 3 deletions(-) diff --git a/docs/source/customize-styles.rst b/docs/source/customize-styles.rst index 1efc5f3cc..0647a0b7f 100644 --- a/docs/source/customize-styles.rst +++ b/docs/source/customize-styles.rst @@ -90,9 +90,6 @@ If the plugin has the default configuration, for example: sets the upper, lower, The default settings above will be available in the plug-in editor because CMSPLUGIN_CASCADE variable. **merge_extra_fields**: True are set in defaults. -Also it is possible to access the configuration of the plugin directly in its form, via a link -that opens in a new window. - Allow ID --------