diff --git a/bt5/erp5_interfaces/ActionTemplateItem/portal_types/Interface%20Tool/view.xml b/bt5/erp5_interfaces/ActionTemplateItem/portal_types/Interface%20Tool/view.xml new file mode 100644 index 0000000000000000000000000000000000000000..f23dba67261496620b3173bbfe6230642b9bd9de --- /dev/null +++ b/bt5/erp5_interfaces/ActionTemplateItem/portal_types/Interface%20Tool/view.xml @@ -0,0 +1,85 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ActionInformation" module="Products.CMFCore.ActionInformation"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>action</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>categories</string> </key> + <value> + <tuple> + <string>action_type/object_view</string> + </tuple> + </value> + </item> + <item> + <key> <string>category</string> </key> + <value> <string>object_view</string> </value> + </item> + <item> + <key> <string>condition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>icon</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>view</string> </value> + </item> + <item> + <key> <string>permissions</string> </key> + <value> + <tuple> + <string>View</string> + </tuple> + </value> + </item> + <item> + <key> <string>portal_type</string> </key> + <value> <string>Action Information</string> </value> + </item> + <item> + <key> <string>priority</string> </key> + <value> <float>1.0</float> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>View</string> </value> + </item> + <item> + <key> <string>visible</string> </key> + <value> <int>1</int> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="Expression" module="Products.CMFCore.Expression"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>text</string> </key> + <value> <string>string:${object_url}/Folder_viewContentList</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_interfaces/ActionTemplateItem/portal_types/SOAP%20Binding/view.xml b/bt5/erp5_interfaces/ActionTemplateItem/portal_types/SOAP%20Binding/view.xml new file mode 100644 index 0000000000000000000000000000000000000000..f4343a10de5570d9e57dfe27e816d361c2d36302 --- /dev/null +++ b/bt5/erp5_interfaces/ActionTemplateItem/portal_types/SOAP%20Binding/view.xml @@ -0,0 +1,85 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ActionInformation" module="Products.CMFCore.ActionInformation"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>action</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>categories</string> </key> + <value> + <tuple> + <string>action_type/object_view</string> + </tuple> + </value> + </item> + <item> + <key> <string>category</string> </key> + <value> <string>object_view</string> </value> + </item> + <item> + <key> <string>condition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>icon</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>view</string> </value> + </item> + <item> + <key> <string>permissions</string> </key> + <value> + <tuple> + <string>View</string> + </tuple> + </value> + </item> + <item> + <key> <string>portal_type</string> </key> + <value> <string>Action Information</string> </value> + </item> + <item> + <key> <string>priority</string> </key> + <value> <float>1.0</float> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>View</string> </value> + </item> + <item> + <key> <string>visible</string> </key> + <value> <int>1</int> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="Expression" module="Products.CMFCore.Expression"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>text</string> </key> + <value> <string>string:${object_url}/SOAPBinding_view</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_interfaces/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml b/bt5/erp5_interfaces/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml new file mode 100644 index 0000000000000000000000000000000000000000..fb9e67eaad1304dbb85b28229a0006d7b001ceec --- /dev/null +++ b/bt5/erp5_interfaces/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml @@ -0,0 +1,5 @@ +<allowed_content_type_list> + <portal_type id="Interface Tool"> + <item>SOAP Binding</item> + </portal_type> +</allowed_content_type_list> \ No newline at end of file diff --git a/bt5/erp5_interfaces/PortalTypeTemplateItem/portal_types/Interface%20Tool.xml b/bt5/erp5_interfaces/PortalTypeTemplateItem/portal_types/Interface%20Tool.xml new file mode 100644 index 0000000000000000000000000000000000000000..4ac8208f8a720c2600f114f0b7b5602b970fcf0c --- /dev/null +++ b/bt5/erp5_interfaces/PortalTypeTemplateItem/portal_types/Interface%20Tool.xml @@ -0,0 +1,58 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="Base Type" module="erp5.portal_type"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>acquire_local_roles</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>content_icon</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>Interface Tool</string> </value> + </item> + <item> + <key> <string>init_script</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>permission</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>portal_type</string> </key> + <value> <string>Base Type</string> </value> + </item> + <item> + <key> <string>type_class</string> </key> + <value> <string>InterfaceTool</string> </value> + </item> + <item> + <key> <string>type_interface</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>type_mixin</string> </key> + <value> + <tuple/> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_interfaces/PortalTypeTemplateItem/portal_types/SOAP%20Binding.xml b/bt5/erp5_interfaces/PortalTypeTemplateItem/portal_types/SOAP%20Binding.xml new file mode 100644 index 0000000000000000000000000000000000000000..46e580074abad0a63afb795fb314c6840cea96ee --- /dev/null +++ b/bt5/erp5_interfaces/PortalTypeTemplateItem/portal_types/SOAP%20Binding.xml @@ -0,0 +1,58 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="Base Type" module="erp5.portal_type"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>acquire_local_roles</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>content_icon</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>SOAP Binding</string> </value> + </item> + <item> + <key> <string>init_script</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>permission</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>portal_type</string> </key> + <value> <string>Base Type</string> </value> + </item> + <item> + <key> <string>type_class</string> </key> + <value> <string>SOAPBinding</string> </value> + </item> + <item> + <key> <string>type_interface</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>type_mixin</string> </key> + <value> + <tuple/> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_interfaces/PropertySheetTemplateItem/portal_property_sheets/SOAPBinding.xml b/bt5/erp5_interfaces/PropertySheetTemplateItem/portal_property_sheets/SOAPBinding.xml new file mode 100644 index 0000000000000000000000000000000000000000..3b7a063324c41fafa4a9b2f15565a17f8f7223a0 --- /dev/null +++ b/bt5/erp5_interfaces/PropertySheetTemplateItem/portal_property_sheets/SOAPBinding.xml @@ -0,0 +1,66 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="Property Sheet" module="erp5.portal_type"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_count</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>_mt_index</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + </value> + </item> + <item> + <key> <string>_tree</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> + </value> + </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>SOAPBinding</string> </value> + </item> + <item> + <key> <string>portal_type</string> </key> + <value> <string>Property Sheet</string> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="Length" module="BTrees.Length"/> + </pickle> + <pickle> <int>0</int> </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> + <pickle> + <global name="OOBTree" module="BTrees.OOBTree"/> + </pickle> + <pickle> + <none/> + </pickle> + </record> + <record id="4" aka="AAAAAAAAAAQ="> + <pickle> + <global name="OOBTree" module="BTrees.OOBTree"/> + </pickle> + <pickle> + <none/> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_interfaces/PropertySheetTemplateItem/portal_property_sheets/SOAPBinding/service_class_property.xml b/bt5/erp5_interfaces/PropertySheetTemplateItem/portal_property_sheets/SOAPBinding/service_class_property.xml new file mode 100644 index 0000000000000000000000000000000000000000..1041f5dc4beaef754e08c2325b4143905bb9db8a --- /dev/null +++ b/bt5/erp5_interfaces/PropertySheetTemplateItem/portal_property_sheets/SOAPBinding/service_class_property.xml @@ -0,0 +1,34 @@ +<?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>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>service_class_property</string> </value> + </item> + <item> + <key> <string>portal_type</string> </key> + <value> <string>Standard Property</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_interfaces/PropertySheetTemplateItem/portal_property_sheets/SOAPBinding/target_namespace_property.xml b/bt5/erp5_interfaces/PropertySheetTemplateItem/portal_property_sheets/SOAPBinding/target_namespace_property.xml new file mode 100644 index 0000000000000000000000000000000000000000..9d8df623766848a6edcb00ca2217d41338c8ee2c --- /dev/null +++ b/bt5/erp5_interfaces/PropertySheetTemplateItem/portal_property_sheets/SOAPBinding/target_namespace_property.xml @@ -0,0 +1,34 @@ +<?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>categories</string> </key> + <value> + <tuple> + <string>elementary_type/string</string> + </tuple> + </value> + </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>target_namespace_property</string> </value> + </item> + <item> + <key> <string>portal_type</string> </key> + <value> <string>Standard Property</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_interfaces/SkinTemplateItem/portal_skins/erp5_interfaces.xml b/bt5/erp5_interfaces/SkinTemplateItem/portal_skins/erp5_interfaces.xml new file mode 100644 index 0000000000000000000000000000000000000000..81ba69d2c769884a1e1454ab8aa86e24ab150df0 --- /dev/null +++ b/bt5/erp5_interfaces/SkinTemplateItem/portal_skins/erp5_interfaces.xml @@ -0,0 +1,26 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="Folder" module="OFS.Folder"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_objects</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>erp5_interfaces</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_interfaces/SkinTemplateItem/portal_skins/erp5_interfaces/SOAPBinding_view.xml b/bt5/erp5_interfaces/SkinTemplateItem/portal_skins/erp5_interfaces/SOAPBinding_view.xml new file mode 100644 index 0000000000000000000000000000000000000000..e1ed2d0fdf8aded6c549cca8f129a5a051329ddb --- /dev/null +++ b/bt5/erp5_interfaces/SkinTemplateItem/portal_skins/erp5_interfaces/SOAPBinding_view.xml @@ -0,0 +1,157 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ERP5Form" module="Products.ERP5Form.Form"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_bind_names</string> </key> + <value> + <object> + <klass> + <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>_asgns</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>_objects</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>action</string> </key> + <value> <string>Base_edit</string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>edit_order</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>encoding</string> </key> + <value> <string>UTF-8</string> </value> + </item> + <item> + <key> <string>enctype</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>group_list</string> </key> + <value> + <list> + <string>left</string> + <string>right</string> + <string>center</string> + <string>bottom</string> + <string>hidden</string> + </list> + </value> + </item> + <item> + <key> <string>groups</string> </key> + <value> + <dictionary> + <item> + <key> <string>bottom</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>center</string> </key> + <value> + <list> + <string>my_description</string> + </list> + </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>left</string> </key> + <value> + <list> + <string>my_id</string> + <string>my_target_namespace</string> + </list> + </value> + </item> + <item> + <key> <string>right</string> </key> + <value> + <list> + <string>my_service_class_list</string> + </list> + </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>SOAPBinding_view</string> </value> + </item> + <item> + <key> <string>method</string> </key> + <value> <string>POST</string> </value> + </item> + <item> + <key> <string>name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>pt</string> </key> + <value> <string>form_view</string> </value> + </item> + <item> + <key> <string>row_length</string> </key> + <value> <int>4</int> </value> + </item> + <item> + <key> <string>stored_encoding</string> </key> + <value> <string>UTF-8</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>unicode_mode</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>update_action</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>update_action_title</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_interfaces/SkinTemplateItem/portal_skins/erp5_interfaces/SOAPBinding_view/my_description.xml b/bt5/erp5_interfaces/SkinTemplateItem/portal_skins/erp5_interfaces/SOAPBinding_view/my_description.xml new file mode 100644 index 0000000000000000000000000000000000000000..e98bd2614bed171964af7f47a08b452bd9c82b49 --- /dev/null +++ b/bt5/erp5_interfaces/SkinTemplateItem/portal_skins/erp5_interfaces/SOAPBinding_view/my_description.xml @@ -0,0 +1,90 @@ +<?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/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>my_description</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>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_description</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Base_viewFieldLibrary</string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_interfaces/SkinTemplateItem/portal_skins/erp5_interfaces/SOAPBinding_view/my_id.xml b/bt5/erp5_interfaces/SkinTemplateItem/portal_skins/erp5_interfaces/SOAPBinding_view/my_id.xml new file mode 100644 index 0000000000000000000000000000000000000000..c6baa37309c09a8074a338f0b883492fe817f887 --- /dev/null +++ b/bt5/erp5_interfaces/SkinTemplateItem/portal_skins/erp5_interfaces/SOAPBinding_view/my_id.xml @@ -0,0 +1,101 @@ +<?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>display_width</string> + <string>title</string> + </list> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>my_id</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>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>display_width</string> </key> + <value> <int>20</int> </value> + </item> + <item> + <key> <string>field_id</string> </key> + <value> <string>my_string_field</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Base_viewFieldLibrary</string> </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>ID</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_interfaces/SkinTemplateItem/portal_skins/erp5_interfaces/SOAPBinding_view/my_service_class_list.xml b/bt5/erp5_interfaces/SkinTemplateItem/portal_skins/erp5_interfaces/SOAPBinding_view/my_service_class_list.xml new file mode 100644 index 0000000000000000000000000000000000000000..82883773b537697d5214778b27e15f569c997ff0 --- /dev/null +++ b/bt5/erp5_interfaces/SkinTemplateItem/portal_skins/erp5_interfaces/SOAPBinding_view/my_service_class_list.xml @@ -0,0 +1,126 @@ +<?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>items</string> + <string>title</string> + </list> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>my_service_class_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> + <item> + <key> <string>title</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>items</string> </key> + <value> + <list/> + </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>Service Classes</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: here.getRegisteredServiceClassItemList()</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_interfaces/SkinTemplateItem/portal_skins/erp5_interfaces/SOAPBinding_view/my_target_namespace.xml b/bt5/erp5_interfaces/SkinTemplateItem/portal_skins/erp5_interfaces/SOAPBinding_view/my_target_namespace.xml new file mode 100644 index 0000000000000000000000000000000000000000..d404243cae85f9b4ac6acf223d7374b8f7d4f3ec --- /dev/null +++ b/bt5/erp5_interfaces/SkinTemplateItem/portal_skins/erp5_interfaces/SOAPBinding_view/my_target_namespace.xml @@ -0,0 +1,101 @@ +<?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>display_width</string> + <string>title</string> + </list> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>my_target_namespace</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>target</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>display_width</string> </key> + <value> <int>50</int> </value> + </item> + <item> + <key> <string>field_id</string> </key> + <value> <string>my_string_field</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Base_viewFieldLibrary</string> </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>Target Namespace</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_interfaces/TestTemplateItem/testSOAPBinding.py b/bt5/erp5_interfaces/TestTemplateItem/testSOAPBinding.py new file mode 100644 index 0000000000000000000000000000000000000000..303dcb92603e1b149c63809cfe261917103fcdbc --- /dev/null +++ b/bt5/erp5_interfaces/TestTemplateItem/testSOAPBinding.py @@ -0,0 +1,82 @@ +# -*- coding: utf-8 -*- +############################################################################## +# Copyright (c) 2012 Nexedi SA and Contributors. All Rights Reserved. +# Julien Muchembled <jm@nexedi.com> +# +# WARNING: This program as such is intended to be used by professional +# programmers who take the whole responsibility of assessing all potential +# consequences resulting from its eventual inadequacies and bugs +# End users who are looking for a ready-to-use solution with commercial +# guarantees and support are strongly advised to contract a Free Software +# Service Company +# +# This program is Free Software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +############################################################################## + +import unittest +import urllib +import SOAPpy +from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase +from Products.ERP5.Document.SOAPBinding import SOAPBinding +from spyne.service import ServiceBase +from spyne.decorator import srpc +from spyne.model.complex import Iterable +from spyne.model.primitive import Integer +from spyne.model.primitive import Unicode + + +class HelloWorldService(ServiceBase): + @srpc(Unicode, Integer, _returns=Iterable(Unicode)) + def say_hello(name, times): + ''' + Docstrings for service methods appear as documentation in the wsdl + <b>what fun</b> + @param name the name to say hello to + @param the number of times to say hello + @return the completed array + ''' + + for i in range(times): + yield u'Hello, %s' % name + +SOAPBinding.registerServiceClass(HelloWorldService) + + +class TestSoapBinding(ERP5TypeTestCase): + + def getBusinessTemplateList(self): + return 'erp5_interfaces', + + def createBinding(self, target_namespace, service_class): + return self.portal.portal_interfaces.newContent( + self._testMethodName, 'SOAP Binding', + target_namespace=target_namespace, + service_class='%s.%s' % (service_class.__module__, + service_class.__name__)) + + def testSpyneHelloExample(self): + tns = 'spyne.examples.hello.soap' + binding = self.createBinding(tns, HelloWorldService) + self.commit() + result, = SOAPpy.SOAPProxy(binding.absolute_url()).say_hello( + name=u'J茅r么me', times=5) + self.assertEqual(result, [u'Hello, J茅r么me'] * 5) + + +def test_suite(): + suite = unittest.TestSuite() + suite.addTest(unittest.makeSuite(TestSoapBinding)) + return suite diff --git a/bt5/erp5_interfaces/ToolTemplateItem/portal_interfaces.xml b/bt5/erp5_interfaces/ToolTemplateItem/portal_interfaces.xml new file mode 100644 index 0000000000000000000000000000000000000000..2d1b08b2b9ffe72ebdb17aa1771721a21bb13dfa --- /dev/null +++ b/bt5/erp5_interfaces/ToolTemplateItem/portal_interfaces.xml @@ -0,0 +1,56 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="Interface Tool" module="erp5.portal_type"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_count</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>_mt_index</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + </value> + </item> + <item> + <key> <string>_tree</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>portal_interfaces</string> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="Length" module="BTrees.Length"/> + </pickle> + <pickle> <int>0</int> </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> + <pickle> + <global name="OOBTree" module="BTrees.OOBTree"/> + </pickle> + <pickle> + <none/> + </pickle> + </record> + <record id="4" aka="AAAAAAAAAAQ="> + <pickle> + <global name="OOBTree" module="BTrees.OOBTree"/> + </pickle> + <pickle> + <none/> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_interfaces/bt/copyright_list b/bt5/erp5_interfaces/bt/copyright_list new file mode 100644 index 0000000000000000000000000000000000000000..fceb75c9bd48d77a6a672d2b375a53ae57bff485 --- /dev/null +++ b/bt5/erp5_interfaces/bt/copyright_list @@ -0,0 +1 @@ +Copyright (c) 2012 Nexedi SA \ No newline at end of file diff --git a/bt5/erp5_interfaces/bt/license b/bt5/erp5_interfaces/bt/license new file mode 100644 index 0000000000000000000000000000000000000000..3a3e12bcad97e4b3bdd6a8bb499fd23a4bcb0819 --- /dev/null +++ b/bt5/erp5_interfaces/bt/license @@ -0,0 +1 @@ +GPL \ No newline at end of file diff --git a/bt5/erp5_interfaces/bt/revision b/bt5/erp5_interfaces/bt/revision new file mode 100644 index 0000000000000000000000000000000000000000..56a6051ca2b02b04ef92d5150c9ef600403cb1de --- /dev/null +++ b/bt5/erp5_interfaces/bt/revision @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/bt5/erp5_interfaces/bt/template_action_path_list b/bt5/erp5_interfaces/bt/template_action_path_list new file mode 100644 index 0000000000000000000000000000000000000000..fa03d9320cbecdc4d5fade62aacc3b149d93fb66 --- /dev/null +++ b/bt5/erp5_interfaces/bt/template_action_path_list @@ -0,0 +1,2 @@ +Interface Tool | view +SOAP Binding | view \ No newline at end of file diff --git a/bt5/erp5_interfaces/bt/template_format_version b/bt5/erp5_interfaces/bt/template_format_version new file mode 100644 index 0000000000000000000000000000000000000000..56a6051ca2b02b04ef92d5150c9ef600403cb1de --- /dev/null +++ b/bt5/erp5_interfaces/bt/template_format_version @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/bt5/erp5_interfaces/bt/template_portal_type_allowed_content_type_list b/bt5/erp5_interfaces/bt/template_portal_type_allowed_content_type_list new file mode 100644 index 0000000000000000000000000000000000000000..ef4f4881493612e123d4c4d7ee66f85867bb9868 --- /dev/null +++ b/bt5/erp5_interfaces/bt/template_portal_type_allowed_content_type_list @@ -0,0 +1 @@ +Interface Tool | SOAP Binding \ No newline at end of file diff --git a/bt5/erp5_interfaces/bt/template_portal_type_id_list b/bt5/erp5_interfaces/bt/template_portal_type_id_list new file mode 100644 index 0000000000000000000000000000000000000000..78712e1e5f746ed50023b3d27c6b4655fdf3c0ac --- /dev/null +++ b/bt5/erp5_interfaces/bt/template_portal_type_id_list @@ -0,0 +1,2 @@ +Interface Tool +SOAP Binding \ No newline at end of file diff --git a/bt5/erp5_interfaces/bt/template_property_sheet_id_list b/bt5/erp5_interfaces/bt/template_property_sheet_id_list new file mode 100644 index 0000000000000000000000000000000000000000..98be093b60af92d2b33b59ae47864ee6086e56bc --- /dev/null +++ b/bt5/erp5_interfaces/bt/template_property_sheet_id_list @@ -0,0 +1 @@ +SOAPBinding \ No newline at end of file diff --git a/bt5/erp5_interfaces/bt/template_skin_id_list b/bt5/erp5_interfaces/bt/template_skin_id_list new file mode 100644 index 0000000000000000000000000000000000000000..c4bafb7fd92fcef08fc5a01e396b89d34f8d477c --- /dev/null +++ b/bt5/erp5_interfaces/bt/template_skin_id_list @@ -0,0 +1 @@ +erp5_interfaces \ No newline at end of file diff --git a/bt5/erp5_interfaces/bt/template_test_id_list b/bt5/erp5_interfaces/bt/template_test_id_list new file mode 100644 index 0000000000000000000000000000000000000000..4c6d0d68a1d6af6cd91cccb0324c49e70429658c --- /dev/null +++ b/bt5/erp5_interfaces/bt/template_test_id_list @@ -0,0 +1 @@ +testSOAPBinding \ No newline at end of file diff --git a/bt5/erp5_interfaces/bt/template_tool_id_list b/bt5/erp5_interfaces/bt/template_tool_id_list new file mode 100644 index 0000000000000000000000000000000000000000..3c0d41e4b754acf174eacf298e93588f69d6cc34 --- /dev/null +++ b/bt5/erp5_interfaces/bt/template_tool_id_list @@ -0,0 +1 @@ +portal_interfaces \ No newline at end of file diff --git a/bt5/erp5_interfaces/bt/title b/bt5/erp5_interfaces/bt/title new file mode 100644 index 0000000000000000000000000000000000000000..c4bafb7fd92fcef08fc5a01e396b89d34f8d477c --- /dev/null +++ b/bt5/erp5_interfaces/bt/title @@ -0,0 +1 @@ +erp5_interfaces \ No newline at end of file diff --git a/product/ERP5/Document/SOAPBinding.py b/product/ERP5/Document/SOAPBinding.py new file mode 100644 index 0000000000000000000000000000000000000000..5fa64f5c81cdc792c9789732819f84be7a296f04 --- /dev/null +++ b/product/ERP5/Document/SOAPBinding.py @@ -0,0 +1,126 @@ +# -*- coding: utf-8 -*- +############################################################################## +# Copyright (c) 2012 Nexedi SA and Contributors. All Rights Reserved. +# Julien Muchembled <jm@nexedi.com> +# +# WARNING: This program as such is intended to be used by professional +# programmers who take the whole responsibility of assessing all potential +# consequences resulting from its eventual inadequacies and bugs +# End users who are looking for a ready-to-use solution with commercial +# guarantees and support are strongly advised to contract a Free Software +# Service Company +# +# This program is Free Software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +############################################################################## + +from AccessControl import ClassSecurityInfo +from Products.ERP5Type import PropertySheet +from Products.ERP5Type.Permissions import AccessContentsInformation +from Products.ERP5Type.Base import Base +from Products.ERP5Type.Cache import transactional_cached +try: + from spyne import MethodContext +except ImportError: + pass +else: + from spyne.application import Application + from spyne.interface.wsdl import Wsdl11 + from spyne.protocol.soap import Soap11 + from spyne.server.http import HttpBase + + +class SOAPBinding(Base): + + meta_type = 'ERP5 SOAP Binding' + portal_type = 'SOAP Binding' + + security = ClassSecurityInfo() + security.declareObjectProtected(AccessContentsInformation) + + property_sheets = ( PropertySheet.CategoryCore + , PropertySheet.DublinCore + , PropertySheet.SOAPBinding + ) + + _service_class_dict = {} + + security.declarePrivate('registerServiceClass') + @classmethod + def registerServiceClass(cls, service_class): + path = '%s.%s' % (service_class.__module__, service_class.__name__) + cls._service_class_dict[path] = service_class + + @classmethod + def getRegisteredServiceClassItemList(cls): + return sorted(('%s (%s)' % (v.__name__, v.__module__), k) + for k, v in cls._service_class_dict.iteritems()) + + security.declarePrivate('getListItemUrl') + def getListItemUrl(self, *args): + return self.getId() + '/view' + + def _getServer(self): + try: + serial, server = self._v_server + if serial == self._p_serial: + return server + except AttributeError: + pass + server = HttpBase(Application( + map(self._service_class_dict.__getitem__, self.getServiceClassList()), + self.getTargetNamespace(), + in_protocol=Soap11(), out_protocol=Soap11())) + self._v_server = self._p_serial, server + return server + + def __call__(self, REQUEST): + server = self._getServer() + if REQUEST.method == 'GET': + wsdl = Wsdl11(server.app.interface) + wsdl.build_interface_document(self.absolute_url()) + return wsdl.get_interface_document() + REQUEST.stdin.seek(0) + ctx = MethodContext(server) + ctx.in_string = REQUEST.stdin + ctx, = server.generate_contexts(ctx) + ctx.udc = self + server.get_in_object(ctx) + server.get_out_object(ctx) + server.get_out_string(ctx) + return ''.join(ctx.out_string) + +try: + from spyne.service import ServiceBase + from spyne.decorator import rpc + from spyne.model.complex import Iterable + from spyne.model.primitive import Integer + from spyne.model.primitive import Unicode +except ImportError: + pass +else: + class HelloWorldService(ServiceBase): + @rpc(Unicode, Integer, _returns=Iterable(Unicode)) + def say_hello(ctx, name, times): + ''' + Docstrings for service methods appear as documentation in the wsdl + <b>what fun</b> + @param name the name to say hello to + @param the number of times to say hello + @return the completed array + ''' + return [u'Hello, %s' % name] * times + + SOAPBinding.registerServiceClass(HelloWorldService) diff --git a/product/ERP5/Tool/InterfaceTool.py b/product/ERP5/Tool/InterfaceTool.py new file mode 100644 index 0000000000000000000000000000000000000000..eaffd69bfee5186f0ff4674b2c57b502249845a2 --- /dev/null +++ b/product/ERP5/Tool/InterfaceTool.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +############################################################################## +# Copyright (c) 2012 Nexedi SA and Contributors. All Rights Reserved. +# Julien Muchembled <jm@nexedi.com> +# +# WARNING: This program as such is intended to be used by professional +# programmers who take the whole responsibility of assessing all potential +# consequences resulting from its eventual inadequacies and bugs +# End users who are looking for a ready-to-use solution with commercial +# guarantees and support are strongly advised to contract a Free Software +# Service Company +# +# This program is Free Software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +############################################################################## + +from Products.ERP5Type.Globals import InitializeClass +from Products.ERP5Type.Tool.BaseTool import BaseTool + +class InterfaceTool(BaseTool): + """ + Placeholder for SOAP Interfaces + """ + + id = 'portal_interfaces' + meta_type = 'ERP5 Interface Tool' + portal_type = 'Interface Tool' + +InitializeClass(InterfaceTool) diff --git a/product/ERP5/__init__.py b/product/ERP5/__init__.py index cdd8bca6481ce552d3ca0bc1ecd2ac7e98f2c1e1..30e3d1f26a8d1989450ea27880a01f841722a54f 100644 --- a/product/ERP5/__init__.py +++ b/product/ERP5/__init__.py @@ -50,7 +50,7 @@ from Tool import CategoryTool, SimulationTool, RuleTool, IdTool, TemplateTool,\ TrashTool, ContributionTool, NotificationTool, PasswordTool,\ GadgetTool, ContributionRegistryTool, IntrospectionTool,\ AcknowledgementTool, SolverTool, SolverProcessTool,\ - ConversionTool, RoundingTool, UrlRegistryTool,\ + ConversionTool, RoundingTool, UrlRegistryTool, InterfaceTool,\ CertificateAuthorityTool, InotifyTool, TaskDistributionTool import ERP5Site from Document import PythonScript @@ -83,6 +83,7 @@ portal_tools = ( CategoryTool.CategoryTool, CertificateAuthorityTool.CertificateAuthorityTool, InotifyTool.InotifyTool, TaskDistributionTool.TaskDistributionTool, + InterfaceTool.InterfaceTool, ) content_classes = () content_constructors = ()