From b4f796a90372e739acc2e20c9f1e353d036a33a0 Mon Sep 17 00:00:00 2001 From: Alexandre Boeglin <alex@nexedi.com> Date: Mon, 7 Nov 2005 17:14:28 +0000 Subject: [PATCH] Fixes typo that prevents to replace a business template that uses files. git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@4270 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5/Document/BusinessTemplate.py | 194 +++++++++++----------- 1 file changed, 97 insertions(+), 97 deletions(-) diff --git a/product/ERP5/Document/BusinessTemplate.py b/product/ERP5/Document/BusinessTemplate.py index 21bea48791..b1ecd78f74 100755 --- a/product/ERP5/Document/BusinessTemplate.py +++ b/product/ERP5/Document/BusinessTemplate.py @@ -98,7 +98,7 @@ def removeAll(entry): class BusinessTemplateArchive: """ This is the base class for all Business Template archives - """ + """ def __init__(self, creation=0, importing=0, file=None, path=None, **kw): if creation: @@ -111,14 +111,14 @@ class BusinessTemplateArchive: def addObject(self, *kw): pass - + def finishCreation(self, **kw): pass class BusinessTemplateFolder(BusinessTemplateArchive): """ Class archiving businnes template into a folder tree - """ + """ def _initCreation(self, path): self.path = path try: @@ -164,7 +164,7 @@ class BusinessTemplateFolder(BusinessTemplateArchive): klass._importFile(file_name, file) # close file file.close() - + class BusinessTemplateTarball(BusinessTemplateArchive): """ Class archiving businnes template into a tarball file @@ -208,7 +208,7 @@ class BusinessTemplateTarball(BusinessTemplateArchive): def importFiles(self, klass, **kw): """ Import all file from the archive to the site - """ + """ class_name = klass.__class__.__name__ self.f.seek(0) data = GzipFile(fileobj=self.f).read() @@ -256,18 +256,18 @@ class BaseTemplateItem(Implicit, Persistent): def diff(self, **kw): return '' - + def export(self, context, bta, **kw): pass def importFile(self, bta, **kw): bta.importFiles(klass=self) - + class ObjectTemplateItem(BaseTemplateItem): """ This class is used for generic objects and as a subclass. """ - + def __init__(self, id_list, tool_id=None, **kw): BaseTemplateItem.__init__(self, id_list, tool_id=tool_id, **kw) if tool_id is not None: @@ -296,7 +296,7 @@ class ObjectTemplateItem(BaseTemplateItem): sub_list = {} for id in id_list: relative_url = '/'.join([url,id]) - object = p.unrestrictedTraverse(relative_url) + object = p.unrestrictedTraverse(relative_url) object = object._getCopy(context) id_list = object.objectIds() if hasattr(object, 'groups'): @@ -379,11 +379,11 @@ class ObjectTemplateItem(BaseTemplateItem): object.manage_afterClone(object) object.wl_clearLocks() if object.meta_type in ('Z SQL Method',): - # It is necessary to make sure that the sql connection + # It is necessary to make sure that the sql connection # in this method is valid. sql_connection_list = portal.objectIds(spec=('Z MySQL Database Connection',)) if object.connection_id not in sql_connection_list: - object.connection_id = sql_connection_list[0] + object.connection_id = sql_connection_list[0] # now put original order group for path in groups.keys(): object = portal.unrestrictedTraverse(path.split('/')[2:]) @@ -405,7 +405,7 @@ class ObjectTemplateItem(BaseTemplateItem): object.manage_afterClone(object) object.wl_clearLocks() if object.meta_type in ('Z SQL Method',): - # It is necessary to make sure that the sql connection + # It is necessary to make sure that the sql connection # in this method is valid. sql_connection_list = portal.objectIds( spec=('Z MySQL Database Connection',)) @@ -426,12 +426,12 @@ class ObjectTemplateItem(BaseTemplateItem): if object_id in container.objectIds(): container.manage_delObjects([object_id]) except NotFound: - pass + pass BaseTemplateItem.uninstall(self, context, **kw) def _compareObjects(self, object1, object2, btsave_object_included=0): """ - Execute a diff between 2 objects, + Execute a diff between 2 objects, and return a string diff. """ xml_dict = { @@ -456,7 +456,7 @@ class ObjectTemplateItem(BaseTemplateItem): if len(diff_list) == 3: if '_btsave_' in diff_list[1]: diff_list = [] - # Return string + # Return string result = '%s' % ''.join(diff_list) return result @@ -525,7 +525,7 @@ class ObjectTemplateItem(BaseTemplateItem): (new_object.absolute_url(), btsave_object.absolute_url()) if verbose == 1: - result += tmp_diff + result += tmp_diff result += '%s\n' % ('-'*80) return result @@ -544,7 +544,7 @@ class PathTemplateItem(ObjectTemplateItem): def _resolvePath(self, folder, relative_url_list, id_list): """ This method calls itself recursively. - + The folder is the current object which contains sub-objects. The list of ids are path components. If the list is empty, the current folder is valid. @@ -572,7 +572,7 @@ class PathTemplateItem(ObjectTemplateItem): object.uid = None self._objects[relative_url] = object object.wl_clearLocks() - + class CategoryTemplateItem(ObjectTemplateItem): def __init__(self, id_list, tool_id='portal_categories', **kw): @@ -583,7 +583,7 @@ class CategoryTemplateItem(ObjectTemplateItem): sub_list = {} for id in id_list: relative_url = '/'.join([url,id]) - object = p.unrestrictedTraverse(relative_url) + object = p.unrestrictedTraverse(relative_url) object_copy = object._getCopy(context) include_sub_categories = object.getProperty('business_template_include_sub_categories', 0) id_list = object_copy.objectIds() @@ -591,7 +591,7 @@ class CategoryTemplateItem(ObjectTemplateItem): self.build_sub_objects(context, id_list, relative_url) object_copy.manage_delObjects(list(id_list)) else: - object_copy.manage_delObjects(list(id_list)) + object_copy.manage_delObjects(list(id_list)) if hasattr(aq_base(object_copy), 'uid'): object_copy.uid = None self._objects[relative_url] = object_copy @@ -691,7 +691,7 @@ class SkinTemplateItem(ObjectTemplateItem): # sort the layer according to skin priorities new_selection.sort(lambda a, b : cmp( # separate functions here b in ps.objectIds() and ps[b].getProperty( - 'business_template_skin_layer_priority', 0) or 0, + 'business_template_skin_layer_priority', 0) or 0, a in ps.objectIds() and ps[a].getProperty( 'business_template_skin_layer_priority', 0) or 0)) ps.manage_skinLayers(skinpath = tuple(new_selection), skinname = skin_name, add_skin = 1) @@ -722,7 +722,7 @@ class SkinTemplateItem(ObjectTemplateItem): # sort the layer according to skin priorities new_selection.sort(lambda a, b : cmp( b in ps.objectIds() and ps[b].getProperty( - 'business_template_skin_layer_priority', 0) or 0, + 'business_template_skin_layer_priority', 0) or 0, a in ps.objectIds() and ps[a].getProperty( 'business_template_skin_layer_priority', 0) or 0)) ps.manage_skinLayers(skinpath = tuple(new_selection), skinname = skin_name, add_skin = 1) @@ -827,10 +827,10 @@ class PortalTypeTemplateItem(ObjectTemplateItem): xml_data += os.linesep+' <chain>' xml_data += os.linesep+' <type>%s</type>' %(key,) xml_data += os.linesep+' <workflow>%s</workflow>' %(self._workflow_chain_archive[key],) - xml_data += os.linesep+' </chain>' + xml_data += os.linesep+' </chain>' xml_data += os.linesep+'</workflow_chain>' bta.addObject(object=xml_data, name='workflow_chain_type', path=root_path) - + def install(self, context, **kw): ObjectTemplateItem.install(self, context, **kw) # We now need to setup the list of workflows corresponding to @@ -839,10 +839,10 @@ class PortalTypeTemplateItem(ObjectTemplateItem): # Set the default chain to the empty string is probably the # best solution, by default it is 'default_workflow', wich is # not very usefull - default_chain = '' - if (getattr(self, 'template_format_version', 0)) == 1: + default_chain = '' + if (getattr(self, 'template_format_version', 0)) == 1: objects = self._objects.values() - else: + else: objects = self._archive.values() for object in objects: portal_type = object.id @@ -859,7 +859,7 @@ class PortalTypeTemplateItem(ObjectTemplateItem): (default_chain, chain_dict) = self._getChainByType(self) chain = chain_dict['chain_%s' % object_id] # Backup the portal type - backup_id = ObjectTemplateItem._backupObject(self, container, + backup_id = ObjectTemplateItem._backupObject(self, container, object_id, **kw) # Restore the chain to the backuped portal type (default_chain, chain_dict) = self._getChainByType(self) @@ -869,7 +869,7 @@ class PortalTypeTemplateItem(ObjectTemplateItem): def diff(self, verbose=0, **kw): """ - Make a diff between portal type. + Make a diff between portal type. Also compare the workflow chain. """ # Compare XML portal type @@ -994,7 +994,7 @@ class CatalogMethodTemplateItem(ObjectTemplateItem): xml_data += os.linesep+'</catalog_method>' f.write(str(xml_data)) f.close() - + def install(self, context, **kw): ObjectTemplateItem.install(self, context, **kw) try: @@ -1120,7 +1120,7 @@ class CatalogMethodTemplateItem(ObjectTemplateItem): catalog.sql_clear_catalog = tuple(sql_clear_catalog) ObjectTemplateItem.uninstall(self, context, **kw) - + def _importFile(self, file_name, file): if not '.catalog_keys' in file_name and not '.filter_instance' in file_name: # just import xml object @@ -1137,7 +1137,7 @@ class CatalogMethodTemplateItem(ObjectTemplateItem): id = string.split(name, '.')[0] xml = parse(file) method_list = xml.getElementsByTagName('method') - for method in method_list: + for method in method_list: key = method.getElementsByTagName('key')[0].childNodes[0].data value = method.getElementsByTagName('value')[0].childNodes[0].data key = str(key) @@ -1211,7 +1211,7 @@ class ActionTemplateItem(ObjectTemplateItem): raise NotFound, 'Action %r not found' %(id,) def install(self, context, **kw): - if (getattr(self, 'template_format_version', 0)) == 1: + if (getattr(self, 'template_format_version', 0)) == 1: p = context.getPortalObject() for id in self._objects.keys(): path = id.split(os.sep) @@ -1349,7 +1349,7 @@ class SitePropertyTemplateItem(BaseTemplateItem): xml_data += os.linesep+' </property>' xml_data += os.linesep+'</site_property>' bta.addObject(object=xml_data, name='properties', path=root_path) - + class ModuleTemplateItem(BaseTemplateItem): def diff(self, max_deep=1, **kw): @@ -1378,7 +1378,7 @@ class ModuleTemplateItem(BaseTemplateItem): keys.sort() for id in keys: dict = self._objects[id] - xml_data = '<module>' + xml_data = '<module>' for key in dict.keys(): if key =='permission_list': # separe permission dict into xml @@ -1392,13 +1392,13 @@ class ModuleTemplateItem(BaseTemplateItem): xml_data += os.linesep+' <role>%s</role>' %(role) xml_data += os.linesep+' </permission>' xml_data += os.linesep+' </%s>' %(key,) - else: + else: xml_data += os.linesep+' <%s>%s</%s>' %(key, dict[key], key) xml_data += os.linesep+'</module>' bta.addObject(object=xml_data, name=id, path=path) def install(self, context, **kw): - portal = context.getPortalObject() + portal = context.getPortalObject() if (getattr(self, 'template_format_version', 0)) == 1: items = self._objects.items() else: @@ -1450,7 +1450,7 @@ class ModuleTemplateItem(BaseTemplateItem): self._objects[file_name[:-4]] = dict - + def uninstall(self, context, **kw): p = context.getPortalObject() id_list = p.objectIds() @@ -1496,7 +1496,7 @@ class DocumentTemplateItem(BaseTemplateItem): def uninstall(self, context, **kw): for id in self._archive.keys(): - globals()[self.local_file_importer_name](id) + globals()[self.local_file_remover_name](id) BaseTemplateItem.uninstall(self, context, **kw) def export(self, context, bta, **kw): @@ -1510,7 +1510,7 @@ class DocumentTemplateItem(BaseTemplateItem): def _importFile(self, file_name, file): text = file.read() - self._objects[file_name[:-3]]=text + self._objects[file_name[:-3]]=text class PropertySheetTemplateItem(DocumentTemplateItem): local_file_reader_name = 'readLocalPropertySheet' @@ -1518,7 +1518,7 @@ class PropertySheetTemplateItem(DocumentTemplateItem): local_file_importer_name = 'importLocalPropertySheet' local_file_remover_name = 'removeLocalPropertySheet' - + class ExtensionTemplateItem(DocumentTemplateItem): local_file_reader_name = 'readLocalExtension' local_file_writer_name = 'writeLocalExtension' @@ -1551,12 +1551,12 @@ class RoleTemplateItem(BaseTemplateItem): p = context.getPortalObject() roles = {} for role in p.__ac_roles__: - roles[role] = 1 + roles[role] = 1 if (getattr(self, 'template_format_version', 0)) == 1: role_list = self._objects.keys() - else: + else: role_list = self._archive.keys() - for role in role_list: + for role in role_list: roles[role] = 1 p.__ac_roles__ = tuple(roles.keys()) @@ -1604,7 +1604,7 @@ class RoleTemplateItem(BaseTemplateItem): xml_data += os.linesep+' <role>%s</role>' %(role) xml_data += os.linesep+'</role_list>' bta.addObject(object=xml_data, name=path, path=None,) - + class CatalogResultKeyTemplateItem(BaseTemplateItem): def build(self, context, **kw): @@ -1635,7 +1635,7 @@ class CatalogResultKeyTemplateItem(BaseTemplateItem): list.append(str(value)) self._objects[file_name[:-4]] = list - def install(self, context, **kw): + def install(self, context, **kw): try: catalog = context.portal_catalog.getSQLCatalog() except KeyError: @@ -1643,7 +1643,7 @@ class CatalogResultKeyTemplateItem(BaseTemplateItem): if catalog is None: LOG('BusinessTemplate', 0, 'no SQL catalog was available') return - + sql_search_result_keys = list(catalog.sql_search_result_keys) if (getattr(self, 'template_format_version', 0)) == 1: if len(self._objects.keys()) == 0: # needed because of pop() @@ -1652,7 +1652,7 @@ class CatalogResultKeyTemplateItem(BaseTemplateItem): for k in self._objects.values().pop(): # because of list of list keys.append(k) else: - keys = self._archive.keys() + keys = self._archive.keys() for key in keys: if key not in sql_search_result_keys: sql_search_result_keys.append(key) @@ -1679,14 +1679,14 @@ class CatalogResultKeyTemplateItem(BaseTemplateItem): return path = os.path.join(bta.path, self.__class__.__name__) bta.addFolder(name=path) - for path in self._objects.keys(): + for path in self._objects.keys(): object=self._objects[path] xml_data = '<key_list>' for key in object: xml_data += os.linesep+' <key>%s</key>' %(key) - xml_data += os.linesep+'</key_list>' + xml_data += os.linesep+'</key_list>' bta.addObject(object=xml_data, name=path, path=None) - + class CatalogRelatedKeyTemplateItem(BaseTemplateItem): def build(self, context, **kw): @@ -1717,7 +1717,7 @@ class CatalogRelatedKeyTemplateItem(BaseTemplateItem): list.append(str(value)) self._objects[file_name[:-4]] = list - def install(self, context, **kw): + def install(self, context, **kw): try: catalog = context.portal_catalog.getSQLCatalog() except KeyError: @@ -1725,7 +1725,7 @@ class CatalogRelatedKeyTemplateItem(BaseTemplateItem): if catalog is None: LOG('BusinessTemplate', 0, 'no SQL catalog was available') return - + sql_catalog_related_keys = list(catalog.sql_catalog_related_keys) if (getattr(self, 'template_format_version', 0)) == 1: if len(self._objects.keys()) == 0: # needed because of pop() @@ -1734,12 +1734,12 @@ class CatalogRelatedKeyTemplateItem(BaseTemplateItem): for k in self._objects.values().pop(): # because of list of list keys.append(k) else: - keys = self._archive.keys() + keys = self._archive.keys() for key in keys: if key not in sql_catalog_related_keys: sql_catalog_related_keys.append(key) catalog.sql_catalog_related_keys = sql_catalog_related_keys - + def uninstall(self, context, **kw): try: catalog = context.portal_catalog.getSQLCatalog() @@ -1765,7 +1765,7 @@ class CatalogRelatedKeyTemplateItem(BaseTemplateItem): xml_data = '<key_list>' for key in object: xml_data += os.linesep+' <key>%s</key>' %(key) - xml_data += os.linesep+'</key_list>' + xml_data += os.linesep+'</key_list>' bta.addObject(object=xml_data, name=path, path=None) class CatalogResultTableTemplateItem(BaseTemplateItem): @@ -1806,7 +1806,7 @@ class CatalogResultTableTemplateItem(BaseTemplateItem): if catalog is None: LOG('BusinessTemplate', 0, 'no SQL catalog was available') return - + sql_search_tables = list(catalog.sql_search_tables) if (getattr(self, 'template_format_version', 0)) == 1: if len(self._objects.keys()) == 0: # needed because of pop() @@ -1815,7 +1815,7 @@ class CatalogResultTableTemplateItem(BaseTemplateItem): for k in self._objects.values().pop(): # because of list of list keys.append(k) else: - keys = self._archive.keys() + keys = self._archive.keys() for key in keys: if key not in sql_search_tables: sql_search_tables.append(key) @@ -1846,15 +1846,15 @@ class CatalogResultTableTemplateItem(BaseTemplateItem): xml_data = '<key_list>' for key in object: xml_data += os.linesep+' <key>%s</key>' %(key) - xml_data += os.linesep+'</key_list>' + xml_data += os.linesep+'</key_list>' bta.addObject(object=xml_data, name=path, path=None) - + class MessageTranslationTemplateItem(BaseTemplateItem): def build(self, context, **kw): localizer = context.getPortalObject().Localizer for lang in self._archive.keys(): - # Export only erp5_ui at the moment. + # Export only erp5_ui at the moment. # This is safer against information leak. for catalog in ('erp5_ui', ): path = os.path.join(lang, catalog) @@ -1900,9 +1900,9 @@ class MessageTranslationTemplateItem(BaseTemplateItem): def _importFile(self, file_name, file): text = file.read() - self._objects[file_name[:-3]]=text + self._objects[file_name[:-3]]=text -class BusinessTemplate(XMLObject): +class BusinessTemplate(XMLObject): """ A business template allows to construct ERP5 modules in part or completely. Each object are separated from its @@ -1932,13 +1932,13 @@ class BusinessTemplate(XMLObject): - document/propertysheet/extension/test definition - copy of the local file - + - message transalation definition - - .po file + - .po file The Business Template properties are exported to the bt folder with one property per file - + Technology: - download a gzip file or folder tree (from the web, from a CVS repository, @@ -1949,11 +1949,11 @@ class BusinessTemplate(XMLObject): Use case: - install core ERP5 (the minimum) - + - go to "BT" menu. Import BT. Select imported BT. Click install. - - go to "BT" menu. Create new BT. - Define BT elements (workflow, methods, attributes, etc.). + - go to "BT" menu. Create new BT. + Define BT elements (workflow, methods, attributes, etc.). Build BT and export or save it Done. """ @@ -2095,7 +2095,7 @@ Business Template is a set of definitions, such as skins, portal types and categ # Make sure that the installation state is "not installed". if portal_workflow.getStatusOf( 'business_template_installation_workflow', self) is not None: - # XXX Not good to access the attribute directly, + # XXX Not good to access the attribute directly, # but there is no API for clearing the history. self.workflow_history[ 'business_template_installation_workflow'] = None @@ -2107,13 +2107,13 @@ Business Template is a set of definitions, such as skins, portal types and categ """ # Make sure that everything is sane. self.clean() - + # XXX Trim down the history to prevent it from bloating the bt5 file. # XXX Is there any better way to shrink the size??? # XXX Is it still necessary as it is not saved in new bt format ?? portal_workflow = getToolByName(self, 'portal_workflow') wf_id_list = portal_workflow.getChainFor(self) - original_history_dict = {} + original_history_dict = {} for wf_id in wf_id_list: history = portal_workflow.getHistoryOf(wf_id, self) if history is not None and len(history) > 30: @@ -2173,7 +2173,7 @@ Business Template is a set of definitions, such as skins, portal types and categ """ Publish in a format or another """ - return self.portal_templates.publish(self, url, username=username, + return self.portal_templates.publish(self, url, username=username, password=password) def update(self): @@ -2185,7 +2185,7 @@ Business Template is a set of definitions, such as skins, portal types and categ def _install(self, **kw): installed_bt = self.portal_templates.getInstalledBusinessTemplate( self.getTitle()) - LOG('Business Template install', 0, + LOG('Business Template install', 0, 'self = %r, installed_bt = %r' % (self, installed_bt)) if installed_bt is not None: @@ -2199,7 +2199,7 @@ Business Template is a set of definitions, such as skins, portal types and categ for item_name in self._item_name_list: item = getattr(self, item_name) if item is not None: - item.install(local_configuration) + item.install(local_configuration) # It is better to clear cache because the installation of a template # adds many new things into the portal. clearCache() @@ -2210,7 +2210,7 @@ Business Template is a set of definitions, such as skins, portal types and categ For install based on paramaters provided in **kw """ return self._install(**kw) - + install = WorkflowMethod(install) security.declareProtected(Permissions.ManagePortal, 'reinstall') @@ -2224,9 +2224,9 @@ Business Template is a set of definitions, such as skins, portal types and categ security.declareProtected(Permissions.ManagePortal, 'trash') def trash(self, new_bt, **kw): """ - Trash unnecessary items before upgrading to a new business + Trash unnecessary items before upgrading to a new business template. - This is similar to uninstall, but different in that this does + This is similar to uninstall, but different in that this does not remove all items. """ # Update local dictionary containing all setup parameters @@ -2256,7 +2256,7 @@ Business Template is a set of definitions, such as skins, portal types and categ item = getattr(self, item_name) if item is not None: item.uninstall(local_configuration) - # It is better to clear cache because the uninstallation of a + # It is better to clear cache because the uninstallation of a # template deletes many things from the portal. clearCache() @@ -2269,14 +2269,14 @@ Business Template is a set of definitions, such as skins, portal types and categ """ # First, remove obsolete attributes if present. self._objects = None - for attr in ( '_action_archive', - '_document_archive', - '_extension_archive', - '_test_archive', + for attr in ( '_action_archive', + '_document_archive', + '_extension_archive', + '_test_archive', '_module_archive', - '_object_archive', - '_portal_type_archive', - '_property_archive', + '_object_archive', + '_portal_type_archive', + '_property_archive', '_property_sheet_archive'): if hasattr(self, attr): delattr(self, attr) @@ -2286,7 +2286,7 @@ Business Template is a set of definitions, such as skins, portal types and categ clean = WorkflowMethod(clean) - security.declareProtected(Permissions.AccessContentsInformation, + security.declareProtected(Permissions.AccessContentsInformation, 'getBuildingState') def getBuildingState(self, id_only=1): """ @@ -2297,7 +2297,7 @@ Business Template is a set of definitions, such as skins, portal types and categ 'business_template_building_workflow') return wf._getWorkflowStateOf(self, id_only=id_only ) - security.declareProtected(Permissions.AccessContentsInformation, + security.declareProtected(Permissions.AccessContentsInformation, 'getInstallationState') def getInstallationState(self, id_only=1): """ @@ -2315,11 +2315,11 @@ Business Template is a set of definitions, such as skins, portal types and categ """ portal_templates = getToolByName(self, 'portal_templates') export_string = portal_templates.manage_exportObject( - id=self.getId(), - toxml=1, + id=self.getId(), + toxml=1, download=1) return export_string - + def _getOrderedList(self, id): """ We have to set this method because we want an @@ -2389,7 +2389,7 @@ Business Template is a set of definitions, such as skins, portal types and categ """ return self._getOrderedList('template_message_translation') - security.declareProtected(Permissions.AccessContentsInformation, + security.declareProtected(Permissions.AccessContentsInformation, 'diff') def diff(self, verbose=0): """ @@ -2413,7 +2413,7 @@ Business Template is a set of definitions, such as skins, portal types and categ if self.getBuildingState() != 'built': raise TemplateConditionError, 'Business Template must be build before export' - + if local: # we export into a folder tree bta = BusinessTemplateFolder(creation=1, path=path) @@ -2421,19 +2421,19 @@ Business Template is a set of definitions, such as skins, portal types and categ # We export BT into a tarball file bta = BusinessTemplateTarball(creation=1, path=path) - # export bt + # export bt bta.addFolder(path+os.sep+'bt') for prop in self.propertyMap(): type = prop['type'] id = prop['id'] if id in ('uid', 'rid', 'sid', 'id_group', 'last_id'): - continue + continue value = self.getProperty(id) if type == 'text' or type == 'string' or type == 'int': bta.addObject(object=value, name=id, path=path+os.sep+'bt', ext='') elif type == 'lines' or type == 'tokens': bta.addObject(object=str(os.linesep).join(value), name=id, path=path+os.sep+'bt', ext='') - + # Export each part for item_name in self._item_name_list: getattr(self, item_name).export(context=self, bta=bta) @@ -2451,7 +2451,7 @@ Business Template is a set of definitions, such as skins, portal types and categ bta = BusinessTemplateFolder(importing=1, file=file, path=root_path) else: bta = BusinessTemplateTarball(importing=1, file=file) - + self._portal_type_item = \ PortalTypeTemplateItem(self.getTemplatePortalTypeIdList()) self._workflow_item = \ -- 2.30.9