From d84f6daa07dff6e8c4d652de047313703e06d2ba Mon Sep 17 00:00:00 2001 From: Yoshinori Okuji <yo@nexedi.com> Date: Wed, 8 Sep 2004 14:23:08 +0000 Subject: [PATCH] Support removing skins. git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@1731 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5/Extensions/CheckSkins.py | 82 ++++++++++++++++++++------- 1 file changed, 61 insertions(+), 21 deletions(-) diff --git a/product/ERP5/Extensions/CheckSkins.py b/product/ERP5/Extensions/CheckSkins.py index e28641c953..eabed9960d 100755 --- a/product/ERP5/Extensions/CheckSkins.py +++ b/product/ERP5/Extensions/CheckSkins.py @@ -3,6 +3,7 @@ import re import os import sys import csv +from Products.CMFCore.utils import expandpath from zLOG import LOG @@ -160,7 +161,7 @@ def checkSkinNames(self, REQUEST=None, csv=0, all=0): msg += '</body></html>' return msg -def fixSkinNames(self, REQUEST=None, file=None, dry_run=1): +def fixSkinNames(self, REQUEST=None, file=None, dry_run=0): """ Fix bad skin names. @@ -204,6 +205,7 @@ def fixSkinNames(self, REQUEST=None, file=None, dry_run=1): #if self.portal_skins[folder][name].meta_type != meta_type: # raise RuntimeError, '%s/%s has a different meta type' % (folder, name) info = NamingInformation() + info.meta_type = meta_type info.folder = folder info.name = name info.new_name = new_name @@ -222,7 +224,9 @@ def fixSkinNames(self, REQUEST=None, file=None, dry_run=1): text = skin.manage_FTPget() except: type, value, traceback = sys.exc_info() - msg += 'WARNING: the skin %s could not be retrieved because of the exception %s: %s\n' % (path, str(type), str(value)) + line = 'WARNING: the skin %s could not be retrieved because of the exception %s: %s\n' % (path, str(type), str(value)) + LOG('fixSkinNames', 0, line) + msg += '%s\n' % line else: name_list = [] for info in info_list: @@ -230,10 +234,19 @@ def fixSkinNames(self, REQUEST=None, file=None, dry_run=1): text = info.regexp.sub(info.new_name, text) name_list.append(info.name) if len(name_list) > 0: - msg += '%s is modified for %s\n' % ('portal_skins/' + path, ', '.join(name_list)) + line = '%s is modified for %s' % ('portal_skins/' + path, ', '.join(name_list)) + LOG('fixSkinNames', 0, line) + msg += '%s\n' % line if not dry_run: - REQUEST['BODY'] = text - skin.manage_FTPput(REQUEST, REQUEST.RESPONSE) + if skin.meta_type in fs_skin_spec: + f = open(expandpath(skin.getObjectFSPath()), 'w') + try: + f.write(text) + finally: + f.close() + else: + REQUEST['BODY'] = text + skin.manage_FTPput(REQUEST, REQUEST.RESPONSE) # Check the portal types. for t in self.portal_types.objectValues(): @@ -241,7 +254,9 @@ def fixSkinNames(self, REQUEST=None, file=None, dry_run=1): text = t.immediate_view for info in info_list: if info.name == text: - msg += 'Initial view name of %s is modified for %s\n' % ('portal_types/' + t.id, text) + line = 'Initial view name of %s is modified for %s' % ('portal_types/' + t.id, text) + LOG('fixSkinNames', 0, line) + msg += '%s\n' % line if not dry_run: t.immediate_view = info.new_name break @@ -250,7 +265,9 @@ def fixSkinNames(self, REQUEST=None, file=None, dry_run=1): if text is not None: for info in info_list: if info.name == text: - msg += 'Constructor path of %s is modified for %s\n' % ('portal_types/' + t.id, text) + line = 'Constructor path of %s is modified for %s' % ('portal_types/' + t.id, text) + LOG('fixSkinNames', 0, line) + msg += '%s\n' % line if not dry_run: t.constructor_path = info.new_name break @@ -260,7 +277,9 @@ def fixSkinNames(self, REQUEST=None, file=None, dry_run=1): for info in info_list: if info.regexp.search(text) is not None: text = info.regexp.sub(info.new_name, text) - msg += 'Action %s of %s is modified for %s\n' % (action.getId(), 'portal_types/' + t.id, info.name) + line = 'Action %s of %s is modified for %s' % (action.getId(), 'portal_types/' + t.id, info.name) + LOG('fixSkinNames', 0, line) + msg += '%s\n' % line if not dry_run: action.action.text = text break @@ -281,7 +300,9 @@ def fixSkinNames(self, REQUEST=None, file=None, dry_run=1): break skin_id_list.append(skin_id) if len(name_list) > 0: - msg += 'Skins of %s is modified for %s\n' % ('portal_templates/' + template.getId(), ', '.join(name_list)) + line = 'Skins of %s is modified for %s' % ('portal_templates/' + template.getId(), ', '.join(name_list)) + LOG('fixSkinNames', 0, line) + msg += '%s\n' % line if not dry_run: template.setTemplateSkinIdList(skin_id_list) # Paths. @@ -295,7 +316,9 @@ def fixSkinNames(self, REQUEST=None, file=None, dry_run=1): break path_list.append(path) if len(name_list) > 0: - msg += 'Paths of %s is modified for %s\n' % ('portal_templates/' + template.getId(), ', '.join(name_list)) + line = 'Paths of %s is modified for %s' % ('portal_templates/' + template.getId(), ', '.join(name_list)) + LOG('fixSkinNames', 0, line) + msg += '%s\n' % line if not dry_run: template.setTemplatePathList(path_list) @@ -308,7 +331,9 @@ def fixSkinNames(self, REQUEST=None, file=None, dry_run=1): for info in info_list: if info.regexp.search(text) is not None: text = info.regexp.sub(info.new_name, text) - msg += 'Transition %s of %s is modified for %s\n' % (id, 'portal_workflow/' + wf.id, info.name) + line = 'Transition %s of %s is modified for %s' % (id, 'portal_workflow/' + wf.id, info.name) + LOG('fixSkinNames', 0, line) + msg += '%s\n' % line if not dry_run: transition.actbox_url = text break @@ -319,7 +344,9 @@ def fixSkinNames(self, REQUEST=None, file=None, dry_run=1): for info in info_list: if info.regexp.search(text) is not None: text = info.regexp.sub(info.new_name, text) - msg += 'Worklist %s of %s is modified for %s\n' % (id, 'portal_workflow/' + wf.id, info.name) + line = 'Worklist %s of %s is modified for %s' % (id, 'portal_workflow/' + wf.id, info.name) + LOG('fixSkinNames', 0, line) + msg += '%s\n' % line if not dry_run: worklist.actbox_url = text break @@ -333,7 +360,9 @@ def fixSkinNames(self, REQUEST=None, file=None, dry_run=1): text = info.regexp.sub(info.new_name, text) name_list.append(info.name) if len(name_list) > 0: - msg += 'Script %s of %s is modified for %s\n' % (id, 'portal_workflow/' + wf.id, ', '.join(name_list)) + line = 'Script %s of %s is modified for %s' % (id, 'portal_workflow/' + wf.id, ', '.join(name_list)) + LOG('fixSkinNames', 0, line) + msg += '%s\n' % line if not dry_run: REQUEST['BODY'] = text script.manage_FTPput(REQUEST, REQUEST.RESPONSE) @@ -342,18 +371,29 @@ def fixSkinNames(self, REQUEST=None, file=None, dry_run=1): if not dry_run: for info in info_list: try: - folder = self.portal_skins[info.folder] - if info.removed: - folder.manage_delObjects([info.name]) + if info.meta_type in fs_skin_spec: + skin = self.portal_skins[info.folder][info.name] + old_path = expandpath(skin.getObjectFSPath()) + new_path = info.regexp.sub(info.new_name, old_path) + if info.removed: + os.remove(old_path) + else: + os.rename(old_path, new_path) else: - folder.manage_renameObjects([info.name], [info.new_name]) + folder = self.portal_skins[info.folder] + if info.removed: + folder.manage_delObjects([info.name]) + else: + folder.manage_renameObjects([info.name], [info.new_name]) except: type, value, traceback = sys.exc_info() if info.removed: - msg += 'WARNING: the skin %s could not be removed because of the exception %s: %s\n' % (info.name, str(type), str(value)) + line = 'WARNING: the skin %s could not be removed because of the exception %s: %s\n' % (info.name, str(type), str(value)) + LOG('fixSkinNames', 0, line) + msg += '%s\n' % line else: - msg += 'WARNING: the skin %s could not be renamed to %s because of the exception %s: %s\n' % (info.name, info.new_name, str(type), str(value)) + line = 'WARNING: the skin %s could not be renamed to %s because of the exception %s: %s\n' % (info.name, info.new_name, str(type), str(value)) + LOG('fixSkinNames', 0, line) + msg += '%s\n' % line - for line in msg.split('\n'): - LOG('fixSkinNames', 0, line) return msg \ No newline at end of file -- 2.30.9