Commit 50746ed0 authored by Rafael Monnerat's avatar Rafael Monnerat

BusinessTemplate: Allow set individual Mixins on Portal Types

  Allow the developer associate a Mixin on Business template level
without require to overwrite the portal type itself

  Include mixins can be done in the same way, allowed content types or
property sheets are set.
parent bb05a278
......@@ -2933,6 +2933,12 @@ class PortalTypeBaseCategoryTemplateItem(PortalTypeAllowedContentTypeTemplateIte
class_property = 'base_category_list'
business_template_class_property = '_portal_type_base_category_item'
class PortalTypeTypeMixinTemplateItem(PortalTypeAllowedContentTypeTemplateItem):
name = 'Type Mixin'
xml_tag = 'type_mixin'
class_property = 'type_mixin'
business_template_class_property = '_portal_type_type_mixin_item'
class CatalogMethodTemplateItem(ObjectTemplateItem):
"""Template Item for catalog methods.
......@@ -5300,6 +5306,15 @@ Business Template is a set of definitions, such as skins, portal types and categ
MixinTemplateItem(self.getTemplateMixinIdList())
self._tool_component_item = \
ToolComponentTemplateItem(self.getTemplateToolComponentIdList())
try:
self._portal_type_type_mixin_item = \
PortalTypeTypeMixinTemplateItem(
self.getTemplatePortalTypeTypeMixinList())
# This property may not be defined if erp5_property_sheets has not been
# upgraded yet
except AttributeError:
self._portal_type_type_mixin_item = PortalTypeTypeMixinTemplateItem(())
security.declareProtected(Permissions.ManagePortal, 'build')
def build(self, no_action=0, update_revision=True):
......@@ -5630,6 +5645,7 @@ Business Template is a set of definitions, such as skins, portal types and categ
'template_local_role_list',
'template_message_translation_list',
'template_mixin_id_list',
'template_portal_type_type_mixin',
'template_module_component_id_list',
'template_module_id_list',
'template_path_list',
......@@ -5938,6 +5954,7 @@ Business Template is a set of definitions, such as skins, portal types and categ
'PortalHiddenAllowedContentType' : '_portal_type_hidden_content_type_item',
'PortalTypePropertySheet' : '_portal_type_property_sheet_item',
'PortalTypeBaseCategory' : '_portal_type_base_category_item',
'PortalTypeTypeMixin' : '_portal_type_type_mixin_item',
'Category' : '_category_item',
'Module' : '_module_item',
'Skin' : '_skin_item',
......@@ -6030,6 +6047,7 @@ Business Template is a set of definitions, such as skins, portal types and categ
'_portal_type_property_sheet_item',
'_portal_type_roles_item',
'_portal_type_base_category_item',
'_portal_type_type_mixin',
'_local_roles_item',
'_portal_type_workflow_chain_item',]
......@@ -6123,6 +6141,8 @@ Business Template is a set of definitions, such as skins, portal types and categ
self.getTemplatePortalTypePropertySheetList())
bt_base_category_list = list(
self.getTemplatePortalTypeBaseCategoryList())
bt_type_mixin_list = list(
self.getTemplatePortalTypeTypeMixinList())
bt_action_list = list(self.getTemplateActionPathList())
bt_portal_types_id_list = list(self.getTemplatePortalTypeIdList())
bt_portal_type_roles_list = list(self.getTemplatePortalTypeRoleList())
......@@ -6141,6 +6161,7 @@ Business Template is a set of definitions, such as skins, portal types and categ
property_sheet_list = []
base_category_list = []
action_list = []
type_mixin_list = []
if hasattr(portal_type, 'allowed_content_types'):
allowed_content_type_list = portal_type.allowed_content_types
if hasattr(portal_type, 'hidden_content_type_list'):
......@@ -6149,6 +6170,8 @@ Business Template is a set of definitions, such as skins, portal types and categ
property_sheet_list = portal_type.property_sheet_list
if hasattr(portal_type, 'base_category_list'):
base_category_list = portal_type.base_category_list
if hasattr(portal_type, 'type_mixin'):
type_mixin_list = portal_type.type_mixin
for action in portal_type.getActionInformationList():
action_list.append(action.getReference())
......@@ -6172,6 +6195,11 @@ Business Template is a set of definitions, such as skins, portal types and categ
if base_cat_id not in bt_base_category_list:
bt_base_category_list.append(base_cat_id)
for tm_id in type_mixin_list:
type_mixin_id = id+' | '+tm_id
if type_mixin_id not in type_mixin_list:
bt_type_mixin_list.append(tm_id)
for act_id in action_list:
action_id = id+' | '+act_id
if action_id not in bt_action_list:
......@@ -6189,6 +6217,7 @@ Business Template is a set of definitions, such as skins, portal types and categ
bt_base_category_list.sort()
bt_action_list.sort()
bt_wf_chain_list.sort()
bt_type_mixin_list.sort()
self.setTemplatePortalTypeWorkflowChainList(bt_wf_chain_list)
self.setTemplatePortalTypeRoleList(bt_portal_type_roles_list)
......@@ -6197,7 +6226,7 @@ Business Template is a set of definitions, such as skins, portal types and categ
self.setTemplatePortalTypePropertySheetList(bt_property_sheet_list)
self.setTemplatePortalTypeBaseCategoryList(bt_base_category_list)
self.setTemplateActionPathList(bt_action_list)
self.setTemplatePortalTypeTypeMixin(bt_type_mixin_list)
security.declareProtected(Permissions.AccessContentsInformation,
'guessPortalTypes')
......@@ -6278,6 +6307,7 @@ Business Template is a set of definitions, such as skins, portal types and categ
"""
setattr(self, 'template_portal_type_id', ())
setattr(self, 'template_portal_type_allowed_content_type', ())
setattr(self, 'template_portal_type_type_mixin', ())
setattr(self, 'template_portal_type_hidden_content_type', ())
setattr(self, 'template_portal_type_property_sheet', ())
setattr(self, 'template_portal_type_base_category', ())
......
......@@ -87,6 +87,7 @@ item_name_list = (
'portal_type_hidden_content_type',
'portal_type_property_sheet',
'portal_type_base_category',
'portal_type_type_mixin',
'category',
'module',
'portal_type_roles',
......
......@@ -80,6 +80,7 @@
<string>my_template_portal_type_hidden_content_type_list</string>
<string>my_template_portal_type_property_sheet_list</string>
<string>my_template_portal_type_base_category_list</string>
<string>my_template_portal_type_type_mixin_list</string>
<string>my_template_action_path_list</string>
</list>
</value>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Standard Property" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_local_properties</string> </key>
<value>
<tuple>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>mode</string> </value>
</item>
<item>
<key> <string>type</string> </key>
<value> <string>string</string> </value>
</item>
</dictionary>
</tuple>
</value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>elementary_type/lines</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>template_portal_type_type_mixin_property</string> </value>
</item>
<item>
<key> <string>mode</string> </key>
<value> <string>w</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Standard Property</string> </value>
</item>
<item>
<key> <string>property_default</string> </key>
<value> <string>python: ()</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
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