From 58d5344b212479eb0cd4c3bdd1af3113aef112ff Mon Sep 17 00:00:00 2001 From: Sebastien Robin <seb@nexedi.com> Date: Thu, 5 Mar 2015 11:43:19 +0100 Subject: [PATCH] builders: make order builders supporting multiple resource types --- ...DeliveryBuilder_viewPredicateGroupList.xml | 4 +- .../my_resource_portal_type.xml | 283 ------------------ .../my_resource_portal_type_list.xml | 121 ++++++++ .../resource_portal_type_property.xml | 4 + product/ERP5/mixin/builder.py | 7 +- 5 files changed, 132 insertions(+), 287 deletions(-) delete mode 100644 bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/DeliveryBuilder_viewPredicateGroupList/my_resource_portal_type.xml create mode 100644 bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/DeliveryBuilder_viewPredicateGroupList/my_resource_portal_type_list.xml diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/DeliveryBuilder_viewPredicateGroupList.xml b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/DeliveryBuilder_viewPredicateGroupList.xml index b5b30310a5..96a1a8e8cc 100644 --- a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/DeliveryBuilder_viewPredicateGroupList.xml +++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/DeliveryBuilder_viewPredicateGroupList.xml @@ -2,7 +2,7 @@ <ZopeData> <record id="1" aka="AAAAAAAAAAE="> <pickle> - <global name="ERP5Form" module="Products.ERP5Form.Form"/> + <global name="ERP5 Form" module="erp5.portal_type"/> </pickle> <pickle> <dictionary> @@ -80,7 +80,7 @@ <key> <string>right</string> </key> <value> <list> - <string>my_resource_portal_type</string> + <string>my_resource_portal_type_list</string> </list> </value> </item> diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/DeliveryBuilder_viewPredicateGroupList/my_resource_portal_type.xml b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/DeliveryBuilder_viewPredicateGroupList/my_resource_portal_type.xml deleted file mode 100644 index 03c22fe7a7..0000000000 --- a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/DeliveryBuilder_viewPredicateGroupList/my_resource_portal_type.xml +++ /dev/null @@ -1,283 +0,0 @@ -<?xml version="1.0"?> -<ZopeData> - <record id="1" aka="AAAAAAAAAAE="> - <pickle> - <global name="ListField" module="Products.Formulator.StandardFields"/> - </pickle> - <pickle> - <dictionary> - <item> - <key> <string>id</string> </key> - <value> <string>my_resource_portal_type</string> </value> - </item> - <item> - <key> <string>message_values</string> </key> - <value> - <dictionary> - <item> - <key> <string>external_validator_failed</string> </key> - <value> <string>The input failed the external validator.</string> </value> - </item> - <item> - <key> <string>required_not_found</string> </key> - <value> <string>Input is required but no input given.</string> </value> - </item> - <item> - <key> <string>unknown_selection</string> </key> - <value> <string>You selected an item that was not in the list.</string> </value> - </item> - </dictionary> - </value> - </item> - <item> - <key> <string>overrides</string> </key> - <value> - <dictionary> - <item> - <key> <string>alternate_name</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>css_class</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>default</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>description</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>editable</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>enabled</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>external_validator</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>extra</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>extra_item</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>first_item</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>hidden</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>items</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>required</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>size</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>title</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>unicode</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>whitespace_preserve</string> </key> - <value> <string></string> </value> - </item> - </dictionary> - </value> - </item> - <item> - <key> <string>tales</string> </key> - <value> - <dictionary> - <item> - <key> <string>alternate_name</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>css_class</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>default</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>description</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>editable</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>enabled</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>external_validator</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>extra</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>extra_item</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>first_item</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>hidden</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>items</string> </key> - <value> - <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> - </value> - </item> - <item> - <key> <string>required</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>size</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>title</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>unicode</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>whitespace_preserve</string> </key> - <value> <string></string> </value> - </item> - </dictionary> - </value> - </item> - <item> - <key> <string>values</string> </key> - <value> - <dictionary> - <item> - <key> <string>alternate_name</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>css_class</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>default</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>description</string> </key> - <value> <string>Type of the resource</string> </value> - </item> - <item> - <key> <string>editable</string> </key> - <value> <int>1</int> </value> - </item> - <item> - <key> <string>enabled</string> </key> - <value> <int>1</int> </value> - </item> - <item> - <key> <string>external_validator</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>extra</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>extra_item</string> </key> - <value> <string></string> </value> - </item> - <item> - <key> <string>first_item</string> </key> - <value> <int>0</int> </value> - </item> - <item> - <key> <string>hidden</string> </key> - <value> <int>0</int> </value> - </item> - <item> - <key> <string>items</string> </key> - <value> - <list/> - </value> - </item> - <item> - <key> <string>required</string> </key> - <value> <int>0</int> </value> - </item> - <item> - <key> <string>size</string> </key> - <value> <int>1</int> </value> - </item> - <item> - <key> <string>title</string> </key> - <value> <string>Resource Portal Type</string> </value> - </item> - <item> - <key> <string>unicode</string> </key> - <value> <int>0</int> </value> - </item> - <item> - <key> <string>whitespace_preserve</string> </key> - <value> <int>0</int> </value> - </item> - </dictionary> - </value> - </item> - </dictionary> - </pickle> - </record> - <record id="2" aka="AAAAAAAAAAI="> - <pickle> - <tuple> - <tuple> - <string>Products.Formulator.TALESField</string> - <string>TALESMethod</string> - </tuple> - <none/> - </tuple> - </pickle> - <pickle> - <dictionary> - <item> - <key> <string>_text</string> </key> - <value> <string>python: [(\'\',\'\')]+[(x,x) for x in here.getPortalResourceTypeList()]</string> </value> - </item> - </dictionary> - </pickle> - </record> -</ZopeData> diff --git a/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/DeliveryBuilder_viewPredicateGroupList/my_resource_portal_type_list.xml b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/DeliveryBuilder_viewPredicateGroupList/my_resource_portal_type_list.xml new file mode 100644 index 0000000000..19f9029f88 --- /dev/null +++ b/bt5/erp5_base/SkinTemplateItem/portal_skins/erp5_base/DeliveryBuilder_viewPredicateGroupList/my_resource_portal_type_list.xml @@ -0,0 +1,121 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>delegated_list</string> </key> + <value> + <list> + <string>title</string> + <string>required</string> + <string>items</string> + </list> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>my_resource_portal_type_list</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>items</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string>my_parallel_list_field</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Base_viewFieldLibrary</string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Resource Portal Type</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="TALESMethod" module="Products.Formulator.TALESField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_text</string> </key> + <value> <string>python: [(\'\',\'\')]+[(x,x) for x in here.getPortalResourceTypeList()]</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/product/ERP5/bootstrap/erp5_property_sheets/PropertySheetTemplateItem/portal_property_sheets/DeliveryBuilder/resource_portal_type_property.xml b/product/ERP5/bootstrap/erp5_property_sheets/PropertySheetTemplateItem/portal_property_sheets/DeliveryBuilder/resource_portal_type_property.xml index eac46f4f7d..8164583eab 100644 --- a/product/ERP5/bootstrap/erp5_property_sheets/PropertySheetTemplateItem/portal_property_sheets/DeliveryBuilder/resource_portal_type_property.xml +++ b/product/ERP5/bootstrap/erp5_property_sheets/PropertySheetTemplateItem/portal_property_sheets/DeliveryBuilder/resource_portal_type_property.xml @@ -43,6 +43,10 @@ <key> <string>mode</string> </key> <value> <string>w</string> </value> </item> + <item> + <key> <string>multivalued</string> </key> + <value> <int>1</int> </value> + </item> <item> <key> <string>portal_type</string> </key> <value> <string>Standard Property</string> </value> diff --git a/product/ERP5/mixin/builder.py b/product/ERP5/mixin/builder.py index 30be95ae81..9367b74891 100644 --- a/product/ERP5/mixin/builder.py +++ b/product/ERP5/mixin/builder.py @@ -202,9 +202,12 @@ class BuilderMixin(XMLObject, Amount, Predicate): movement = newTempMovement(self.getPortalObject(), str(id_count)) id_count += 1 - resource_portal_type = self.getResourcePortalType() + resource_portal_type_list = self.getResourcePortalTypeList() resource = portal.portal_catalog.getObject(inventory_item.resource_uid) - assert resource.getPortalType() == resource_portal_type + resource_portal_type = resource.getPortalType() + assert resource_portal_type in (resource_portal_type_list), \ + "Builder %r does not support resource of type : %r" % ( + self.getRelativeUrl(), resource_portal_type) movement.edit( resource=inventory_item.resource_relative_url, variation_category_list=dumb_movement.getVariationCategoryList(), -- 2.30.9