from RoleUser import RoleUser
from Role import Role
from MiscUtils import NoDefault
class RoleUserManagerMixIn:
"""
RoleUserManagerMixIn 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):
assert isinstance(role, Role)
name = role.name()
assert not self._roles.has_key(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 self._roles.has_key(name)
def delRole(self, name):
del self._roles[name]
def roles(self):
return self._roles
def clearRoles(self):
self._roles = {}
|