44 lines
1.6 KiB
Python
44 lines
1.6 KiB
Python
# ------------------------------------------------------------------------------
|
|
from appy.gen import WorkflowOwner
|
|
from appy.gen.wrappers import AbstractWrapper
|
|
|
|
# ------------------------------------------------------------------------------
|
|
class GroupWrapper(AbstractWrapper):
|
|
workflow = WorkflowOwner
|
|
|
|
def showLogin(self):
|
|
'''When must we show the login field?'''
|
|
if self.o.isTemporary(): return 'edit'
|
|
return ('view', 'result')
|
|
|
|
def showGroups(self):
|
|
'''Only the admin can view or edit roles.'''
|
|
return self.user.has_role('Manager')
|
|
|
|
def validateLogin(self, login):
|
|
'''Is this p_login valid?'''
|
|
return True
|
|
|
|
def getGrantableRoles(self):
|
|
'''Returns the list of roles that the admin can grant to a user.'''
|
|
res = []
|
|
for role in self.o.getProductConfig().grantableRoles:
|
|
res.append( (role, self.translate('role_%s' % role)) )
|
|
return res
|
|
|
|
def getSelectableUsers(self):
|
|
'''Returns all the users, excepted anon and system.'''
|
|
return [u for u in self.tool.users if u.login not in ('anon', 'system')]
|
|
|
|
def validate(self, new, errors):
|
|
'''Inter-field validation.'''
|
|
return self._callCustom('validate', new, errors)
|
|
|
|
def onEdit(self, created):
|
|
# If the group was created by anon|system, anon|system can't stay Owner.
|
|
for login in ('anon', 'system'):
|
|
if login in self.o.__ac_local_roles__:
|
|
del self.o.__ac_local_roles__[login]
|
|
return self._callCustom('onEdit', created)
|
|
# ------------------------------------------------------------------------------
|