-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathRoleUserManagerMixIn.py
More file actions
53 lines (37 loc) · 1.29 KB
/
Copy pathRoleUserManagerMixIn.py
File metadata and controls
53 lines (37 loc) · 1.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
"""The RoleUserManager mixin."""
from RoleUser import RoleUser
from Role import Role
from MiscUtils import NoDefault
class RoleUserManagerMixIn(object):
"""Mixin class for mapping names to roles.
This mixin adds the functionality of keeping a dictionary mapping
names to role instances. Several accessor methods are provided for this.
"""
## Init ##
def __init__(self):
self._roles = {}
self.initUserClass()
def initUserClass(self):
"""Invoked by __init__ to set the default user class to RoleUser."""
self.setUserClass(RoleUser)
## Roles ##
def addRole(self, role):
if not isinstance(role, Role):
raise TypeError('%s is not a Role object' % (role,))
name = role.name()
if name in self._roles:
raise KeyError('role name %r already exists' % (name,))
self._roles[name] = role
def role(self, name, default=NoDefault):
if default is NoDefault:
return self._roles[name]
else:
return self._roles.get(name, default)
def hasRole(self, name):
return name in self._roles
def delRole(self, name):
del self._roles[name]
def roles(self):
return self._roles
def clearRoles(self):
self._roles = {}