Commit ea51f1cc authored by Ivan Tyagov's avatar Ivan Tyagov

Implement menu handling.


git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@25664 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent ae97fa4a
...@@ -30,17 +30,18 @@ from AccessControl import ClassSecurityInfo ...@@ -30,17 +30,18 @@ from AccessControl import ClassSecurityInfo
from Globals import InitializeClass, DTMLFile from Globals import InitializeClass, DTMLFile
from Products.ERP5Type.Tool.BaseTool import BaseTool from Products.ERP5Type.Tool.BaseTool import BaseTool
from Products.ERP5Type import Permissions from Products.ERP5Type import Permissions
from AccessControl.SecurityManagement import setSecurityManager
from Products.ERP5Wizard import _dtmldir from Products.ERP5Wizard import _dtmldir
from Products.ERP5Wizard.LogMixIn import LogMixIn from Products.ERP5Wizard.LogMixIn import LogMixIn
from AccessControl.SecurityManagement import newSecurityManager, \ from Products.ERP5Wizard.Tool.WizardTool import _setSuperSecurityManager
getSecurityManager, setSecurityManager
import zLOG
from Products.ERP5Type.Cache import CachingMethod from Products.ERP5Type.Cache import CachingMethod
class IntrospectionTool(BaseTool, LogMixIn): class IntrospectionTool(BaseTool, LogMixIn):
""" """
This tool provides both local and remote introspection. This tool provides both local and remote introspection.
""" """
id = 'portal_introspections' id = 'portal_introspections'
title = 'Introspection Tool' title = 'Introspection Tool'
meta_type = 'ERP5 Introspection Tool' meta_type = 'ERP5 Introspection Tool'
...@@ -52,4 +53,28 @@ class IntrospectionTool(BaseTool, LogMixIn): ...@@ -52,4 +53,28 @@ class IntrospectionTool(BaseTool, LogMixIn):
security.declareProtected(Permissions.ManagePortal, 'manage_overview') security.declareProtected(Permissions.ManagePortal, 'manage_overview')
manage_overview = DTMLFile('explainIntrospectionTool', _dtmldir ) manage_overview = DTMLFile('explainIntrospectionTool', _dtmldir )
security.declareProtected('getERP5MenuItemList', Permissions.View)
def getERP5MenuItemList(self, kw):
"""
Returns menu items for a given user
"""
portal = self.getPortalObject()
user_name = kw.pop('user_name', None)
is_portal_manager = portal.portal_membership.checkPermission(Permissions.ManagePortal, \
portal)
downgrade_authenticated_user = user_name is not None and is_portal_manager
if downgrade_authenticated_user:
# downgrade to desired user
original_security_manager = _setSuperSecurityManager(self, user_name)
# call the method implementing it
erp5_menu_item_list = self._getTypeBasedMethod('getERP5MenuItemList',
fallback_script_id='ERP5Site_getERP5MenuItemList')()
if downgrade_authenticated_user:
# restore original Security Manager
setSecurityManager(original_security_manager)
return erp5_menu_item_list
InitializeClass(IntrospectionTool) InitializeClass(IntrospectionTool)
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