[Erp5-report] r36722 kazuhiko - /erp5/trunk/products/ERP5/Document/BusinessTemplate.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed Jun 30 12:11:52 CEST 2010
Author: kazuhiko
Date: Wed Jun 30 12:11:52 2010
New Revision: 36722
URL: http://svn.erp5.org?rev=36722&view=rev
Log:
* register into type provider in install() instead of onNewObject(), to make it working by callin install(force=True).
* unregister tool from type provider in uninstall() and remove().
Modified:
erp5/trunk/products/ERP5/Document/BusinessTemplate.py
Modified: erp5/trunk/products/ERP5/Document/BusinessTemplate.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/BusinessTemplate.py?rev=36722&r1=36721&r2=36722&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/BusinessTemplate.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Document/BusinessTemplate.py [utf8] Wed Jun 30 12:11:52 2010
@@ -1343,18 +1343,48 @@ class ToolTemplateItem(PathTemplateItem)
return PathTemplateItem._backupObject(self, action, None, container_path,
object_id, **kw)
- def onNewObject(self, obj):
+ def install(self, context, trashbin, **kw):
""" When we install a tool that is a type provider not
- registered on types tool, register the type provider.
+ registered on types tool, register it into the type provider.
"""
- portal = obj.getPortalObject()
+ PathTemplateItem.install(self, context, trashbin, **kw)
+ portal = context.getPortalObject()
+ types_tool = portal.portal_types
+ for type_container_id, obj in self._objects.iteritems():
+ if interfaces.ITypeProvider.isImplementedBy(obj) and \
+ type_container_id not in types_tool.type_provider_list:
+ types_tool.type_provider_list = tuple(types_tool.type_provider_list) + \
+ (type_container_id,)
+
+ def uninstall(self, context, **kw):
+ """ When we uninstall a tool, unregister it from the type provider. """
+ portal = context.getPortalObject()
types_tool = portal.portal_types
- type_container_id = obj.getId()
- if interfaces.ITypeProvider.isImplementedBy(obj) and \
- type_container_id not in types_tool.type_provider_list:
- types_tool.type_provider_list = tuple(types_tool.type_provider_list) + \
- (type_container_id,)
- return PathTemplateItem.onNewObject(self, obj)
+ object_path = kw.get('object_path', None)
+ if object_path is not None:
+ object_keys = [object_path]
+ else:
+ object_keys = self._path_archive.keys()
+ for tool_id in object_keys:
+ types_tool.type_provider_list = tuple([ \
+ x for x in types_tool.type_provider_list \
+ if x != tool_id])
+ PathTemplateItem.uninstall(self, context, **kw)
+
+ def remove(self, context, **kw):
+ """ When we remove a tool, unregister it from the type provider. """
+ portal = context.getPortalObject()
+ types_tool = portal.portal_types
+ remove_dict = kw.get('remove_object_dict', {})
+ keys = self._objects.keys()
+ for tool_id in keys:
+ if remove_dict.has_key(tool_id):
+ action = remove_dict[tool_id]
+ if 'remove' in action:
+ types_tool.type_provider_list = tuple([ \
+ x for x in types_tool.type_provider_list \
+ if x != tool_id])
+ PathTemplateItem.remove(self, context, **kw)
class PreferenceTemplateItem(PathTemplateItem):
"""
More information about the Erp5-report
mailing list