Changeset 6144
- Timestamp:
- 19 May 2011, 13:48:09 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/waeup.sirp/trunk/src/waeup/sirp/permissions.py
r6142 r6144 1 1 import grok 2 from zc.sourcefactory.basic import BasicSourceFactory 2 from zope.interface import Interface 3 from waeup.sirp.interfaces import ILocalRolesAssignable 3 4 4 5 class Public(grok.Permission): … … 71 72 return sorted(result.keys()) 72 73 73 class RoleSource(BasicSourceFactory): 74 def getValues(self): 75 return getRoles() 76 def getTitle(self, value): 77 if isinstance(value, basestring): 78 return value.split('.', 2)[1] 74 class LocalRolesAssignable(grok.Adapter): 75 """Default implementation for `ILocalRolesAssignable`. 76 77 This adapter returns a list for dictionaries for objects for which 78 we want to know the roles assignable to them locally. 79 80 The returned dicts contain a ``name`` and a ``title`` entry which 81 give a role (``name``) and a description, for which kind of users 82 the permission is meant to be used (``title``). 83 84 Having this adapter registered we make sure, that for each normal 85 object we get a valid `ILocalRolesAssignable` adapter. 86 87 Objects that want to offer certain local roles, can do so by 88 setting a (preferably class-) attribute to a list of dictionaries. 89 90 You can also define different adapters for different contexts to 91 have different role lookup mechanisms become available. But in 92 normal cases it should be sufficient to use this basic adapter. 93 """ 94 grok.context(Interface) 95 grok.provides(ILocalRolesAssignable) 96 97 _roles = [] 98 99 def __init__(self, context): 100 self.context = context 101 self._roles = getattr(context, 'local_roles', self._roles) 102 return 103 104 def __call__(self): 105 """Get a list of dictionaries containing ``names`` (the roles to 106 assign) and ``titles`` (some description of the type of user 107 to assign each role to). 108 """ 109 return self._roles 110 111 def roles(self): 112 """Return a list of roles assignable to the context object. 113 """ 114 return [x['name'] for x in self._roles]
Note: See TracChangeset for help on using the changeset viewer.