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):
xml_data = self.generateXml(path=path)
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):
def build(self, context, **kw):
......@@ -4090,6 +4182,7 @@ Business Template is a set of definitions, such as skins, portal types and categ
'_catalog_request_key_item',
'_catalog_multivalue_key_item',
'_catalog_topic_key_item',
'_catalog_scriptable_key_item',
]
def __init__(self, *args, **kw):
......@@ -4242,6 +4335,9 @@ Business Template is a set of definitions, such as skins, portal types and categ
self._tool_item = \
ToolTemplateItem(
self.getTemplateToolIdList())
self._catalog_scriptable_key_item = \
CatalogScriptableKeyTemplateItem(
self.getTemplateCatalogScriptableKeyList())
# Build each part
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
self._tool_item = \
ToolTemplateItem(
self.getTemplateToolIdList())
self._catalog_scriptable_key_item = \
CatalogScriptableKeyTemplateItem(
self.getTemplateCatalogScriptableKeyList())
for item_name in self._item_name_list:
getattr(self, item_name).importFile(bta)
......@@ -4951,6 +5050,7 @@ Business Template is a set of definitions, such as skins, portal types and categ
'CatalogMultivalueKey' : '_catalog_multivalue_key_item',
'CatalogTopicKey' : '_catalog_topic_key_item',
'Tool': '_tool_item',
'CatalogScriptableKey' : '_catalog_scriptable_key_item',
}
object_id = REQUEST.object_id
......@@ -5006,6 +5106,7 @@ Business Template is a set of definitions, such as skins, portal types and categ
'_catalog_request_key_item',
'_catalog_multivalue_key_item',
'_catalog_topic_key_item',
'_catalog_scriptable_key_item',
'_portal_type_allowed_content_type_item',
'_portal_type_hidden_content_type_item',
'_portal_type_property_sheet_item',
......
......@@ -155,6 +155,11 @@ class BusinessTemplate:
'type' : 'lines',
'mode' : 'w',
'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',
'description' : 'A list of ids of site properties used by this template',
'type' : 'lines',
......
......@@ -1342,6 +1342,7 @@ class TestBusinessTemplate(ERP5TypeTestCase, LogInterceptor):
request_key = 'fake_request'
multivalue_key = 'fake_multivalue'
topic_key = 'fake_topic'
scriptable_key = 'fake_search_text | fake_script_query'
catalog = self.getCatalogTool().getSQLCatalog()
self.failUnless(catalog is not None)
# result table
......@@ -1400,10 +1401,18 @@ class TestBusinessTemplate(ERP5TypeTestCase, LogInterceptor):
sql_catalog_topic_keys.sort()
catalog.sql_catalog_topic_search_keys = tuple(sql_catalog_topic_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, \
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):
"""Modify the current configuration of the catalog.
......@@ -1484,6 +1493,8 @@ class TestBusinessTemplate(ERP5TypeTestCase, LogInterceptor):
self.failUnless(multivalue_key is not None)
topic_key = sequence.get('topic_key', 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],
template_catalog_result_key_list=[result_key],
......@@ -1493,6 +1504,7 @@ class TestBusinessTemplate(ERP5TypeTestCase, LogInterceptor):
template_catalog_request_key_list=[request_key],
template_catalog_multivalue_key_list=[multivalue_key],
template_catalog_topic_key_list=[topic_key],
template_catalog_scriptable_key_list=[scriptable_key],
)
def stepRemoveKeysAndTable(self, sequence=list, sequence_list=None, **kw):
......@@ -1515,6 +1527,8 @@ class TestBusinessTemplate(ERP5TypeTestCase, LogInterceptor):
self.failUnless(multivalue_key is not None)
topic_key = sequence.get('topic_key', 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()
self.failUnless(catalog is not None)
......@@ -1566,6 +1580,12 @@ class TestBusinessTemplate(ERP5TypeTestCase, LogInterceptor):
sql_catalog_topic_keys.sort()
catalog.sql_catalog_topic_search_keys = tuple(sql_catalog_topic_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):
......@@ -1588,6 +1608,8 @@ class TestBusinessTemplate(ERP5TypeTestCase, LogInterceptor):
self.failUnless(multivalue_key is not None)
topic_key = sequence.get('topic_key', 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()
self.failUnless(catalog is not None)
......@@ -1607,6 +1629,8 @@ class TestBusinessTemplate(ERP5TypeTestCase, LogInterceptor):
self.failUnless(multivalue_key in catalog.sql_catalog_multivalue_keys)
# topic key
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):
"""
......@@ -1628,6 +1652,8 @@ class TestBusinessTemplate(ERP5TypeTestCase, LogInterceptor):
self.failUnless(multivalue_key is not None)
topic_key = sequence.get('topic_key', 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()
self.failUnless(catalog is not None)
......@@ -1647,6 +1673,8 @@ class TestBusinessTemplate(ERP5TypeTestCase, LogInterceptor):
self.failUnless(multivalue_key not in catalog.sql_catalog_multivalue_keys)
# topic key
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
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