Commit e9ab7062 authored by Paul Graydon's avatar Paul Graydon

ors_wendelin: Rework security model

parent b2e4b417
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Base Category" 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>acquisition_append_value</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>acquisition_base_category</string> </key>
<value>
<tuple>
<string>subordination</string>
</tuple>
</value>
</item>
<item>
<key> <string>acquisition_copy_value</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>acquisition_mask_value</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>acquisition_object_id</string> </key>
<value>
<tuple>
<string>default_career</string>
</tuple>
</value>
</item>
<item>
<key> <string>acquisition_portal_type</string> </key>
<value> <string>python: [\'Career\', \'Organisation\']</string> </value>
</item>
<item>
<key> <string>acquisition_sync_value</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>category_type</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>criterion_property</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>fallback_base_category</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>role</string> </value>
</item>
<item>
<key> <string>id_generator</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id_group</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>membership_criterion_base_category</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>membership_criterion_category</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>multimembership_criterion_base_category</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Base Category</string> </value>
</item>
<item>
<key> <string>read_permission</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>rid</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>short_title</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>sid</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>test_method_id</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Role</string> </value>
</item>
<item>
<key> <string>write_permission</string> </key>
<value>
<none/>
</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>
<local_roles_item> <local_roles_item>
<local_roles> <local_roles>
<role id='ORS_CLIENT'> <role id='ADMIN'>
<item>Auditor</item> <item>Auditor</item>
<item>Author</item>
</role> </role>
<role id='ORS_MAN'> <role id='USER'>
<item>Auditor</item> <item>Auditor</item>
<item>Author</item>
</role> </role>
</local_roles> </local_roles>
</local_roles_item> </local_roles_item>
\ No newline at end of file
<local_roles_item> <local_roles_item>
<local_roles> <local_roles>
<role id='ORS_MAN'> <role id='ADMIN'>
<item>Auditor</item> <item>Auditor</item>
</role> </role>
</local_roles> </local_roles>
......
<local_roles_item> <local_roles_item>
<local_roles> <local_roles>
<role id='ORS_CLIENT'> <role id='ADMIN'>
<item>Auditor</item> <item>Auditor</item>
</role> </role>
<role id='ORS_MAN'> <role id='USER'>
<item>Auditor</item> <item>Auditor</item>
</role> </role>
</local_roles> </local_roles>
......
<local_roles_item> <local_roles_item>
<local_roles> <local_roles>
<role id='ORS_MAN'> <role id='ADMIN'>
<item>Auditor</item> <item>Auditor</item>
</role> </role>
</local_roles> </local_roles>
......
<local_roles_item> <local_roles_item>
<local_roles> <local_roles>
<role id='ORS_CLIENT'> <role id='ADMIN'>
<item>Auditor</item> <item>Auditor</item>
</role> </role>
<role id='ORS_MAN'> <role id='USER'>
<item>Auditor</item> <item>Auditor</item>
</role> </role>
</local_roles> </local_roles>
......
<local_roles_item> <local_roles_item>
<local_roles> <local_roles>
<role id='ORS_MAN'> <role id='ADMIN'>
<item>Auditor</item> <item>Auditor</item>
</role> </role>
</local_roles> </local_roles>
......
<local_roles_item> <local_roles_item>
<local_roles> <local_roles>
<role id='ORS_CLIENT'> <role id='ADMIN'>
<item>Auditor</item> <item>Auditor</item>
<item>Author</item>
</role> </role>
<role id='ORS_MAN'> <role id='USER'>
<item>Auditor</item> <item>Auditor</item>
<item>Author</item>
</role> </role>
</local_roles> </local_roles>
</local_roles_item> </local_roles_item>
\ No newline at end of file
<local_roles_item> <local_roles_item>
<local_roles> <local_roles>
<role id='ORS_CLIENT'> <role id='ADMIN'>
<item>Auditor</item> <item>Auditor</item>
</role> </role>
<role id='ORS_MAN'> <role id='USER'>
<item>Auditor</item> <item>Auditor</item>
</role> </role>
</local_roles> </local_roles>
......
<local_roles_item> <local_roles_item>
<local_roles> <local_roles>
<role id='ORS_MAN'> <role id='ADMIN'>
<item>Auditor</item> <item>Auditor</item>
<item>Author</item> <item>Author</item>
</role> </role>
......
<local_roles_item> <local_roles_item>
<local_roles> <local_roles>
<role id='ORS_MAN'> <role id='ADMIN'>
<item>Auditor</item> <item>Auditor</item>
<item>Author</item> <item>Author</item>
</role> </role>
......
...@@ -55,15 +55,17 @@ ...@@ -55,15 +55,17 @@
</item> </item>
<item> <item>
<key> <string>codification</string> </key> <key> <string>codification</string> </key>
<value> <string>ORS_MAN</string> </value> <value> <string>ADMIN</string> </value>
</item> </item>
<item> <item>
<key> <string>description</string> </key> <key> <string>description</string> </key>
<value> <string>A manager of the ORS Wendelin platform.</string> </value> <value>
<none/>
</value>
</item> </item>
<item> <item>
<key> <string>id</string> </key> <key> <string>id</string> </key>
<value> <string>manager</string> </value> <value> <string>administrator</string> </value>
</item> </item>
<item> <item>
<key> <string>short_title</string> </key> <key> <string>short_title</string> </key>
...@@ -73,7 +75,7 @@ ...@@ -73,7 +75,7 @@
</item> </item>
<item> <item>
<key> <string>title</string> </key> <key> <string>title</string> </key>
<value> <string>Manager</string> </value> <value> <string>Administrator</string> </value>
</item> </item>
<item> <item>
<key> <string>workflow_history</string> </key> <key> <string>workflow_history</string> </key>
...@@ -95,11 +97,17 @@ ...@@ -95,11 +97,17 @@
<value> <value>
<dictionary> <dictionary>
<item> <item>
<key> <string>edit_workflow</string> </key> <key> <string>category_publication_workflow</string> </key>
<value> <value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value> </value>
</item> </item>
<item>
<key> <string>edit_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
</dictionary> </dictionary>
</value> </value>
</item> </item>
...@@ -107,6 +115,67 @@ ...@@ -107,6 +115,67 @@
</pickle> </pickle>
</record> </record>
<record id="3" aka="AAAAAAAAAAM="> <record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_log</string> </key>
<value>
<list>
<dictionary>
<item>
<key> <string>action</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>actor</string> </key>
<value> <unicode>zope</unicode> </value>
</item>
<item>
<key> <string>comment</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>error_message</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>time</string> </key>
<value>
<object>
<klass>
<global name="_reconstructor" module="copy_reg"/>
</klass>
<tuple>
<global name="DateTime" module="DateTime.DateTime"/>
<global name="object" module="__builtin__"/>
<none/>
</tuple>
<state>
<tuple>
<float>1724313231.62</float>
<string>UTC</string>
</tuple>
</state>
</object>
</value>
</item>
<item>
<key> <string>validation_state</string> </key>
<value> <string>embedded</string> </value>
</item>
</dictionary>
</list>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="4" aka="AAAAAAAAAAQ=">
<pickle> <pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
</pickle> </pickle>
...@@ -137,7 +206,7 @@ ...@@ -137,7 +206,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>1017.64498.1071.48469</string> </value> <value> <string>1018.51867.29644.5478</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -157,7 +226,7 @@ ...@@ -157,7 +226,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1721139011.85</float> <float>1724660508.43</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
...@@ -53,27 +53,9 @@ ...@@ -53,27 +53,9 @@
</tuple> </tuple>
</value> </value>
</item> </item>
<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> <item>
<key> <string>codification</string> </key> <key> <string>codification</string> </key>
<value> <string>ORS</string> </value> <value> <string>USER</string> </value>
</item> </item>
<item> <item>
<key> <string>description</string> </key> <key> <string>description</string> </key>
...@@ -83,7 +65,7 @@ ...@@ -83,7 +65,7 @@
</item> </item>
<item> <item>
<key> <string>id</string> </key> <key> <string>id</string> </key>
<value> <string>ors</string> </value> <value> <string>user</string> </value>
</item> </item>
<item> <item>
<key> <string>short_title</string> </key> <key> <string>short_title</string> </key>
...@@ -93,12 +75,12 @@ ...@@ -93,12 +75,12 @@
</item> </item>
<item> <item>
<key> <string>title</string> </key> <key> <string>title</string> </key>
<value> <string>ORS</string> </value> <value> <string>User</string> </value>
</item> </item>
<item> <item>
<key> <string>workflow_history</string> </key> <key> <string>workflow_history</string> </key>
<value> <value>
<persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent> <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value> </value>
</item> </item>
</dictionary> </dictionary>
...@@ -106,49 +88,94 @@ ...@@ -106,49 +88,94 @@
</record> </record>
<record id="2" aka="AAAAAAAAAAI="> <record id="2" aka="AAAAAAAAAAI=">
<pickle> <pickle>
<global name="Length" module="BTrees.Length"/> <global name="PersistentMapping" module="Persistence.mapping"/>
</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>
<pickle> <pickle>
<none/> <dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <string>category_publication_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>edit_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle> </pickle>
</record> </record>
<record id="5" aka="AAAAAAAAAAU="> <record id="3" aka="AAAAAAAAAAM=">
<pickle> <pickle>
<global name="PersistentMapping" module="Persistence.mapping"/> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
</pickle> </pickle>
<pickle> <pickle>
<dictionary> <dictionary>
<item> <item>
<key> <string>data</string> </key> <key> <string>_log</string> </key>
<value> <value>
<list>
<dictionary> <dictionary>
<item> <item>
<key> <string>edit_workflow</string> </key> <key> <string>action</string> </key>
<value> <value>
<persistent> <string encoding="base64">AAAAAAAAAAY=</string> </persistent> <none/>
</value> </value>
</item> </item>
<item>
<key> <string>actor</string> </key>
<value> <unicode>zope</unicode> </value>
</item>
<item>
<key> <string>comment</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>error_message</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>time</string> </key>
<value>
<object>
<klass>
<global name="_reconstructor" module="copy_reg"/>
</klass>
<tuple>
<global name="DateTime" module="DateTime.DateTime"/>
<global name="object" module="__builtin__"/>
<none/>
</tuple>
<state>
<tuple>
<float>1724313337.55</float>
<string>UTC</string>
</tuple>
</state>
</object>
</value>
</item>
<item>
<key> <string>validation_state</string> </key>
<value> <string>embedded</string> </value>
</item>
</dictionary> </dictionary>
</list>
</value> </value>
</item> </item>
</dictionary> </dictionary>
</pickle> </pickle>
</record> </record>
<record id="6" aka="AAAAAAAAAAY="> <record id="4" aka="AAAAAAAAAAQ=">
<pickle> <pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
</pickle> </pickle>
...@@ -179,7 +206,7 @@ ...@@ -179,7 +206,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>1017.64107.51934.50824</string> </value> <value> <string>1018.51867.57848.39884</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -199,7 +226,7 @@ ...@@ -199,7 +226,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1721139011.85</float> <float>1724660525.96</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Category" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_folders_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Copy_or_Move_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Delete_objects_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Modify_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>codification</string> </key>
<value> <string>ORS_CLIENT</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>A client owning an ORS which forwards its logs to the Wendelin platform.</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>client</string> </value>
</item>
<item>
<key> <string>short_title</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Client</string> </value>
</item>
<item>
<key> <string>workflow_history</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <string>edit_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_log</string> </key>
<value>
<list>
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string>edit</string> </value>
</item>
<item>
<key> <string>actor</string> </key>
<value> <unicode>zope</unicode> </value>
</item>
<item>
<key> <string>comment</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>error_message</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>1017.64497.46575.49749</string> </value>
</item>
<item>
<key> <string>state</string> </key>
<value> <string>current</string> </value>
</item>
<item>
<key> <string>time</string> </key>
<value>
<object>
<klass>
<global name="_reconstructor" module="copy_reg"/>
</klass>
<tuple>
<global name="DateTime" module="DateTime.DateTime"/>
<global name="object" module="__builtin__"/>
<none/>
</tuple>
<state>
<tuple>
<float>1721139011.85</float>
<string>UTC</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<property_sheet_list>
<portal_type id="Data Acquisition Unit">
<item>OrsClientProject</item>
</portal_type>
<portal_type id="Data Array">
<item>OrsClientProject</item>
</portal_type>
</property_sheet_list>
\ No newline at end of file
<type_roles> <type_roles>
<role id='Assignor'> <role id='Assignor'>
<property id='title'>ORS Manager</property> <property id='title'>Administrator</property>
<multi_property id='category'>role/ors/manager</multi_property> <multi_property id='category'>function/administrator</multi_property>
</role> </role>
</type_roles> </type_roles>
\ No newline at end of file
<type_roles> <type_roles>
<role id='Auditor'>
<property id='title'>ORS Client</property>
<multi_property id='category'>role/ors/client</multi_property>
</role>
<role id='Auditor; Author'> <role id='Auditor; Author'>
<property id='title'>ORS Manager</property> <property id='title'>Administrator</property>
<multi_property id='category'>role/ors/manager</multi_property> <multi_property id='category'>function/administrator</multi_property>
</role>
<role id='Auditor'>
<property id='title'>Client</property>
<multi_property id='category'>function/user</multi_property>
</role> </role>
</type_roles> </type_roles>
\ No newline at end of file
<type_roles> <type_roles>
<role id='Assignor'>
<property id='title'>Administrator</property>
<multi_property id='category'>function/administrator</multi_property>
</role>
<role id='Auditor'> <role id='Auditor'>
<property id='title'>ORS Client</property> <property id='title'>Client</property>
<property id='condition'>here/getDestinationProject</property> <property id='description'>A client can only access a Data Acquisition Unit (ORS) related to the same project.</property>
<property id='base_category_script'>ERP5Type_getSecurityCategoryFromContent</property> <property id='base_category_script'>ERP5Type_getSecurityCategoryFromRelatedDataSupplyLine</property>
<multi_property id='category'>role/ors/client</multi_property> <multi_property id='category'>function/user</multi_property>
<multi_property id='base_category'>destination_project</multi_property> <multi_property id='base_category'>destination_project</multi_property>
</role> </role>
<role id='Assignor'>
<property id='title'>ORS Manager</property>
<multi_property id='category'>role/ors/manager</multi_property>
</role>
</type_roles> </type_roles>
\ No newline at end of file
<type_roles> <type_roles>
<role id='Auditor'>
<property id='title'>Administrator</property>
<multi_property id='category'>function/administrator</multi_property>
</role>
<role id='Auditor'>
<property id='title'>Client</property>
<property id='condition'>python: here.getParentValue().getDestinationProject() is not None</property>
<property id='base_category_script'>ERP5Type_getSecurityCategoryFromParentContent</property>
<multi_property id='category'>function/user</multi_property>
<multi_property id='base_category'>destination_project</multi_property>
</role>
</type_roles> </type_roles>
\ No newline at end of file
<type_roles> <type_roles>
<role id='Auditor'> <role id='Auditor'>
<property id='title'>ORS Manager</property> <property id='title'>Administrator</property>
<multi_property id='category'>role/ors/manager</multi_property> <multi_property id='category'>function/administrator</multi_property>
</role> </role>
</type_roles> </type_roles>
\ No newline at end of file
<type_roles> <type_roles>
<role id='Auditor'> <role id='Auditor'>
<property id='title'>ORS Client</property> <property id='title'>Administrator</property>
<property id='condition'>here/getDestinationProject</property> <multi_property id='category'>function/administrator</multi_property>
<property id='base_category_script'>ERP5Type_getSecurityCategoryFromContent</property>
<multi_property id='category'>role/ors/client</multi_property>
<multi_property id='base_category'>destination_project</multi_property>
</role> </role>
<role id='Auditor'> <role id='Auditor'>
<property id='title'>ORS Manager</property> <property id='title'>Client</property>
<multi_property id='category'>role/ors/manager</multi_property> <property id='description'>A client can only access a Data Analysis related to the same project. Required for ORS KPI graphing.</property>
<property id='condition'>python: here.getDestinationProject() is not None</property>
<property id='base_category_script'>ERP5Type_getSecurityCategoryFromContent</property>
<multi_property id='category'>function/user</multi_property>
<multi_property id='base_category'>destination_project</multi_property>
</role> </role>
</type_roles> </type_roles>
\ No newline at end of file
<type_roles> <type_roles>
<role id='Auditor'> <role id='Auditor'>
<property id='title'>ORS Client</property> <property id='title'>Administrator</property>
<multi_property id='category'>role/ors/client</multi_property> <multi_property id='category'>function/administrator</multi_property>
</role> </role>
<role id='Auditor'> <role id='Auditor'>
<property id='title'>ORS Manager</property> <property id='title'>Client</property>
<multi_property id='category'>role/ors/manager</multi_property> <multi_property id='category'>function/user</multi_property>
</role> </role>
</type_roles> </type_roles>
\ No newline at end of file
<type_roles> <type_roles>
<role id='Auditor'> <role id='Auditor'>
<property id='title'>ORS Client</property> <property id='title'>Administrator</property>
<property id='condition'>here/getDestinationProject</property> <multi_property id='category'>function/administrator</multi_property>
<property id='base_category_script'>ERP5Type_getSecurityCategoryFromContent</property>
<multi_property id='category'>role/ors/client</multi_property>
<multi_property id='base_category'>destination_project</multi_property>
</role> </role>
<role id='Auditor'> <role id='Auditor'>
<property id='title'>ORS Manager</property> <property id='title'>Client</property>
<multi_property id='category'>role/ors/manager</multi_property> <property id='description'>A client can only access a Data Array related to the same project. Required for ORS KPI graphing.</property>
<property id='base_category_script'>ERP5Type_getSecurityCategoryFromRelatedDataAnalysisLine</property>
<multi_property id='category'>function/user</multi_property>
<multi_property id='base_category'>destination_project</multi_property>
</role> </role>
</type_roles> </type_roles>
\ No newline at end of file
<type_roles> <type_roles>
<role id='Auditor'> <role id='Auditor'>
<property id='title'>ORS Manager</property> <property id='title'>Administrator</property>
<multi_property id='category'>role/ors/manager</multi_property> <multi_property id='category'>function/administrator</multi_property>
</role> </role>
</type_roles> </type_roles>
\ No newline at end of file
<type_roles> <type_roles>
<role id='Auditor'> <role id='Auditor'>
<property id='title'>ORS Manager</property> <property id='title'>Administrator</property>
<multi_property id='category'>role/ors/manager</multi_property> <multi_property id='category'>function/administrator</multi_property>
</role> </role>
</type_roles> </type_roles>
\ No newline at end of file
<type_roles> <type_roles>
<role id='Auditor'> <role id='Auditor'>
<property id='title'>ORS Client</property> <property id='title'>Administrator</property>
<multi_property id='category'>role/ors/client</multi_property> <multi_property id='category'>function/administrator</multi_property>
</role> </role>
<role id='Auditor'> <role id='Auditor'>
<property id='title'>ORS Manager</property> <property id='title'>Client</property>
<multi_property id='category'>role/ors/manager</multi_property> <multi_property id='category'>function/user</multi_property>
</role> </role>
</type_roles> </type_roles>
\ No newline at end of file
<type_roles> <type_roles>
<role id='Auditor'> <role id='Auditor'>
<property id='title'>ORS Client</property> <property id='title'>Administrator</property>
<multi_property id='category'>role/ors/client</multi_property> <multi_property id='category'>function/administrator</multi_property>
</role> </role>
<role id='Auditor'> <role id='Auditor'>
<property id='title'>ORS Manager</property> <property id='title'>Client</property>
<multi_property id='category'>role/ors/manager</multi_property> <multi_property id='category'>function/user</multi_property>
</role> </role>
</type_roles> </type_roles>
\ No newline at end of file
<type_roles> <type_roles>
<role id='Auditor'> <role id='Auditor'>
<property id='title'>ORS Manager</property> <property id='title'>Administrator</property>
<multi_property id='category'>role/ors/manager</multi_property> <multi_property id='category'>function/administrator</multi_property>
</role> </role>
</type_roles> </type_roles>
\ No newline at end of file
<type_roles> <type_roles>
<role id='Auditor'> <role id='Auditor'>
<property id='title'>ORS Manager</property> <property id='title'>Administrator</property>
<multi_property id='category'>role/ors/manager</multi_property> <multi_property id='category'>function/administrator</multi_property>
</role> </role>
</type_roles> </type_roles>
\ No newline at end of file
<type_roles> <type_roles>
<role id='Assignor'>
<property id='title'>Administrator</property>
<multi_property id='category'>function/administrator</multi_property>
</role>
<role id='Auditor'>
<property id='title'>Client</property>
<property id='condition'>python: here.getParentValue().getDestinationProject() is not None</property>
<property id='base_category_script'>ERP5Type_getSecurityCategoryFromParentContent</property>
<multi_property id='category'>function/user</multi_property>
<multi_property id='base_category'>destination_project</multi_property>
</role>
</type_roles> </type_roles>
\ No newline at end of file
<type_roles> <type_roles>
<role id='Auditor'>
<property id='title'>ORS Client</property>
<multi_property id='category'>role/ors/client</multi_property>
</role>
<role id='Auditor; Author'> <role id='Auditor; Author'>
<property id='title'>ORS Manager</property> <property id='title'>Administrator</property>
<multi_property id='category'>role/ors/manager</multi_property> <multi_property id='category'>function/administrator</multi_property>
</role>
<role id='Auditor'>
<property id='title'>Client</property>
<multi_property id='category'>function/user</multi_property>
</role> </role>
</type_roles> </type_roles>
\ No newline at end of file
<type_roles> <type_roles>
<role id='Assignor'>
<property id='title'>Administrator</property>
<multi_property id='category'>function/administrator</multi_property>
</role>
<role id='Auditor'> <role id='Auditor'>
<property id='title'>ORS Client</property> <property id='title'>Client</property>
<property id='condition'>here/getDestinationProject</property> <property id='description'>A client can only see a Data Supply belonging to the same project.</property>
<property id='condition'>python: here.getDestinationProject() is not None</property>
<property id='base_category_script'>ERP5Type_getSecurityCategoryFromContent</property> <property id='base_category_script'>ERP5Type_getSecurityCategoryFromContent</property>
<multi_property id='category'>role/ors/client</multi_property> <multi_property id='category'>function/user</multi_property>
<multi_property id='base_category'>destination_project</multi_property> <multi_property id='base_category'>destination_project</multi_property>
</role> </role>
<role id='Assignor'>
<property id='title'>ORS Manager</property>
<multi_property id='category'>role/ors/manager</multi_property>
</role>
</type_roles> </type_roles>
\ No newline at end of file
<type_roles> <type_roles>
<role id='Auditor'> <role id='Auditor'>
<property id='title'>ORS Client</property> <property id='title'>Administrator</property>
<multi_property id='category'>role/ors/client</multi_property> <property id='description'>Access to the Data Transformation Module is only needed for ORS KPI graphing.</property>
<multi_property id='category'>function/administrator</multi_property>
</role> </role>
<role id='Auditor'> <role id='Auditor'>
<property id='title'>ORS Manager</property> <property id='title'>Client</property>
<multi_property id='category'>role/ors/manager</multi_property> <property id='description'>Access to the Data Transformation Module is only needed for ORS KPI graphing.</property>
<multi_property id='category'>function/user</multi_property>
</role> </role>
</type_roles> </type_roles>
\ No newline at end of file
<type_roles> <type_roles>
<role id='Auditor'> <role id='Auditor'>
<property id='title'>ORS Manager</property> <property id='title'>Administrator</property>
<multi_property id='category'>role/ors/manager</multi_property> <multi_property id='category'>function/administrator</multi_property>
</role>
<role id='Auditor'>
<property id='title'>Client</property>
<multi_property id='category'>function/user</multi_property>
</role> </role>
</type_roles> </type_roles>
\ No newline at end of file
<type_roles> <type_roles>
<role id='Assignor'> <role id='Assignor'>
<property id='title'>ORS Manager</property> <property id='title'>Administrator</property>
<multi_property id='category'>role/ors/manager</multi_property> <multi_property id='category'>function/administrator</multi_property>
</role> </role>
</type_roles> </type_roles>
\ No newline at end of file
<type_roles> <type_roles>
<role id='Auditor; Author'> <role id='Auditor; Author'>
<property id='title'>ORS Manager</property> <property id='title'>Administrator</property>
<multi_property id='category'>role/ors/manager</multi_property> <multi_property id='category'>function/administrator</multi_property>
</role> </role>
</type_roles> </type_roles>
\ No newline at end of file
<type_roles> <type_roles>
<role id='Assignor'> <role id='Assignor'>
<property id='title'>ORS Manager</property> <property id='title'>Administrator</property>
<multi_property id='category'>role/ors/manager</multi_property> <multi_property id='category'>function/administrator</multi_property>
</role> </role>
</type_roles> </type_roles>
\ No newline at end of file
<type_roles> <type_roles>
<role id='Auditor; Author'> <role id='Auditor; Author'>
<property id='title'>ORS Manager</property> <property id='title'>Administrator</property>
<multi_property id='category'>role/ors/manager</multi_property> <multi_property id='category'>function/administrator</multi_property>
</role> </role>
</type_roles> </type_roles>
\ No newline at end of file
<type_roles> <type_roles>
<role id='Assignor'> <role id='Assignor'>
<property id='title'>ORS Manager</property> <property id='title'>Administrator</property>
<multi_property id='category'>role/ors/manager</multi_property> <multi_property id='category'>function/administrator</multi_property>
</role> </role>
</type_roles> </type_roles>
\ No newline at end of file
<workflow_chain>
<chain>
<type>Data Analysis</type>
<workflow>ors_wendelin_security_interaction_workflow</workflow>
</chain>
<chain>
<type>Data Analysis Line</type>
<workflow>ors_wendelin_security_interaction_workflow</workflow>
</chain>
<chain>
<type>Data Supply</type>
<workflow>ors_wendelin_security_interaction_workflow</workflow>
</chain>
<chain>
<type>Data Supply Line</type>
<workflow>ors_wendelin_security_interaction_workflow</workflow>
</chain>
</workflow_chain>
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Category Property" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>destination_project_category</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
...@@ -3,7 +3,7 @@ import random ...@@ -3,7 +3,7 @@ import random
portal = context.getPortalObject() portal = context.getPortalObject()
client_role = 'ors/client' client_function = 'function/user'
password_length = 16 password_length = 16
system_random = random.SystemRandom() system_random = random.SystemRandom()
...@@ -50,24 +50,20 @@ project = portal.project_module.newContent( ...@@ -50,24 +50,20 @@ project = portal.project_module.newContent(
reference=project_reference reference=project_reference
) )
project.validate() project.validate()
project_url = project.getRelativeUrl() destination_project = project.getRelativeUrl()
user = portal.person_module.newContent(portal_type='Person', reference=client_username) user = portal.person_module.newContent(portal_type='Person', reference=client_username)
user.newContent(portal_type='Assignment', destination_project=project_url, role=client_role).open() user.newContent(portal_type='Assignment', destination_project=destination_project, function=client_function).open()
user.newContent(portal_type='ERP5 Login', reference=client_username, password=client_init_password).validate() user.newContent(portal_type='ERP5 Login', reference=client_username, password=client_init_password).validate()
user.validate() user.validate()
data_acquisition_unit = portal.data_acquisition_unit_module.newContent( data_acquisition_unit = portal.data_acquisition_unit_module.newContent(
portal_type='Data Acquisition Unit', portal_type='Data Acquisition Unit',
reference=ors_reference, reference=ors_reference,
title=ors_title, title=ors_title
destination_project=project_url,
) )
data_acquisition_unit.validate() data_acquisition_unit.validate()
data_supply = data_acquisition_unit.DataAcquisitionUnit_createOrsDataSupply(batch=1) data_supply = data_acquisition_unit.DataAcquisitionUnit_createOrsDataSupply(destination_project, batch=1)
data_acquisition_unit.updateLocalRolesOnSecurityGroups()
data_supply.updateLocalRolesOnSecurityGroups()
response_dict = dict(username=client_username, init_password=client_init_password) response_dict = dict(username=client_username, init_password=client_init_password)
return json.dumps(response_dict) return json.dumps(response_dict)
...@@ -54,7 +54,7 @@ ...@@ -54,7 +54,7 @@
</item> </item>
<item> <item>
<key> <string>id</string> </key> <key> <string>id</string> </key>
<value> <string>ERP5Site_registerOrsClientProject</string> </value> <value> <string>Base_registerOrsClientProject</string> </value>
</item> </item>
</dictionary> </dictionary>
</pickle> </pickle>
......
...@@ -2,7 +2,6 @@ if not context.getReference(): ...@@ -2,7 +2,6 @@ if not context.getReference():
return context.Base_redirect('view',keep_items={'portal_status_message': 'Reference is not defined'}) return context.Base_redirect('view',keep_items={'portal_status_message': 'Reference is not defined'})
reference = context.getReference() reference = context.getReference()
destination_project = context.getDestinationProject()
data_supply = context.portal_catalog.getResultValue( data_supply = context.portal_catalog.getResultValue(
portal_type='Data Supply', portal_type='Data Supply',
...@@ -21,7 +20,7 @@ data_supply = context.data_supply_module.newContent( ...@@ -21,7 +20,7 @@ data_supply = context.data_supply_module.newContent(
source='organisation_module/open_radio_station', source='organisation_module/open_radio_station',
source_section='organisation_module/open_radio_station', source_section='organisation_module/open_radio_station',
destination='organisation_module/rapid_space_data_center', destination='organisation_module/rapid_space_data_center',
destination_project=destination_project, destination_project=destination_project
) )
data_supply.newContent( data_supply.newContent(
...@@ -45,6 +44,7 @@ data_supply.newContent( ...@@ -45,6 +44,7 @@ data_supply.newContent(
).validate() ).validate()
data_supply.validate() data_supply.validate()
if batch: if batch:
return data_supply return data_supply
return data_supply.Base_redirect('view', keep_items={'portal_status_message': 'Data Supply is created'}) return data_supply.Base_redirect('view', keep_items={'portal_status_message': 'Data Supply is created'})
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
</item> </item>
<item> <item>
<key> <string>_params</string> </key> <key> <string>_params</string> </key>
<value> <string>batch=0, **kw</string> </value> <value> <string>destination_project=None, batch=0, **kw</string> </value>
</item> </item>
<item> <item>
<key> <string>id</string> </key> <key> <string>id</string> </key>
......
"""
This script returns a list of dictionaries which represent
the security groups which a person is member of. It extracts
the categories from the specified items related to the current content.
The parameters are
base_category_list -- list of category values we need to retrieve
user_name -- string obtained from getSecurityManager().getUser().getId()
ob -- object which we want to assign roles to
portal_type -- portal type of object
"""
if object is None:
return []
object = object.getParentValue()
if object is None:
return []
return object.ERP5Type_getSecurityCategoryFromContent(base_category_list, user_name, object, portal_type)
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="_reconstructor" module="copy_reg"/>
</klass>
<tuple>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
<global name="object" module="__builtin__"/>
<none/>
</tuple>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>base_category_list, user_name, object, portal_type</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>ERP5Type_getSecurityCategoryFromParentContent</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
"""
This script returns a list of dictionaries which represent
the security groups which a person is member of. It extracts
the categories from the specified item related to the current content.
The parameters are
base_category_list -- list of category values we need to retrieve
user_name -- string obtained from getSecurityManager().getUser().getId()
ob -- object which we want to assign roles to
portal_type -- portal type of object
"""
result_list = []
temp = []
if object is None:
return []
for related_item in object.Base_getRelatedObjectList(portal_type='Data Analysis Line'):
temp += object.ERP5Type_getSecurityParentCategoryFromContent([base_category_list[0]], user_name, related_item, portal_type)[0][base_category_list[0]]
if len(temp) > 0:
result_list = [{base_category_list[0]: temp}]
return result_list
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="_reconstructor" module="copy_reg"/>
</klass>
<tuple>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
<global name="object" module="__builtin__"/>
<none/>
</tuple>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>base_category_list, user_name, object, portal_type</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>ERP5Type_getSecurityCategoryFromRelatedDataAnalysisLine</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
"""
This script returns a list of dictionaries which represent
the security groups which a person is member of. It extracts
the categories from the specified item related to the current content.
The parameters are
base_category_list -- list of category values we need to retrieve
user_name -- string obtained from getSecurityManager().getUser().getId()
ob -- object which we want to assign roles to
portal_type -- portal type of object
"""
result_list = []
temp = []
if object is None:
return []
for related_item in object.Base_getRelatedObjectList(portal_type='Data Supply Line'):
temp += object.ERP5Type_getSecurityParentCategoryFromContent([base_category_list[0]], user_name, related_item, portal_type)[0][base_category_list[0]]
if len(temp) > 0:
result_list = [{base_category_list[0]: temp}]
return result_list
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="_reconstructor" module="copy_reg"/>
</klass>
<tuple>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
<global name="object" module="__builtin__"/>
<none/>
</tuple>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>base_category_list, user_name, object, portal_type</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>ERP5Type_getSecurityCategoryFromRelatedDataSupplyLine</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
...@@ -11,6 +11,5 @@ return ( ...@@ -11,6 +11,5 @@ return (
('ERP5Type_getSecurityCategoryFromAssignment', ['function']), ('ERP5Type_getSecurityCategoryFromAssignment', ['function']),
('ERP5Type_getSecurityCategoryFromAssignmentParent', ['function']), ('ERP5Type_getSecurityCategoryFromAssignmentParent', ['function']),
# ORS Wendelin security # ORS Wendelin security
('ERP5Type_getSecurityCategoryFromAssignment', ['role']), ('ERP5Type_getSecurityCategoryFromAssignment', ['destination_project', 'function']),
('ERP5Type_getSecurityCategoryFromAssignment', ['destination_project', 'role']),
) )
portal = context.getPortalObject() portal = context.getPortalObject()
project_url = context.getRelativeUrl() destination_project = context.getRelativeUrl()
ors_reference = 'ors.' + ors_tag ors_reference = 'ors.' + ors_tag
data_acquisition_unit = context.portal_catalog.getResultValue( data_acquisition_unit = context.portal_catalog.getResultValue(
...@@ -20,14 +20,10 @@ if data_acquisition_unit: ...@@ -20,14 +20,10 @@ if data_acquisition_unit:
data_acquisition_unit = portal.data_acquisition_unit_module.newContent( data_acquisition_unit = portal.data_acquisition_unit_module.newContent(
portal_type='Data Acquisition Unit', portal_type='Data Acquisition Unit',
reference=ors_reference, reference=ors_reference,
title=ors_title, title=ors_title
destination_project=project_url,
) )
data_acquisition_unit.validate() data_acquisition_unit.validate()
data_supply = data_acquisition_unit.DataAcquisitionUnit_createOrsDataSupply(batch=1) data_supply = data_acquisition_unit.DataAcquisitionUnit_createOrsDataSupply(destination_project, batch=1)
data_acquisition_unit.updateLocalRolesOnSecurityGroups()
data_supply.updateLocalRolesOnSecurityGroups()
portal_status_message = "New ORS successfully added to project." portal_status_message = "New ORS successfully added to project."
kw['keep_items'] = dict(portal_status_message=portal_status_message) kw['keep_items'] = dict(portal_status_message=portal_status_message)
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<ZopeData> <ZopeData>
<record id="1" aka="AAAAAAAAAAE="> <record id="1" aka="AAAAAAAAAAE=">
<pickle> <pickle>
<global name="Property Sheet" module="erp5.portal_type"/> <global name="Interaction Workflow" module="erp5.portal_type"/>
</pickle> </pickle>
<pickle> <pickle>
<dictionary> <dictionary>
...@@ -24,6 +24,12 @@ ...@@ -24,6 +24,12 @@
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value> </value>
</item> </item>
<item>
<key> <string>comment</string> </key>
<value>
<none/>
</value>
</item>
<item> <item>
<key> <string>description</string> </key> <key> <string>description</string> </key>
<value> <value>
...@@ -32,7 +38,17 @@ ...@@ -32,7 +38,17 @@
</item> </item>
<item> <item>
<key> <string>id</string> </key> <key> <string>id</string> </key>
<value> <string>OrsClientProject</string> </value> <value> <string>ors_wendelin_security_interaction_workflow</string> </value>
</item>
<item>
<key> <string>language</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>ORS Wendelin Security Interaction Workflow</string> </value>
</item> </item>
</dictionary> </dictionary>
</pickle> </pickle>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Interaction Workflow Interaction" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>before_commit_script/portal_workflow/ors_wendelin_security_interaction_workflow/script_Base_updateAggregateLocalRoles</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>interaction_data_analysis_line_set_aggregate</string> </value>
</item>
<item>
<key> <string>portal_type_filter</string> </key>
<value>
<tuple>
<string>Data Analysis Line</string>
</tuple>
</value>
</item>
<item>
<key> <string>temporary_document_disallowed</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>data_analysis_line_set_aggregate</string> </value>
</item>
<item>
<key> <string>trigger_method_id</string> </key>
<value>
<tuple>
<string>_setAggregate.*</string>
</tuple>
</value>
</item>
<item>
<key> <string>trigger_once_per_transaction</string> </key>
<value> <int>0</int> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Interaction Workflow Interaction" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>before_commit_script/portal_workflow/ors_wendelin_security_interaction_workflow/script_Base_updateLocalRoles</string>
<string>before_commit_script/portal_workflow/ors_wendelin_security_interaction_workflow/script_DataAnalysis_updateLineRelatedItemLocalRoles</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>interaction_data_analysis_set_destination_project</string> </value>
</item>
<item>
<key> <string>portal_type_filter</string> </key>
<value>
<tuple>
<string>Data Analysis</string>
</tuple>
</value>
</item>
<item>
<key> <string>temporary_document_disallowed</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>data_analysis_set_destination_project</string> </value>
</item>
<item>
<key> <string>trigger_method_id</string> </key>
<value>
<tuple>
<string>_setDestinationProject.*</string>
</tuple>
</value>
</item>
<item>
<key> <string>trigger_once_per_transaction</string> </key>
<value> <int>0</int> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Interaction Workflow Interaction" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>before_commit_script/portal_workflow/ors_wendelin_security_interaction_workflow/script_Base_updateAggregateLocalRoles</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>interaction_data_supply_line_set_aggregate</string> </value>
</item>
<item>
<key> <string>portal_type_filter</string> </key>
<value>
<tuple>
<string>Data Supply Line</string>
</tuple>
</value>
</item>
<item>
<key> <string>temporary_document_disallowed</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>data_supply_line_set_aggregate</string> </value>
</item>
<item>
<key> <string>trigger_method_id</string> </key>
<value>
<tuple>
<string>_setAggregate.*</string>
</tuple>
</value>
</item>
<item>
<key> <string>trigger_once_per_transaction</string> </key>
<value> <int>0</int> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Interaction Workflow Interaction" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>before_commit_script/portal_workflow/ors_wendelin_security_interaction_workflow/script_Base_updateLocalRoles</string>
<string>before_commit_script/portal_workflow/ors_wendelin_security_interaction_workflow/script_DataSupplyLine_updateSelfAggregateLocalRoles</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>interaction_data_supply_set_destination_project</string> </value>
</item>
<item>
<key> <string>portal_type_filter</string> </key>
<value>
<tuple>
<string>Data Supply</string>
</tuple>
</value>
</item>
<item>
<key> <string>temporary_document_disallowed</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>data_supply_set_destination_project</string> </value>
</item>
<item>
<key> <string>trigger_method_id</string> </key>
<value>
<tuple>
<string>_setDestinationProject.*</string>
</tuple>
</value>
</item>
<item>
<key> <string>trigger_once_per_transaction</string> </key>
<value> <int>0</int> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
tag = script.id
activate_kw = dict(tag=tag)
item = state_change['object']
item.reindexObject(activate_kw=activate_kw)
for aggregate_value in item.getAggregateValueList():
aggregate_value.activate(after_tag=tag).updateLocalRolesOnSecurityGroups()
try:
content_values = aggregate_value.contentValues()
for content_value in content_values:
content_value.activate(after_tag=tag).updateLocalRolesOnSecurityGroups()
except AttributeError:
pass
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Workflow Script" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="_reconstructor" module="copy_reg"/>
</klass>
<tuple>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
<global name="object" module="__builtin__"/>
<none/>
</tuple>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>state_change</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>script_Base_updateAggregateLocalRoles</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Base_updateAggregateLocalRoles</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Workflow Script" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="_reconstructor" module="copy_reg"/>
</klass>
<tuple>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
<global name="object" module="__builtin__"/>
<none/>
</tuple>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>state_change</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>script_Base_updateLocalRoles</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Base_updateLocalRoles</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
tag = script.id
activate_kw = dict(tag=tag)
data_analysis = state_change['object']
data_analysis.reindexObject(activate_kw=activate_kw)
data_analysis_lines = data_analysis.contentValues(portal_type='Data Analysis Line')
if len(data_analysis_lines) == 0:
return
for data_analysis_line in data_analysis_lines:
data_analysis_line.activate(after_tag=tag).updateLocalRolesOnSecurityGroups()
for value in data_analysis_line.getAggregateValueList():
value.activate(after_tag=tag).updateLocalRolesOnSecurityGroups()
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Workflow Script" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="_reconstructor" module="copy_reg"/>
</klass>
<tuple>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
<global name="object" module="__builtin__"/>
<none/>
</tuple>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>state_change</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>script_DataAnalysis_updateLineRelatedItemLocalRoles</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>DataAnalysis_updateLineRelatedItemLocalRoles</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
tag = script.id
activate_kw = dict(tag=tag)
data_supply = state_change['object']
data_supply.reindexObject(activate_kw=activate_kw)
data_supply_lines = data_supply.contentValues(portal_type='Data Supply Line')
if len(data_supply_lines) == 0:
return
for data_supply_line in data_supply_lines:
data_supply_line.activate(after_tag=tag).updateLocalRolesOnSecurityGroups()
for value in data_supply_line.getAggregateValueList():
value.activate(after_tag=tag).updateLocalRolesOnSecurityGroups()
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Workflow Script" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="_reconstructor" module="copy_reg"/>
</klass>
<tuple>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
<global name="object" module="__builtin__"/>
<none/>
</tuple>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>state_change</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>script_DataSupplyLine_updateSelfAggregateLocalRoles</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>DataSupplyLine_updateSelfAggregateLocalRoles</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
...@@ -10,8 +10,8 @@ organisation_module/rapid_space_data_center ...@@ -10,8 +10,8 @@ organisation_module/rapid_space_data_center
portal_callables/DataAnalysisLine_calculateOrsKpi portal_callables/DataAnalysisLine_calculateOrsKpi
portal_callables/DataIngestionLine_writeOrsFluentdIngestionToDataStream portal_callables/DataIngestionLine_writeOrsFluentdIngestionToDataStream
portal_callables/IngestionPolicy_parseOrsFluentdTag portal_callables/IngestionPolicy_parseOrsFluentdTag
portal_categories/role/ors portal_categories/function/administrator
portal_categories/role/ors/** portal_categories/function/user
portal_ingestion_policies/ors_enb_log_ingestion portal_ingestion_policies/ors_enb_log_ingestion
web_page_module/gadget_erp5_page_ors_wendelin_* web_page_module/gadget_erp5_page_ors_wendelin_*
web_page_module/ndarray_bundle.js web_page_module/ndarray_bundle.js
......
...@@ -10,8 +10,8 @@ organisation_module/rapid_space_data_center ...@@ -10,8 +10,8 @@ organisation_module/rapid_space_data_center
portal_callables/DataAnalysisLine_calculateOrsKpi portal_callables/DataAnalysisLine_calculateOrsKpi
portal_callables/DataIngestionLine_writeOrsFluentdIngestionToDataStream portal_callables/DataIngestionLine_writeOrsFluentdIngestionToDataStream
portal_callables/IngestionPolicy_parseOrsFluentdTag portal_callables/IngestionPolicy_parseOrsFluentdTag
portal_categories/role/ors portal_categories/function/administrator
portal_categories/role/ors/** portal_categories/function/user
portal_ingestion_policies/ors_enb_log_ingestion portal_ingestion_policies/ors_enb_log_ingestion
web_page_module/gadget_erp5_page_ors_wendelin_* web_page_module/gadget_erp5_page_ors_wendelin_*
web_page_module/ndarray_bundle.js web_page_module/ndarray_bundle.js
......
Data Acquisition Unit | OrsClientProject
Data Array | OrsClientProject
\ No newline at end of file
Data Analysis Line | ors_wendelin_security_interaction_workflow
Data Analysis | ors_wendelin_security_interaction_workflow
Data Supply Line | ors_wendelin_security_interaction_workflow
Data Supply | ors_wendelin_security_interaction_workflow
\ No newline at end of file
OrsClientProject
\ No newline at end of file
ors_wendelin_security_interaction_workflow
\ No newline at end of file
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