def cleanUpSkinsTool(context): skins = getToolByName(context, 'portal_skins') # Remove directory views for directories missing on the filesystem for name in skins.keys(): directory_view = skins.get(name) reg_key = getattr(directory_view, '_dirpath', None) if not reg_key: # not a directory view, but a persistent folder continue try: reg_key = _dirreg.getCurrentKeyFormat(reg_key) _dirreg.getDirectoryInfo(reg_key) except ValueError: skins._delObject(name) transaction.savepoint(optimistic=True) existing = skins.keys() # Remove no longer existing entries from skin selections for layer, paths in skins.selections.items(): new_paths = [] for name in paths.split(','): if name == 'plone_styles': # plone_styles has been moved and renamed new_paths.append('classic_styles') elif name in existing: new_paths.append(name) skins.selections[layer] = ','.join(new_paths)
def cleanUpSkinsTool(context): """Cleanup the portal_skins tool. Initially this was created for Plone 4.0 alpha, but was factored out later. - Remove directory views for directories missing on the filesystem. - Remove invalid skin layers from all skin selections. """ skins = getToolByName(context, 'portal_skins') # Remove directory views for directories missing on the filesystem for name in skins.keys(): directory_view = skins.get(name) reg_key = getattr(directory_view, '_dirpath', None) if not reg_key: # not a directory view, but a persistent folder continue try: # Removed in CMF 2.3 if getattr(_dirreg, 'getCurrentKeyFormat', None): reg_key = _dirreg.getCurrentKeyFormat(reg_key) _dirreg.getDirectoryInfo(reg_key) except ValueError: skins._delObject(name) transaction.savepoint(optimistic=True) existing = skins.keys() # Remove no longer existing entries from skin selections for layer, paths in skins.selections.items(): new_paths = [] for name in paths.split(','): if name in existing: new_paths.append(name) elif '/' in name and testSkinLayer(skins, name): new_paths.append(name) else: logger.info( 'Removed no longer existing path %s ' 'from skin selection %s.', name, layer) skins.selections[layer] = ','.join(new_paths)
def cleanUpSkinsTool(context): """Cleanup the portal_skins tool. Initially this was created for Plone 4.0 alpha, but was factored out later. - Remove directory views for directories missing on the filesystem. - Remove invalid skin layers from all skin selections. """ skins = getToolByName(context, 'portal_skins') # Remove directory views for directories missing on the filesystem for name in skins.keys(): directory_view = skins.get(name) reg_key = getattr(directory_view, '_dirpath', None) if not reg_key: # not a directory view, but a persistent folder continue try: # Removed in CMF 2.3 if getattr(_dirreg, 'getCurrentKeyFormat', None): reg_key = _dirreg.getCurrentKeyFormat(reg_key) _dirreg.getDirectoryInfo(reg_key) except ValueError: skins._delObject(name) transaction.savepoint(optimistic=True) existing = skins.keys() # Remove no longer existing entries from skin selections for layer, paths in skins.selections.items(): new_paths = [] for name in paths.split(','): if name in existing: new_paths.append(name) elif '/' in name and testSkinLayer(skins, name): new_paths.append(name) else: logger.info('Removed no longer existing path %s ' 'from skin selection %s.', name, layer) skins.selections[layer] = ','.join(new_paths)