Allow a skin folder to no longer exist when being uninstalled

Allow it to no longer be registered as well
parent 17f19226
...@@ -297,7 +297,7 @@ def deleteSkinSelection(skin_tool, skin_name): ...@@ -297,7 +297,7 @@ def deleteSkinSelection(skin_tool, skin_name):
del_skin=1) del_skin=1)
skin_tool.getPortalObject().changeSkin(None) skin_tool.getPortalObject().changeSkin(None)
def unregisterSkinFolder(skin_tool, skin_folder, skin_selection_list): def unregisterSkinFolderId(skin_tool, skin_folder_id, skin_selection_list):
skin_folder_id = skin_folder.getId() skin_folder_id = skin_folder.getId()
for skin_selection in skin_selection_list: for skin_selection in skin_selection_list:
...@@ -1296,8 +1296,7 @@ class ObjectTemplateItem(BaseTemplateItem): ...@@ -1296,8 +1296,7 @@ class ObjectTemplateItem(BaseTemplateItem):
if container.meta_type == 'CMF Skins Tool': if container.meta_type == 'CMF Skins Tool':
# we are removing a skin folder, check and # we are removing a skin folder, check and
# remove if registered skin selection # remove if registered skin selection
skin_folder = container[object_id] unregisterSkinFolderId(container, object_id,
unregisterSkinFolder(container, skin_folder,
container.getSkinSelections()) container.getSkinSelections())
container.manage_delObjects([object_id]) container.manage_delObjects([object_id])
...@@ -1697,8 +1696,8 @@ class RegisteredSkinSelectionTemplateItem(BaseTemplateItem): ...@@ -1697,8 +1696,8 @@ class RegisteredSkinSelectionTemplateItem(BaseTemplateItem):
'business_template_registered_skin_selections', 'business_template_registered_skin_selections',
selection_list) selection_list)
unregisterSkinFolder(skin_tool, skin_folder, unregisterSkinFolderId(skin_tool, skin_folder_id,
skin_tool.getSkinSelections()) skin_tool.getSkinSelections())
registerSkinFolder(skin_tool, skin_folder) registerSkinFolder(skin_tool, skin_folder)
def uninstall(self, context, **kw): def uninstall(self, context, **kw):
...@@ -1712,16 +1711,18 @@ class RegisteredSkinSelectionTemplateItem(BaseTemplateItem): ...@@ -1712,16 +1711,18 @@ class RegisteredSkinSelectionTemplateItem(BaseTemplateItem):
object_keys = self._objects.keys() object_keys = self._objects.keys()
for skin_folder_id in object_keys: for skin_folder_id in object_keys:
skin_folder = skin_tool[skin_folder_id] current_selection_list = []
current_selection_list = skin_folder.getProperty( skin_folder = skin_tool.get(skin_folder_id, None)
'business_template_registered_skin_selections', []) if skin_folder is not None:
current_selection_list = skin_folder.getProperty(
'business_template_registered_skin_selections', [])
current_selection_set = set(current_selection_list) current_selection_set = set(current_selection_list)
skin_selection_list = self._objects[skin_folder_id] skin_selection_list = self._objects[skin_folder_id]
if isinstance(skin_selection_list, str): if isinstance(skin_selection_list, str):
skin_selection_list = skin_selection_list.replace(',', ' ').split(' ') skin_selection_list = skin_selection_list.replace(',', ' ').split(' ')
for skin_selection in skin_selection_list: for skin_selection in skin_selection_list:
current_selection_set.remove(skin_selection) current_selection_set.discard(skin_selection)
current_selection_list = list(current_selection_set) current_selection_list = list(current_selection_set)
if current_selection_list: if current_selection_list:
...@@ -1730,15 +1731,16 @@ class RegisteredSkinSelectionTemplateItem(BaseTemplateItem): ...@@ -1730,15 +1731,16 @@ class RegisteredSkinSelectionTemplateItem(BaseTemplateItem):
current_selection_list) current_selection_list)
# Unregister skin folder from skin selection # Unregister skin folder from skin selection
unregisterSkinFolder(skin_tool, skin_folder, skin_selection_list) unregisterSkinFolderId(skin_tool, skin_folder_id, skin_selection_list)
else: else:
delattr(skin_folder, 'business_template_registered_skin_selections')
# Delete all skin selection # Delete all skin selection
for skin_selection in skin_selection_list: for skin_selection in skin_selection_list:
deleteSkinSelection(skin_tool, skin_selection) deleteSkinSelection(skin_tool, skin_selection)
# Register to all other skin selection if skin_folder is not None:
registerSkinFolder(skin_tool, skin_folder) delattr(skin_folder, 'business_template_registered_skin_selections')
# Register to all other skin selection
registerSkinFolder(skin_tool, skin_folder)
def preinstall(self, context, installed_item, **kw): def preinstall(self, context, installed_item, **kw):
modified_object_list = {} modified_object_list = {}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment