diff --git a/news/403.bugfix b/news/403.bugfix new file mode 100644 index 000000000..8e35448af --- /dev/null +++ b/news/403.bugfix @@ -0,0 +1 @@ +- Fix installation to preserve existing order of behaviors. [davisagli] diff --git a/src/plone/app/multilingual/browser/setup.py b/src/plone/app/multilingual/browser/setup.py index 90d0391ad..230261ac8 100644 --- a/src/plone/app/multilingual/browser/setup.py +++ b/src/plone/app/multilingual/browser/setup.py @@ -284,6 +284,6 @@ def ensure_translatable(self, type_): if IDexterityFTI.providedBy(fti): behaviors = list(fti.behaviors) - behaviors.append("plone.translatable") - behaviors = tuple(set(behaviors)) - fti._updateProperty("behaviors", behaviors) + if "plone.translatable" not in behaviors: + behaviors.append("plone.translatable") + fti._updateProperty("behaviors", tuple(behaviors)) diff --git a/src/plone/app/multilingual/setuphandlers.py b/src/plone/app/multilingual/setuphandlers.py index 549edf77b..357325798 100644 --- a/src/plone/app/multilingual/setuphandlers.py +++ b/src/plone/app/multilingual/setuphandlers.py @@ -58,14 +58,10 @@ def enable_translatable_behavior(portal): ) for fti in dx_ftis: # Enable translatable behavior for all types - behaviors = list(fti.behaviors) - behaviors.extend( - [ - "plone.translatable", - ] - ) - behaviors = tuple(set(behaviors)) - fti._updateProperty("behaviors", behaviors) + if "plone.translatable" not in fti.behaviors: + behaviors = list(fti.behaviors) + behaviors.append("plone.translatable") + fti._updateProperty("behaviors", tuple(behaviors)) def step_uninstall_various(context):