From d702bf05e0bf943027535c7a42dd2aa40d979477 Mon Sep 17 00:00:00 2001 From: Arnaud Fontaine <arnaud.fontaine@nexedi.com> Date: Thu, 1 Mar 2012 16:06:44 +0900 Subject: [PATCH] Use slice notation to remove prefixes/suffixes properly rather than replace(). --- product/ERP5/Document/BusinessTemplate.py | 2 +- product/ERP5Type/dynamic/component_package.py | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/product/ERP5/Document/BusinessTemplate.py b/product/ERP5/Document/BusinessTemplate.py index ca33e62b2a..561226a65e 100644 --- a/product/ERP5/Document/BusinessTemplate.py +++ b/product/ERP5/Document/BusinessTemplate.py @@ -3829,7 +3829,7 @@ class DocumentTemplateItem(FilesystemToZodbTemplateItem): # does not set _archive with portal_components/ like # ObjectTemplateItem.__init__() self._archive[name] = None - del self._archive[name.replace('portal_components/', '')] + del self._archive[name[len('portal_components/'):]] def export(self, context, bta, **kw): path = self.__class__.__name__ + '/' diff --git a/product/ERP5Type/dynamic/component_package.py b/product/ERP5Type/dynamic/component_package.py index 5264428324..77c7d716a9 100644 --- a/product/ERP5Type/dynamic/component_package.py +++ b/product/ERP5Type/dynamic/component_package.py @@ -72,7 +72,7 @@ class ComponentDynamicPackage(ModuleType): self._namespace = namespace self._namespace_prefix = namespace + '.' self._portal_type = portal_type - + self.__version_suffix_len = len('_version') self._lock = threading.RLock() # Add this module to sys.path for future imports @@ -135,11 +135,11 @@ class ComponentDynamicPackage(ModuleType): # __import__ will first try a relative import, for example # erp5.component.XXX.YYY.ZZZ where erp5.component.XXX.YYY is the current # Component where an import is done - name = fullname.replace(self._namespace_prefix, '') + name = fullname[len(self._namespace_prefix):] if '.' in name: try: version, name = name.split('.') - version = version.replace('_version', '') + version = version[:-self.__version_suffix_len] except ValueError: return None @@ -152,7 +152,7 @@ class ComponentDynamicPackage(ModuleType): # wrongly considered as importable and thus the actual filesystem class # ignored elif (name not in self._registry_dict and - name.replace('_version', '') not in site.getVersionPriorityList()): + name[:-self.__version_suffix_len] not in site.getVersionPriorityList()): return None return self @@ -176,18 +176,18 @@ class ComponentDynamicPackage(ModuleType): properly in find_module(). """ site = getSite() - component_name = fullname.replace(self._namespace_prefix, '') + component_name = fullname[len(self._namespace_prefix):] if component_name.endswith('_version'): - version = component_name.replace('_version', '') + version = component_name[:-self.__version_suffix_len] return (version in site.getVersionPriorityList() and self._getVersionPackage(version) or None) component_id_alias = None - version_package_name = component_name.replace('_version', '') + version_package_name = component_name[:-self.__version_suffix_len] if '.' in component_name: try: version, component_name = component_name.split('.') - version = version.replace('_version', '') + version = version[:-self.__version_suffix_len] except ValueError: return None -- 2.30.9