50 lines
1.7 KiB
Python
50 lines
1.7 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 validate(self, new, errors):
|
|
'''Inter-field validation.'''
|
|
return self._callCustom('validate', new, errors)
|
|
|
|
def addUser(self, user):
|
|
'''Adds a p_user to this group.'''
|
|
# Update the Ref field.
|
|
self.link('users', user)
|
|
|
|
def removeUser(self, user):
|
|
'''Removes a p_user from this group.'''
|
|
self.unlink('users', user)
|
|
|
|
def onEdit(self, created):
|
|
# If the group was created by anon, anon can't stay its Owner.
|
|
if 'anon' in self.o.__ac_local_roles__:
|
|
del self.o.__ac_local_roles__['anon']
|
|
if 'system' in self.o.__ac_local_roles__:
|
|
del self.o.__ac_local_roles__['system']
|
|
return self._callCustom('onEdit', created)
|
|
# ------------------------------------------------------------------------------
|