diff --git a/master/bt5/slapos_erp5/PortalTypeRolesTemplateItem/Hosting%20Subscription.xml b/master/bt5/slapos_erp5/PortalTypeRolesTemplateItem/Hosting%20Subscription.xml index 74ee029cd2875500350a3f15ec2fe452cdc60d10..e3d9414961e6ebde615bc5088087327266e90604 100644 --- a/master/bt5/slapos_erp5/PortalTypeRolesTemplateItem/Hosting%20Subscription.xml +++ b/master/bt5/slapos_erp5/PortalTypeRolesTemplateItem/Hosting%20Subscription.xml @@ -13,9 +13,9 @@ </role> <role id='Assignee'> <property id='title'>Organisation Member</property> - <property id='base_category_script'>Item_getSecurityCategoryFromMovementDestinationSection</property> - <multi_property id='categories'>local_role_group/project</multi_property> - <multi_property id='base_category'>destination_section</multi_property> + <property id='base_category_script'>Item_getSecurityCategoryFromMovementDestination</property> + <multi_property id='categories'>local_role_group/organisation</multi_property> + <multi_property id='base_category'>destination</multi_property> </role> <role id='Assignee'> <property id='title'>Project Member</property> diff --git a/master/bt5/slapos_erp5/SkinTemplateItem/portal_skins/slapos_core/Item_getSecurityCategoryFromMovementDestination.py b/master/bt5/slapos_erp5/SkinTemplateItem/portal_skins/slapos_core/Item_getSecurityCategoryFromMovementDestination.py new file mode 100644 index 0000000000000000000000000000000000000000..b78af01f9746773c9ca38a6133b73b321cab28bf --- /dev/null +++ b/master/bt5/slapos_erp5/SkinTemplateItem/portal_skins/slapos_core/Item_getSecurityCategoryFromMovementDestination.py @@ -0,0 +1,39 @@ +""" +This script returns a list of dictionaries which represent +the security groups which a person is member of. It extracts +the categories from the current content. It is useful in the +following cases: + +- calculate a security group based on a given + category of the current object (ex. group). This + is used for example in ERP5 DMS to calculate + document security. + +- assign local roles to a document based on + the person which the object related to through + a given base category (ex. destination). This + is used for example in ERP5 Project to calculate + Task / Task Report security. + +The parameters are + + base_category_list -- list of category values we need to retrieve + user_name -- string obtained from getSecurityManager().getUser().getId() + object -- object which we want to assign roles to + portal_type -- portal type of object + +NOTE: for now, this script requires proxy manager +""" + +category_list = [] + +if obj is None: + return [] + +# Object on this case can be Hosting Subscription, Computer, or Computer Network +organisation = obj.Item_getCurrentSiteValue() +if organisation is not None and \ + organisation.getPortalType() == "Organisation": + category_list.append({'destination': [organisation.getRelativeUrl()]}) + +return category_list diff --git a/master/bt5/slapos_erp5/SkinTemplateItem/portal_skins/slapos_core/Item_getSecurityCategoryFromMovementDestination.xml b/master/bt5/slapos_erp5/SkinTemplateItem/portal_skins/slapos_core/Item_getSecurityCategoryFromMovementDestination.xml new file mode 100644 index 0000000000000000000000000000000000000000..18e0d5fe973e2d9bb2a5cbfd8fff7d8c3c1ed9fe --- /dev/null +++ b/master/bt5/slapos_erp5/SkinTemplateItem/portal_skins/slapos_core/Item_getSecurityCategoryFromMovementDestination.xml @@ -0,0 +1,70 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="PythonScript" module="Products.PythonScripts.PythonScript"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>Script_magic</string> </key> + <value> <int>3</int> </value> + </item> + <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> + <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, obj, portal_type</string> </value> + </item> + <item> + <key> <string>_proxy_roles</string> </key> + <value> + <tuple> + <string>Manager</string> + </tuple> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>Item_getSecurityCategoryFromMovementDestination</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData>