1
2
3
4
5
6
7
8
9
10
11 """
12 AdministrativeRoleable.py
13
14 Created by Marc Irlandez on 2007-04-05.
15 """
16
17 from AccessControl import ClassSecurityInfo
18 from Products.ZenMessaging.audit import audit
19 from Products.ZenModel.AdministrativeRole import AdministrativeRole
20 from Globals import InitializeClass
21 from zope.event import notify
22 from Products.ZenUtils.Utils import getDisplayType
23 from Products.Zuul.catalog.events import IndexingEvent
24 from ZenossSecurity import *
25 from Products.ZenWidgets import messaging
26
28
29 security = ClassSecurityInfo()
30
31 security.declareProtected(ZEN_ADMINISTRATORS_VIEW,
32 'getAdministrativeRoles')
34 "Get the Admin Roles on this device"
35 return self.adminRoles.objectValuesAll()
36
37 security.declareProtected(ZEN_ADMINISTRATORS_EDIT,
38 'manage_addAdministrativeRole')
54
55 security.declareProtected(ZEN_ADMINISTRATORS_EDIT,
56 'manage_editAdministrativeRoles')
58 """
59 Edit list of admin roles.
60 """
61 if isinstance(ids, basestring):
62 ids = [ids]
63 role = [role]
64
65 editedRoles = []
66 for i, id in enumerate(ids):
67 roleEdit = (id, role[i])
68 editedRoles.append(roleEdit)
69 ar = self.adminRoles._getOb(roleEdit[0])
70 ar.update(roleEdit[1])
71
72 self.setAdminLocalRoles()
73 self.index_object()
74 notify(IndexingEvent(self))
75 if REQUEST:
76 for roleEdit in editedRoles:
77 audit(['UI', getDisplayType(self), 'EditAdministrativeRole'], self,
78 id=roleEdit[0], role=roleEdit[1])
79 messaging.IMessageSender(self).sendToBrowser(
80 'Admin Roles Updated',
81 ('The following administrative roles have been updated: '
82 '%s' % ", ".join(ids))
83 )
84 return self.callZenScreen(REQUEST)
85
86
87 security.declareProtected(ZEN_ADMINISTRATORS_EDIT,
88 'manage_deleteAdministrativeRole')
90 "Delete a admin role to this device"
91 if isinstance(delids, basestring):
92 delids = [delids]
93 for userid in delids:
94 ar = self.adminRoles._getOb(userid, None)
95 if ar is not None: ar.delete()
96 self.manage_delLocalRoles((userid,))
97 self.setAdminLocalRoles()
98 self.index_object()
99 notify(IndexingEvent(self))
100 if REQUEST:
101 if delids:
102 for userid in delids:
103 audit(['UI', getDisplayType(self), 'DeleteAdministrativeRole'], self, userid=userid)
104 messaging.IMessageSender(self).sendToBrowser(
105 'Admin Roles Deleted',
106 ('The following administrative roles have been deleted: '
107 '%s' % ", ".join(delids))
108 )
109 return self.callZenScreen(REQUEST)
110
112 """List the user and their roles on an object"""
113 return [ (ar.id, (ar.role,)) for ar in self.adminRoles() ]
114
115
117 """Hook for setting permissions"""
118 pass
119
120
121 InitializeClass(AdministrativeRoleable)
122