diff --git a/product/ERP5/Document/BusinessTemplate.py b/product/ERP5/Document/BusinessTemplate.py index 7234699f870fd7bbc943e5bdd489153fc03e631e..9cb9e6eb4746918790c607c82edd69b2717ff8cb 100755 --- a/product/ERP5/Document/BusinessTemplate.py +++ b/product/ERP5/Document/BusinessTemplate.py @@ -312,6 +312,19 @@ class BaseTemplateItem(Implicit, Persistent): def importFile(self, bta, **kw): bta.importFiles(klass=self) + def removeProperties(self, obj): + """ + Remove unneeded properties for export + """ + if hasattr(obj, '__ac_local_roles__'): + # remove local roles + obj.__ac_local_roles__ = None + if hasattr(obj, '_owner'): + obj._owner = None + if hasattr(aq_base(obj), 'uid'): + obj.uid = None + return obj + class ObjectTemplateItem(BaseTemplateItem): """ This class is used for generic objects and as a subclass. @@ -353,20 +366,14 @@ class ObjectTemplateItem(BaseTemplateItem): relative_url = '/'.join([url,id]) obj = p.unrestrictedTraverse(relative_url) obj = obj._getCopy(context) + obj = self.removeProperties(obj) id_list = obj.objectIds() - if hasattr(obj, '__ac_local_roles__'): - # remove local roles - obj.__ac_local_roles__ = None - if hasattr(obj, '_owner'): - obj._owner = None if hasattr(aq_base(obj), 'groups'): # we must keep groups because it's ereased when we delete subobjects groups = deepcopy(obj.groups) if len(id_list) > 0: self.build_sub_objects(context, id_list, relative_url) obj.manage_delObjects(list(id_list)) - if hasattr(aq_base(obj), 'uid'): - obj.uid = None if hasattr(aq_base(obj), 'groups'): obj.groups = groups self._objects[relative_url] = obj @@ -379,20 +386,14 @@ class ObjectTemplateItem(BaseTemplateItem): for relative_url in self._archive.keys(): obj = p.unrestrictedTraverse(relative_url) obj = obj._getCopy(context) + obj = self.removeProperties(obj) id_list = obj.objectIds() - if hasattr(obj, '__ac_local_roles__'): - # remove local roles - obj.__ac_local_roles__ = None - if hasattr(obj, '_owner'): - obj._owner = None if hasattr(aq_base(obj), 'groups'): # we must keep groups because it's ereased when we delete subobjects groups = deepcopy(obj.groups) if len(id_list) > 0: self.build_sub_objects(context, id_list, relative_url) obj.manage_delObjects(list(id_list)) - if hasattr(aq_base(obj), 'uid'): - obj.uid = None if hasattr(aq_base(obj), 'groups'): obj.groups = groups self._objects[relative_url] = obj @@ -649,13 +650,7 @@ class PathTemplateItem(ObjectTemplateItem): obj = p.unrestrictedTraverse(relative_url) obj = obj._getCopy(context) id_list = obj.objectIds() - if hasattr(obj, '__ac_local_roles__'): - # remove local roles - obj.__ac_local_roles__ = None - if hasattr(obj, '_owner'): - obj._owner = None - if hasattr(aq_base(obj), 'uid'): - obj.uid = None + obj = self.removeProperties(obj) if hasattr(aq_base(obj), 'groups'): # we must keep groups because it's ereased when we delete subobjects groups = deepcopy(obj.groups) @@ -679,17 +674,11 @@ class CategoryTemplateItem(ObjectTemplateItem): relative_url = '/'.join([url,id]) obj = p.unrestrictedTraverse(relative_url) obj = obj._getCopy(context) - if hasattr(obj, '__ac_local_roles__'): - # remove local roles - obj.__ac_local_roles__ = None - if hasattr(obj, '_owner'): - obj._owner = None + obj = self.removeProperties(obj) id_list = obj.objectIds() if len(id_list) > 0: self.build_sub_objects(context, id_list, relative_url) obj.manage_delObjects(list(id_list)) - if hasattr(aq_base(obj), 'uid'): - obj.uid = None self._objects[relative_url] = obj obj.wl_clearLocks() @@ -699,11 +688,7 @@ class CategoryTemplateItem(ObjectTemplateItem): for relative_url in self._archive.keys(): obj = p.unrestrictedTraverse(relative_url) obj = obj._getCopy(context) - if hasattr(obj, '__ac_local_roles__'): - # remove local roles - obj.__ac_local_roles__ = None - if hasattr(obj, '_owner'): - obj._owner = None + obj = self.removeProperties(obj) include_sub_categories = obj.__of__(context).getProperty('business_template_include_sub_categories', 0) id_list = obj.objectIds() if len(id_list) > 0 and include_sub_categories: @@ -711,8 +696,6 @@ class CategoryTemplateItem(ObjectTemplateItem): obj.manage_delObjects(list(id_list)) else: obj.manage_delObjects(list(id_list)) - if hasattr(aq_base(obj), 'uid'): - obj.uid = None self._objects[relative_url] = obj obj.wl_clearLocks() @@ -1011,13 +994,7 @@ class PortalTypeTemplateItem(ObjectTemplateItem): optional_action_list.append(index) if len(optional_action_list) > 0: obj.deleteActions(selections=optional_action_list) - if hasattr(obj, '__ac_local_roles__'): - # remove local roles - obj.__ac_local_roles__ = None - if hasattr(obj, '_owner'): - obj._owner = None - if hasattr(aq_base(obj), 'uid'): - obj.uid = None + obj = self.removeProperties(obj) self._objects[relative_url] = obj obj.wl_clearLocks() # also export workflow chain @@ -1394,13 +1371,7 @@ class ActionTemplateItem(ObjectTemplateItem): url = os.path.split(relative_url) key = os.path.join(url[-2], url[-1], value) action = ai._getCopy(context) - if hasattr(action, '__ac_local_roles__'): - # remove local roles - action.__ac_local_roles__ = None - if hasattr(action, '_owner'): - action._owner = None - if hasattr(aq_base(action), 'uid'): - action.uid = None + action = self.removeProperties(action) self._objects[key] = action self._objects[key].wl_clearLocks() break