Trees | Indices | Help |
|
---|
|
1 ########################################################################### 2 # 3 # This program is part of Zenoss Core, an open source monitoring platform. 4 # Copyright (C) 2007, Zenoss Inc. 5 # 6 # This program is free software; you can redistribute it and/or modify it 7 # under the terms of the GNU General Public License version 2 or (at your 8 # option) any later version as published by the Free Software Foundation. 9 # 10 # For complete information please visit: http://www.zenoss.com/oss/ 11 # 12 ########################################################################### 13 14 __doc__="""ReportClass 15 16 ReportClass groups different types of reports together 17 18 $Id: ReportClass.py,v 1.3 2004/04/22 15:33:44 edahl Exp $""" 19 20 __version__ = "$Revision: 1.3 $"[11:-2] 21 22 from AccessControl import ClassSecurityInfo 23 from Globals import InitializeClass 24 from Globals import DTMLFile 25 26 from Organizer import Organizer 27 from ZenPackable import ZenPackable 28 from ZenossSecurity import ZEN_COMMON, ZEN_MANAGE_DMD 29 from Products.ZenRelations.RelSchema import * 30 from Products.ZenUtils.Utils import unused 31 from Products.ZenWidgets import messaging 3234 """make a device class""" 35 dc = ReportClass(id, title) 36 context._setObject(id, dc) 37 38 if REQUEST is not None: 39 messaging.IMessageSender(context).sendToBrowser( 40 'Report Organizer Created', 41 'Report organizer %s was created.' % id 42 ) 43 REQUEST['RESPONSE'].redirect(context.absolute_url() + '/manage_main')44 45 addReportClass = DTMLFile('dtml/addReportClass',globals()) 4648 dmdRootName = "Reports" 49 portal_type = meta_type = "ReportClass" 50 51 #sub_meta_types = ("ReportClass", "Report", 'DeviceReport', 'GraphReport', 52 # 'MultiGraphReportClass') 53 54 _relations = Organizer._relations + ZenPackable._relations 55 56 # Screen action bindings (and tab definitions) 57 factory_type_information = ( 58 { 59 'immediate_view' : 'viewReportClass', 60 'actions' : 61 ( 62 { 'id' : 'view' 63 , 'name' : 'Status' 64 , 'action' : 'viewReportClass' 65 , 'permissions' : ( "View",) 66 , 'visible' : 1 67 }, 68 ) 69 }, 70 ) 71 72 security = ClassSecurityInfo() 73 74 security.declareProtected(ZEN_COMMON, "children")184 185 186 187 InitializeClass(ReportClass) 18876 ''' Return all objects that are instances of ReportClass 77 ''' 78 unused(spec) 79 kids = [o for o in self.objectValues() if isinstance(o, ReportClass)] 80 if checkPerm: 81 kids = [kid for kid in kids if self.checkRemotePerm("View", kid)] 82 if sort: kids.sort(lambda x,y: cmp(x.primarySortKey(), 83 y.primarySortKey())) 84 return kids85 8688 """Return Ids of children within our organizer.""" 89 unused(spec) 90 return [k.id for k in self.children()]91 92 93 security.declareProtected(ZEN_COMMON, "countChildren")95 """Return a count of all our contained children.""" 96 unused(spec) 97 count = len(self.childIds()) 98 for child in self.children(): 99 count += child.countChildren() 100 return count101 102 107 108 109 security.declareProtected(ZEN_MANAGE_DMD, 'manage_addReportClass')111 """make a device class""" 112 rClass = self.getReportClass() 113 dc = rClass(id, title) 114 self._setObject(id, dc) 115 if REQUEST: 116 messaging.IMessageSender(self).sendToBrowser( 117 'Report Organizer Created', 118 'Report organizer %s was created.' % id 119 ) 120 return self.callZenScreen(REQUEST)121 122124 """Return list of report instances. 125 """ 126 reports = [] 127 for r in self.objectValues( 128 spec=('Report','DeviceReport','GraphReport','MultiGraphReport')): 129 if self.checkRemotePerm('View', r): 130 reports.append(r) 131 return reports132 133135 """Return a count of all our contained children.""" 136 count = len(self.reports()) 137 for child in self.children(): 138 count += child.countReports() 139 return count140 141 142 security.declareProtected('Manage DMD', 'manage_addGraphReport')144 """Add an graph report to this object. 145 """ 146 if id: 147 from Products.ZenModel.GraphReport import GraphReport 148 gr = GraphReport(id) 149 self._setObject(id, gr) 150 if REQUEST: 151 messaging.IMessageSender(self).sendToBrowser( 152 'Report Created', 153 'Graph report %s was created.' % id 154 ) 155 return self.callZenScreen(REQUEST)156 157159 """Move a report from here organizer to moveTarget. 160 """ 161 if not moveTarget or not ids: return self() 162 if isinstance(ids, basestring): ids = (ids,) 163 target = self.getOrganizer(moveTarget) 164 for rptname in ids: 165 rpt = self._getOb(rptname) 166 rpt._operation = 1 # moving object state 167 self._delObject(rptname) 168 target._setObject(rptname, rpt) 169 if REQUEST: 170 messaging.IMessageSender(self).sendToBrowser( 171 'Reports Moved', 172 'Reports %s were moved to %s.' % (', '.join(ids), moveTarget) 173 ) 174 REQUEST['RESPONSE'].redirect(target.getPrimaryUrlPath())175 176
Trees | Indices | Help |
|
---|
Generated by Epydoc 3.0.1.1812 on Tue Oct 11 12:51:40 2011 | http://epydoc.sourceforge.net |