"""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.
"""
def __init__(self):
self._roles = {}
self.initUserClass()
def initUserClass(self):
"""Invoked by __init__ to set the default user class to RoleUser."""
self.setUserClass(RoleUser)
def addRole(self, role):
assert isinstance(role, Role)
name = role.name()
assert name not in self._roles
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 = {}