[Erp5-report] r19407 - in /erp5/trunk/products/ERP5: Document/ tests/
nobody at svn.erp5.org
nobody at svn.erp5.org
Tue Feb 19 17:39:52 CET 2008
Author: romain
Date: Tue Feb 19 17:39:51 2008
New Revision: 19407
URL: http://svn.erp5.org?rev=19407&view=rev
Log:
Manage catalog role_keys and local_role_keys.
Modified:
erp5/trunk/products/ERP5/Document/BusinessTemplate.py
erp5/trunk/products/ERP5/tests/testBusinessTemplate.py
Modified: erp5/trunk/products/ERP5/Document/BusinessTemplate.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/BusinessTemplate.py?rev=19407&r1=19406&r2=19407&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/BusinessTemplate.py (original)
+++ erp5/trunk/products/ERP5/Document/BusinessTemplate.py Tue Feb 19 17:39:51 2008
@@ -3866,6 +3866,192 @@
xml_data = self.generateXml(path=path)
bta.addObject(obj=xml_data, name=path, path=None)
+class CatalogRoleKeyTemplateItem(BaseTemplateItem):
+ # XXX Copy/paste from CatalogScriptableKeyTemplateItem
+
+ def build(self, context, **kw):
+ catalog = _getCatalogValue(self)
+ if catalog is None:
+ LOG('BusinessTemplate', 0, 'no SQL catalog was available')
+ return
+ sql_catalog_role_keys = list(catalog.sql_catalog_role_keys)
+ key_list = []
+ for key in self._archive.keys():
+ if key in sql_catalog_role_keys:
+ key_list.append(key)
+ else:
+ raise NotFound, 'Role key "%r" not found in catalog' %(key,)
+ if len(key_list) > 0:
+ self._objects[self.__class__.__name__+'/'+'role_key_list'] = key_list
+
+ def _importFile(self, file_name, file):
+ list = []
+ xml = parse(file)
+ key_list = xml.getElementsByTagName('key')
+ for key in key_list:
+ node = key.childNodes[0]
+ value = node.data
+ list.append(str(value))
+ self._objects[file_name[:-4]] = list
+
+ def install(self, context, trashbin, **kw):
+ catalog = _getCatalogValue(self)
+ if catalog is None:
+ LOG('BusinessTemplate', 0, 'no SQL catalog was available')
+ return
+
+ sql_catalog_role_keys = list(catalog.sql_catalog_role_keys)
+ if context.getTemplateFormatVersion() == 1:
+ if len(self._objects.keys()) == 0: # needed because of pop()
+ return
+ keys = []
+ for k in self._objects.values().pop(): # because of list of list
+ keys.append(k)
+ else:
+ keys = self._archive.keys()
+ update_dict = kw.get('object_to_update')
+ force = kw.get('force')
+ # XXX must a find a better way to manage scriptable key
+ if update_dict.has_key('role_key_list') or force:
+ if not force:
+ if update_dict.has_key('role_key_list'):
+ action = update_dict['role_key_list']
+ if action == 'nothing':
+ return
+ for key in keys:
+ if key not in sql_catalog_role_keys:
+ sql_catalog_role_keys.append(key)
+ catalog.sql_catalog_role_keys = tuple(sql_catalog_role_keys)
+
+ def uninstall(self, context, **kw):
+ catalog = _getCatalogValue(self)
+ if catalog is None:
+ LOG('BusinessTemplate', 0, 'no SQL catalog was available')
+ return
+ sql_catalog_role_keys = list(catalog.sql_catalog_role_keys)
+ object_path = kw.get('object_path', None)
+ if object_path is not None:
+ object_keys = [object_path]
+ else:
+ object_keys = self._archive.keys()
+ for key in object_keys:
+ if key in sql_catalog_role_keys:
+ sql_catalog_role_keys.remove(key)
+ catalog.sql_catalog_role_keys = tuple(sql_catalog_role_keys)
+ BaseTemplateItem.uninstall(self, context, **kw)
+
+ # Function to generate XML Code Manually
+ def generateXml(self, path=None):
+ obj = self._objects[path]
+ xml_data = '<key_list>'
+ obj.sort()
+ for key in obj:
+ xml_data += '\n <key>%s</key>' %(key)
+ xml_data += '\n</key_list>'
+ return xml_data
+
+ def export(self, context, bta, **kw):
+ if len(self._objects.keys()) == 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)
+
+class CatalogLocalRoleKeyTemplateItem(BaseTemplateItem):
+ # XXX Copy/paste from CatalogScriptableKeyTemplateItem
+
+ def build(self, context, **kw):
+ catalog = _getCatalogValue(self)
+ if catalog is None:
+ LOG('BusinessTemplate', 0, 'no SQL catalog was available')
+ return
+ sql_catalog_local_role_keys = list(catalog.sql_catalog_local_role_keys)
+ key_list = []
+ for key in self._archive.keys():
+ if key in sql_catalog_local_role_keys:
+ key_list.append(key)
+ else:
+ raise NotFound, 'LocalRole key "%r" not found in catalog' %(key,)
+ if len(key_list) > 0:
+ self._objects[self.__class__.__name__+'/'+'local_role_key_list'] = key_list
+
+ def _importFile(self, file_name, file):
+ list = []
+ xml = parse(file)
+ key_list = xml.getElementsByTagName('key')
+ for key in key_list:
+ node = key.childNodes[0]
+ value = node.data
+ list.append(str(value))
+ self._objects[file_name[:-4]] = list
+
+ def install(self, context, trashbin, **kw):
+ catalog = _getCatalogValue(self)
+ if catalog is None:
+ LOG('BusinessTemplate', 0, 'no SQL catalog was available')
+ return
+
+ sql_catalog_local_role_keys = list(catalog.sql_catalog_local_role_keys)
+ if context.getTemplateFormatVersion() == 1:
+ if len(self._objects.keys()) == 0: # needed because of pop()
+ return
+ keys = []
+ for k in self._objects.values().pop(): # because of list of list
+ keys.append(k)
+ else:
+ keys = self._archive.keys()
+ update_dict = kw.get('object_to_update')
+ force = kw.get('force')
+ # XXX must a find a better way to manage scriptable key
+ if update_dict.has_key('local_role_key_list') or force:
+ if not force:
+ if update_dict.has_key('local_role_key_list'):
+ action = update_dict['local_role_key_list']
+ if action == 'nothing':
+ return
+ for key in keys:
+ if key not in sql_catalog_local_role_keys:
+ sql_catalog_local_role_keys.append(key)
+ catalog.sql_catalog_local_role_keys = tuple(sql_catalog_local_role_keys)
+
+ def uninstall(self, context, **kw):
+ catalog = _getCatalogValue(self)
+ if catalog is None:
+ LOG('BusinessTemplate', 0, 'no SQL catalog was available')
+ return
+ sql_catalog_local_role_keys = list(catalog.sql_catalog_local_role_keys)
+ object_path = kw.get('object_path', None)
+ if object_path is not None:
+ object_keys = [object_path]
+ else:
+ object_keys = self._archive.keys()
+ for key in object_keys:
+ if key in sql_catalog_local_role_keys:
+ sql_catalog_local_role_keys.remove(key)
+ catalog.sql_catalog_local_role_keys = tuple(sql_catalog_local_role_keys)
+ BaseTemplateItem.uninstall(self, context, **kw)
+
+ # Function to generate XML Code Manually
+ def generateXml(self, path=None):
+ obj = self._objects[path]
+ xml_data = '<key_list>'
+ obj.sort()
+ for key in obj:
+ xml_data += '\n <key>%s</key>' %(key)
+ xml_data += '\n</key_list>'
+ return xml_data
+
+ def export(self, context, bta, **kw):
+ if len(self._objects.keys()) == 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)
+
class MessageTranslationTemplateItem(BaseTemplateItem):
def build(self, context, **kw):
@@ -4209,6 +4395,8 @@
'_catalog_multivalue_key_item',
'_catalog_topic_key_item',
'_catalog_scriptable_key_item',
+ '_catalog_role_key_item',
+ '_catalog_local_role_key_item',
]
def __init__(self, *args, **kw):
@@ -4364,6 +4552,12 @@
self._catalog_scriptable_key_item = \
CatalogScriptableKeyTemplateItem(
self.getTemplateCatalogScriptableKeyList())
+ self._catalog_role_key_item = \
+ CatalogRoleKeyTemplateItem(
+ self.getTemplateCatalogRoleKeyList())
+ self._catalog_local_role_key_item = \
+ CatalogLocalRoleKeyTemplateItem(
+ self.getTemplateCatalogLocalRoleKeyList())
# Build each part
for item_name in self._item_name_list:
@@ -4971,6 +5165,12 @@
self._catalog_scriptable_key_item = \
CatalogScriptableKeyTemplateItem(
self.getTemplateCatalogScriptableKeyList())
+ self._catalog_role_key_item = \
+ CatalogRoleKeyTemplateItem(
+ self.getTemplateCatalogRoleKeyList())
+ self._catalog_local_role_key_item = \
+ CatalogLocalRoleKeyTemplateItem(
+ self.getTemplateCatalogLocalRoleKeyList())
for item_name in self._item_name_list:
getattr(self, item_name).importFile(bta)
@@ -5057,6 +5257,8 @@
'CatalogTopicKey' : '_catalog_topic_key_item',
'Tool': '_tool_item',
'CatalogScriptableKey' : '_catalog_scriptable_key_item',
+ 'CatalogRoleKey' : '_catalog_role_key_item',
+ 'CatalogLocalRoleKey' : '_catalog_local_role_key_item',
}
object_id = REQUEST.object_id
@@ -5113,6 +5315,8 @@
'_catalog_multivalue_key_item',
'_catalog_topic_key_item',
'_catalog_scriptable_key_item',
+ '_catalog_role_key_item',
+ '_catalog_local_role_key_item',
'_portal_type_allowed_content_type_item',
'_portal_type_hidden_content_type_item',
'_portal_type_property_sheet_item',
Modified: erp5/trunk/products/ERP5/tests/testBusinessTemplate.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testBusinessTemplate.py?rev=19407&r1=19406&r2=19407&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testBusinessTemplate.py (original)
+++ erp5/trunk/products/ERP5/tests/testBusinessTemplate.py Tue Feb 19 17:39:51 2008
@@ -1353,6 +1353,8 @@
multivalue_key = 'fake_multivalue'
topic_key = 'fake_topic'
scriptable_key = 'fake_search_text | fake_script_query'
+ role_key = 'Foo | catalog.owner'
+ local_role_key = 'Bar | catalog.owner'
catalog = self.getCatalogTool().getSQLCatalog()
self.failUnless(catalog is not None)
# result table
@@ -1418,11 +1420,28 @@
sql_catalog_scriptable_keys.sort()
catalog.sql_catalog_scriptable_keys = tuple(sql_catalog_scriptable_keys)
self.failUnless(scriptable_key in catalog.sql_catalog_scriptable_keys)
-
- sequence.edit(related_key=related_key, result_key=result_key, result_table=result_table, \
- keyword_key=keyword_key, full_text_key=full_text_key, request_key=request_key, \
+ # role keys
+ if role_key not in catalog.sql_catalog_role_keys:
+ sql_catalog_role_keys = list(catalog.sql_catalog_role_keys)
+ sql_catalog_role_keys.append(role_key)
+ sql_catalog_role_keys.sort()
+ catalog.sql_catalog_role_keys = tuple(sql_catalog_role_keys)
+ self.failUnless(role_key in catalog.sql_catalog_role_keys)
+ # local_role keys
+ if local_role_key not in catalog.sql_catalog_local_role_keys:
+ sql_catalog_local_role_keys = list(catalog.sql_catalog_local_role_keys)
+ sql_catalog_local_role_keys.append(local_role_key)
+ sql_catalog_local_role_keys.sort()
+ catalog.sql_catalog_local_role_keys = tuple(sql_catalog_local_role_keys)
+ self.failUnless(local_role_key in catalog.sql_catalog_local_role_keys)
+
+ sequence.edit(related_key=related_key, result_key=result_key,
+ result_table=result_table,
+ keyword_key=keyword_key, full_text_key=full_text_key,
+ request_key=request_key,
multivalue_key=multivalue_key, topic_key=topic_key, \
- scriptable_key=scriptable_key)
+ scriptable_key=scriptable_key,
+ role_key=role_key, local_role_key=local_role_key)
def stepModifyCatalogConfiguration(self, sequence, **kw):
"""Modify the current configuration of the catalog.
@@ -1505,6 +1524,10 @@
self.failUnless(topic_key is not None)
scriptable_key = sequence.get('scriptable_key', None)
self.failUnless(scriptable_key is not None)
+ role_key = sequence.get('role_key', None)
+ self.failUnless(role_key is not None)
+ local_role_key = sequence.get('local_role_key', None)
+ self.failUnless(local_role_key is not None)
bt.edit(template_catalog_related_key_list=[related_key],
template_catalog_result_key_list=[result_key],
@@ -1515,6 +1538,8 @@
template_catalog_multivalue_key_list=[multivalue_key],
template_catalog_topic_key_list=[topic_key],
template_catalog_scriptable_key_list=[scriptable_key],
+ template_catalog_role_key_list=[role_key],
+ template_catalog_local_role_key_list=[local_role_key],
)
def stepRemoveKeysAndTable(self, sequence=list, sequence_list=None, **kw):
@@ -1539,6 +1564,10 @@
self.failUnless(topic_key is not None)
scriptable_key = sequence.get('scriptable_key', None)
self.failUnless(scriptable_key is not None)
+ role_key = sequence.get('role_key', None)
+ self.failUnless(role_key is not None)
+ local_role_key = sequence.get('local_role_key', None)
+ self.failUnless(local_role_key is not None)
catalog = self.getCatalogTool().getSQLCatalog()
self.failUnless(catalog is not None)
@@ -1596,6 +1625,18 @@
sql_catalog_scriptable_keys.sort()
catalog.sql_catalog_scriptable_keys = tuple(sql_catalog_scriptable_keys)
self.failUnless(scriptable_key not in catalog.sql_catalog_scriptable_keys)
+ # role keys
+ sql_catalog_role_keys = list(catalog.sql_catalog_role_keys)
+ sql_catalog_role_keys.remove(role_key)
+ sql_catalog_role_keys.sort()
+ catalog.sql_catalog_role_keys = tuple(sql_catalog_role_keys)
+ self.failUnless(role_key not in catalog.sql_catalog_role_keys)
+ # local_role keys
+ sql_catalog_local_role_keys = list(catalog.sql_catalog_local_role_keys)
+ sql_catalog_local_role_keys.remove(local_role_key)
+ sql_catalog_local_role_keys.sort()
+ catalog.sql_catalog_local_role_keys = tuple(sql_catalog_local_role_keys)
+ self.failUnless(local_role_key not in catalog.sql_catalog_local_role_keys)
def stepCheckKeysAndTableExists(self, sequence=list, sequence_list=None, **kw):
@@ -1620,6 +1661,10 @@
self.failUnless(topic_key is not None)
scriptable_key = sequence.get('scriptable_key', None)
self.failUnless(scriptable_key is not None)
+ role_key = sequence.get('role_key', None)
+ self.failUnless(role_key is not None)
+ local_role_key = sequence.get('local_role_key', None)
+ self.failUnless(local_role_key is not None)
catalog = self.getCatalogTool().getSQLCatalog()
self.failUnless(catalog is not None)
@@ -1641,6 +1686,10 @@
self.failUnless(topic_key in catalog.sql_catalog_topic_search_keys)
# scriptable key
self.failUnless(scriptable_key in catalog.sql_catalog_scriptable_keys)
+ # role key
+ self.failUnless(role_key in catalog.sql_catalog_role_keys)
+ # local_role key
+ self.failUnless(local_role_key in catalog.sql_catalog_local_role_keys)
def stepCheckKeysAndTableRemoved(self, sequence=list, sequence_list=None, **kw):
"""
@@ -1664,6 +1713,10 @@
self.failUnless(topic_key is not None)
scriptable_key = sequence.get('scriptable_key', None)
self.failUnless(scriptable_key is not None)
+ role_key = sequence.get('role_key', None)
+ self.failUnless(role_key is not None)
+ local_role_key = sequence.get('local_role_key', None)
+ self.failUnless(local_role_key is not None)
catalog = self.getCatalogTool().getSQLCatalog()
self.failUnless(catalog is not None)
@@ -1685,6 +1738,10 @@
self.failUnless(topic_key not in catalog.sql_catalog_topic_search_keys)
# scriptable key
self.failUnless(scriptable_key not in catalog.sql_catalog_scriptable_keys)
+ # role key
+ self.failUnless(role_key not in catalog.sql_catalog_role_keys)
+ # local_role key
+ self.failUnless(local_role_key not in catalog.sql_catalog_local_role_keys)
# Roles
def stepCreateRole(self, sequence=None, sequence_list=None, **kw):
More information about the Erp5-report
mailing list