From 6ce5cc01fe7ec95d7dcb538c62c0ca7cd6510767 Mon Sep 17 00:00:00 2001 From: Yoshinori Okuji <yo@nexedi.com> Date: Wed, 17 Mar 2010 08:09:38 +0000 Subject: [PATCH] RoleTemplateItem.build should generate data consistent with imported data. git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@33785 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5/Document/BusinessTemplate.py | 45 +++++++++++------------ 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/product/ERP5/Document/BusinessTemplate.py b/product/ERP5/Document/BusinessTemplate.py index bb33e639da..2713ca57c4 100644 --- a/product/ERP5/Document/BusinessTemplate.py +++ b/product/ERP5/Document/BusinessTemplate.py @@ -3266,25 +3266,19 @@ class ProductTemplateItem(BaseTemplateItem): class RoleTemplateItem(BaseTemplateItem): def build(self, context, **kw): - role_list = [] - for key in self._archive.keys(): - role_list.append(key) - if len(role_list) > 0: - self._objects[self.__class__.__name__+'/'+'role_list'] = role_list + for key in self._archive.iterkeys(): + self._objects[key] = 1 def preinstall(self, context, installed_item, **kw): modified_object_list = {} if context.getTemplateFormatVersion() == 1: new_roles = self._objects.keys() - if installed_item.id == INSTALLED_BT_FOR_DIFF: - #must rename keys in dict if reinstall - new_dict = PersistentMapping() - old_keys = () - if len(installed_item._objects.values()) > 0: - old_keys = installed_item._objects.values()[0] - for key in old_keys: - new_dict[key] = '' - installed_item._objects = new_dict + # BBB it might be necessary to change the data structure. + obsolete_key = self.__class__.__name__ + '/role_list' + if obsolete_key in installed_item._objects: + for role in installed_item._objects[obsolete_key]: + installed_item._objects[role] = 1 + del installed_item._objects[obsolete_key] for role in new_roles: if installed_item._objects.has_key(role): continue @@ -3347,23 +3341,28 @@ class RoleTemplateItem(BaseTemplateItem): p.__ac_roles__ = tuple(roles.keys()) # Function to generate XML Code Manually - def generateXml(self, path): - obj = self._objects[path] + def generateXml(self): + role_list = self._objects.keys() xml_data = '<role_list>' - obj.sort() - for role in obj: - xml_data += '\n <role>%s</role>' %(role) + for role in sorted(role_list): + xml_data += '\n <role>%s</role>' % (role,) xml_data += '\n</role_list>' return xml_data def export(self, context, bta, **kw): - if len(self._objects.keys()) == 0: + if len(self._objects) == 0: return path = os.path.join(bta.path, self.__class__.__name__) bta.addFolder(name=path) - for path in self._objects.keys(): - xml_data = self.generateXml(path=path) - bta.addObject(obj=xml_data, name=path, path=None,) + # BBB it might be necessary to change the data structure. + obsolete_key = self.__class__.__name__ + '/role_list' + if obsolete_key in self._objects: + for role in self._objects[obsolete_key]: + self._objects[role] = 1 + del self._objects[obsolete_key] + xml_data = self.generateXml() + path = obsolete_key + bta.addObject(obj=xml_data, name=path) class CatalogResultKeyTemplateItem(BaseTemplateItem): -- 2.30.9