Commit 578174d3 authored by Yusei Tahara's avatar Yusei Tahara

Added scriptable key field in business template.


git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@18701 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent 8118552e
...@@ -3752,6 +3752,98 @@ class CatalogTopicKeyTemplateItem(BaseTemplateItem): ...@@ -3752,6 +3752,98 @@ class CatalogTopicKeyTemplateItem(BaseTemplateItem):
xml_data = self.generateXml(path=path) xml_data = self.generateXml(path=path)
bta.addObject(obj=xml_data, name=path, path=None) bta.addObject(obj=xml_data, name=path, path=None)
class CatalogScriptableKeyTemplateItem(BaseTemplateItem):
def build(self, context, **kw):
catalog = _getCatalogValue(self)
if catalog is None:
LOG('BusinessTemplate', 0, 'no SQL catalog was available')
return
sql_catalog_scriptable_keys = list(catalog.sql_catalog_scriptable_keys)
key_list = []
for key in self._archive.keys():
if key in sql_catalog_scriptable_keys:
key_list.append(key)
else:
raise NotFound, 'Scriptable key "%r" not found in catalog' %(key,)
if len(key_list) > 0:
self._objects[self.__class__.__name__+'/'+'scriptable_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_scriptable_keys = list(catalog.sql_catalog_scriptable_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('scriptable_key_list') or force:
if not force:
if update_dict.has_key('scriptable_key_list'):
action = update_dict['scriptable_key_list']
if action == 'nothing':
return
for key in keys:
if key not in sql_catalog_scriptable_keys:
sql_catalog_scriptable_keys.append(key)
catalog.sql_catalog_scriptable_keys = tuple(sql_catalog_scriptable_keys)
def uninstall(self, context, **kw):
catalog = _getCatalogValue(self)
if catalog is None:
LOG('BusinessTemplate', 0, 'no SQL catalog was available')
return
sql_catalog_scriptable_keys = list(catalog.sql_catalog_scriptable_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_scriptable_keys:
sql_catalog_scriptable_keys.remove(key)
catalog.sql_catalog_scriptable_keys = tuple(sql_catalog_scriptable_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): class MessageTranslationTemplateItem(BaseTemplateItem):
def build(self, context, **kw): def build(self, context, **kw):
...@@ -4090,6 +4182,7 @@ Business Template is a set of definitions, such as skins, portal types and categ ...@@ -4090,6 +4182,7 @@ Business Template is a set of definitions, such as skins, portal types and categ
'_catalog_request_key_item', '_catalog_request_key_item',
'_catalog_multivalue_key_item', '_catalog_multivalue_key_item',
'_catalog_topic_key_item', '_catalog_topic_key_item',
'_catalog_scriptable_key_item',
] ]
def __init__(self, *args, **kw): def __init__(self, *args, **kw):
...@@ -4242,6 +4335,9 @@ Business Template is a set of definitions, such as skins, portal types and categ ...@@ -4242,6 +4335,9 @@ Business Template is a set of definitions, such as skins, portal types and categ
self._tool_item = \ self._tool_item = \
ToolTemplateItem( ToolTemplateItem(
self.getTemplateToolIdList()) self.getTemplateToolIdList())
self._catalog_scriptable_key_item = \
CatalogScriptableKeyTemplateItem(
self.getTemplateCatalogScriptableKeyList())
# Build each part # Build each part
for item_name in self._item_name_list: for item_name in self._item_name_list:
...@@ -4866,6 +4962,9 @@ Business Template is a set of definitions, such as skins, portal types and categ ...@@ -4866,6 +4962,9 @@ Business Template is a set of definitions, such as skins, portal types and categ
self._tool_item = \ self._tool_item = \
ToolTemplateItem( ToolTemplateItem(
self.getTemplateToolIdList()) self.getTemplateToolIdList())
self._catalog_scriptable_key_item = \
CatalogScriptableKeyTemplateItem(
self.getTemplateCatalogScriptableKeyList())
for item_name in self._item_name_list: for item_name in self._item_name_list:
getattr(self, item_name).importFile(bta) getattr(self, item_name).importFile(bta)
...@@ -4951,6 +5050,7 @@ Business Template is a set of definitions, such as skins, portal types and categ ...@@ -4951,6 +5050,7 @@ Business Template is a set of definitions, such as skins, portal types and categ
'CatalogMultivalueKey' : '_catalog_multivalue_key_item', 'CatalogMultivalueKey' : '_catalog_multivalue_key_item',
'CatalogTopicKey' : '_catalog_topic_key_item', 'CatalogTopicKey' : '_catalog_topic_key_item',
'Tool': '_tool_item', 'Tool': '_tool_item',
'CatalogScriptableKey' : '_catalog_scriptable_key_item',
} }
object_id = REQUEST.object_id object_id = REQUEST.object_id
...@@ -5006,6 +5106,7 @@ Business Template is a set of definitions, such as skins, portal types and categ ...@@ -5006,6 +5106,7 @@ Business Template is a set of definitions, such as skins, portal types and categ
'_catalog_request_key_item', '_catalog_request_key_item',
'_catalog_multivalue_key_item', '_catalog_multivalue_key_item',
'_catalog_topic_key_item', '_catalog_topic_key_item',
'_catalog_scriptable_key_item',
'_portal_type_allowed_content_type_item', '_portal_type_allowed_content_type_item',
'_portal_type_hidden_content_type_item', '_portal_type_hidden_content_type_item',
'_portal_type_property_sheet_item', '_portal_type_property_sheet_item',
......
...@@ -155,6 +155,11 @@ class BusinessTemplate: ...@@ -155,6 +155,11 @@ class BusinessTemplate:
'type' : 'lines', 'type' : 'lines',
'mode' : 'w', 'mode' : 'w',
'default' : () }, 'default' : () },
{ 'id' : 'template_catalog_scriptable_key',
'description' : 'A list of ids of catalog scriptable keys used by this template',
'type' : 'lines',
'mode' : 'w',
'default' : () },
{ 'id' : 'template_site_property_id', { 'id' : 'template_site_property_id',
'description' : 'A list of ids of site properties used by this template', 'description' : 'A list of ids of site properties used by this template',
'type' : 'lines', 'type' : 'lines',
......
...@@ -1342,6 +1342,7 @@ class TestBusinessTemplate(ERP5TypeTestCase, LogInterceptor): ...@@ -1342,6 +1342,7 @@ class TestBusinessTemplate(ERP5TypeTestCase, LogInterceptor):
request_key = 'fake_request' request_key = 'fake_request'
multivalue_key = 'fake_multivalue' multivalue_key = 'fake_multivalue'
topic_key = 'fake_topic' topic_key = 'fake_topic'
scriptable_key = 'fake_search_text | fake_script_query'
catalog = self.getCatalogTool().getSQLCatalog() catalog = self.getCatalogTool().getSQLCatalog()
self.failUnless(catalog is not None) self.failUnless(catalog is not None)
# result table # result table
...@@ -1400,10 +1401,18 @@ class TestBusinessTemplate(ERP5TypeTestCase, LogInterceptor): ...@@ -1400,10 +1401,18 @@ class TestBusinessTemplate(ERP5TypeTestCase, LogInterceptor):
sql_catalog_topic_keys.sort() sql_catalog_topic_keys.sort()
catalog.sql_catalog_topic_search_keys = tuple(sql_catalog_topic_keys) catalog.sql_catalog_topic_search_keys = tuple(sql_catalog_topic_keys)
self.failUnless(topic_key in catalog.sql_catalog_topic_search_keys) self.failUnless(topic_key in catalog.sql_catalog_topic_search_keys)
# scriptable keys
if scriptable_key not in catalog.sql_catalog_scriptable_keys:
sql_catalog_scriptable_keys = list(catalog.sql_catalog_scriptable_keys)
sql_catalog_scriptable_keys.append(scriptable_key)
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, \ 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, \ keyword_key=keyword_key, full_text_key=full_text_key, request_key=request_key, \
multivalue_key=multivalue_key, topic_key=topic_key) multivalue_key=multivalue_key, topic_key=topic_key, \
scriptable_key=scriptable_key)
def stepModifyCatalogConfiguration(self, sequence, **kw): def stepModifyCatalogConfiguration(self, sequence, **kw):
"""Modify the current configuration of the catalog. """Modify the current configuration of the catalog.
...@@ -1484,6 +1493,8 @@ class TestBusinessTemplate(ERP5TypeTestCase, LogInterceptor): ...@@ -1484,6 +1493,8 @@ class TestBusinessTemplate(ERP5TypeTestCase, LogInterceptor):
self.failUnless(multivalue_key is not None) self.failUnless(multivalue_key is not None)
topic_key = sequence.get('topic_key', None) topic_key = sequence.get('topic_key', None)
self.failUnless(topic_key is not None) self.failUnless(topic_key is not None)
scriptable_key = sequence.get('scriptable_key', None)
self.failUnless(scriptable_key is not None)
bt.edit(template_catalog_related_key_list=[related_key], bt.edit(template_catalog_related_key_list=[related_key],
template_catalog_result_key_list=[result_key], template_catalog_result_key_list=[result_key],
...@@ -1493,6 +1504,7 @@ class TestBusinessTemplate(ERP5TypeTestCase, LogInterceptor): ...@@ -1493,6 +1504,7 @@ class TestBusinessTemplate(ERP5TypeTestCase, LogInterceptor):
template_catalog_request_key_list=[request_key], template_catalog_request_key_list=[request_key],
template_catalog_multivalue_key_list=[multivalue_key], template_catalog_multivalue_key_list=[multivalue_key],
template_catalog_topic_key_list=[topic_key], template_catalog_topic_key_list=[topic_key],
template_catalog_scriptable_key_list=[scriptable_key],
) )
def stepRemoveKeysAndTable(self, sequence=list, sequence_list=None, **kw): def stepRemoveKeysAndTable(self, sequence=list, sequence_list=None, **kw):
...@@ -1515,6 +1527,8 @@ class TestBusinessTemplate(ERP5TypeTestCase, LogInterceptor): ...@@ -1515,6 +1527,8 @@ class TestBusinessTemplate(ERP5TypeTestCase, LogInterceptor):
self.failUnless(multivalue_key is not None) self.failUnless(multivalue_key is not None)
topic_key = sequence.get('topic_key', None) topic_key = sequence.get('topic_key', None)
self.failUnless(topic_key is not None) self.failUnless(topic_key is not None)
scriptable_key = sequence.get('scriptable_key', None)
self.failUnless(scriptable_key is not None)
catalog = self.getCatalogTool().getSQLCatalog() catalog = self.getCatalogTool().getSQLCatalog()
self.failUnless(catalog is not None) self.failUnless(catalog is not None)
...@@ -1566,6 +1580,12 @@ class TestBusinessTemplate(ERP5TypeTestCase, LogInterceptor): ...@@ -1566,6 +1580,12 @@ class TestBusinessTemplate(ERP5TypeTestCase, LogInterceptor):
sql_catalog_topic_keys.sort() sql_catalog_topic_keys.sort()
catalog.sql_catalog_topic_search_keys = tuple(sql_catalog_topic_keys) catalog.sql_catalog_topic_search_keys = tuple(sql_catalog_topic_keys)
self.failUnless(topic_key not in catalog.sql_catalog_topic_search_keys) self.failUnless(topic_key not in catalog.sql_catalog_topic_search_keys)
# scriptable keys
sql_catalog_scriptable_keys = list(catalog.sql_catalog_scriptable_keys)
sql_catalog_scriptable_keys.remove(scriptable_key)
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)
def stepCheckKeysAndTableExists(self, sequence=list, sequence_list=None, **kw): def stepCheckKeysAndTableExists(self, sequence=list, sequence_list=None, **kw):
...@@ -1588,6 +1608,8 @@ class TestBusinessTemplate(ERP5TypeTestCase, LogInterceptor): ...@@ -1588,6 +1608,8 @@ class TestBusinessTemplate(ERP5TypeTestCase, LogInterceptor):
self.failUnless(multivalue_key is not None) self.failUnless(multivalue_key is not None)
topic_key = sequence.get('topic_key', None) topic_key = sequence.get('topic_key', None)
self.failUnless(topic_key is not None) self.failUnless(topic_key is not None)
scriptable_key = sequence.get('scriptable_key', None)
self.failUnless(scriptable_key is not None)
catalog = self.getCatalogTool().getSQLCatalog() catalog = self.getCatalogTool().getSQLCatalog()
self.failUnless(catalog is not None) self.failUnless(catalog is not None)
...@@ -1607,6 +1629,8 @@ class TestBusinessTemplate(ERP5TypeTestCase, LogInterceptor): ...@@ -1607,6 +1629,8 @@ class TestBusinessTemplate(ERP5TypeTestCase, LogInterceptor):
self.failUnless(multivalue_key in catalog.sql_catalog_multivalue_keys) self.failUnless(multivalue_key in catalog.sql_catalog_multivalue_keys)
# topic key # topic key
self.failUnless(topic_key in catalog.sql_catalog_topic_search_keys) self.failUnless(topic_key in catalog.sql_catalog_topic_search_keys)
# scriptable key
self.failUnless(scriptable_key in catalog.sql_catalog_scriptable_keys)
def stepCheckKeysAndTableRemoved(self, sequence=list, sequence_list=None, **kw): def stepCheckKeysAndTableRemoved(self, sequence=list, sequence_list=None, **kw):
""" """
...@@ -1628,6 +1652,8 @@ class TestBusinessTemplate(ERP5TypeTestCase, LogInterceptor): ...@@ -1628,6 +1652,8 @@ class TestBusinessTemplate(ERP5TypeTestCase, LogInterceptor):
self.failUnless(multivalue_key is not None) self.failUnless(multivalue_key is not None)
topic_key = sequence.get('topic_key', None) topic_key = sequence.get('topic_key', None)
self.failUnless(topic_key is not None) self.failUnless(topic_key is not None)
scriptable_key = sequence.get('scriptable_key', None)
self.failUnless(scriptable_key is not None)
catalog = self.getCatalogTool().getSQLCatalog() catalog = self.getCatalogTool().getSQLCatalog()
self.failUnless(catalog is not None) self.failUnless(catalog is not None)
...@@ -1647,6 +1673,8 @@ class TestBusinessTemplate(ERP5TypeTestCase, LogInterceptor): ...@@ -1647,6 +1673,8 @@ class TestBusinessTemplate(ERP5TypeTestCase, LogInterceptor):
self.failUnless(multivalue_key not in catalog.sql_catalog_multivalue_keys) self.failUnless(multivalue_key not in catalog.sql_catalog_multivalue_keys)
# topic key # topic key
self.failUnless(topic_key not in catalog.sql_catalog_topic_search_keys) 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)
# Roles # Roles
def stepCreateRole(self, sequence=None, sequence_list=None, **kw): def stepCreateRole(self, sequence=None, sequence_list=None, **kw):
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment