[Zope-Checkins] CVS: Zope3/lib/python/Zope/App/Security/tests - RolePermissionManager.py:1.1.2.1

Jim Fulton jim@zope.com
Thu, 3 Jan 2002 14:14:25 -0500


Update of /cvs-repository/Zope3/lib/python/Zope/App/Security/tests
In directory cvs.zope.org:/tmp/cvs-serv14176

Added Files:
      Tag: Zope-3x-branch
	RolePermissionManager.py 
Log Message:
Added view component for managing role-permission settings

=== Added File Zope3/lib/python/Zope/App/Security/tests/RolePermissionManager.py ===
##############################################################################
#
# Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
# 
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL).  A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE
# 
##############################################################################
"""
Test IRolePermissionManager class.

Revision information: $Id: RolePermissionManager.py,v 1.1.2.1 2002/01/03 19:14:24 jim Exp $
"""

from Zope.App.Security.IRolePermissionManager import IRolePermissionManager

class RolePermissionManager:

    __implements__ = IRolePermissionManager

    def __init__(self, **rp):
        self._rp = rp

    # Implementation methods for interface
    # Zope.App.Security.IRolePermissionManager.

    def getRolesForPermission(self, permission):
        '''See interface IRolePermissionMap'''
        r=[]
        for role, permissions in self._rp.items():
            if permission in permissions: r.append(role)
        return r

    def getPermissionAcquired(self, permission):
        '''See interface IRolePermissionMap'''
        return 1

    def getPermissionsForRole(self, role):
        '''See interface IRolePermissionMap'''
        return self._rp[role]

    def setPermissionAcquired(self, permission, flag):
        '''See interface IRolePermissionManager'''
        raise TypeError

    def retractPermissionFromRole(self, permission, role):
        '''See interface IRolePermissionManager'''
        permissions = self._rp.get(role, ())
        if permission in permissions:
            permissions.remove(permission)
            if not permissions:
                del self._rp[role]

    def grantPermissionToRole(self, permission, role):
        '''See interface IRolePermissionManager'''
        if role in self._rp:
            if permission not in self._rp[role]:
                self._rp[role].append(permission)
        else:
            self._rp[role] = [permission]