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 as published by 8 # 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 import types 23 24 from AccessControl import ClassSecurityInfo 25 from Globals import InitializeClass 26 from Globals import DTMLFile 27 28 from Organizer import Organizer 29 from ZenPackable import ZenPackable 30 from ZenossSecurity import ZEN_COMMON 31 from Products.ZenRelations.RelSchema import * 32 from Products.ZenUtils.Utils import unused 33 from Products.ZenWidgets import messaging 3436 """make a device class""" 37 dc = ReportClass(id, title) 38 context._setObject(id, dc) 39 40 if REQUEST is not None: 41 messaging.IMessageSender(self).sendToBrowser( 42 'Report Organizer Created', 43 'Report organizer %s was created.' % id 44 ) 45 REQUEST['RESPONSE'].redirect(context.absolute_url() + '/manage_main')46 47 addReportClass = DTMLFile('dtml/addReportClass',globals()) 4850 dmdRootName = "Reports" 51 portal_type = meta_type = "ReportClass" 52 53 #sub_meta_types = ("ReportClass", "Report", 'DeviceReport', 'GraphReport', 54 # 'MultiGraphReportClass') 55 56 _relations = Organizer._relations + ZenPackable._relations 57 58 # Screen action bindings (and tab definitions) 59 factory_type_information = ( 60 { 61 'immediate_view' : 'viewReportClass', 62 'actions' : 63 ( 64 { 'id' : 'view' 65 , 'name' : 'Status' 66 , 'action' : 'viewReportClass' 67 , 'permissions' : ( "View",) 68 , 'visible' : 1 69 }, 70 ) 71 }, 72 ) 73 74 security = ClassSecurityInfo() 75 76 security.declareProtected(ZEN_COMMON, "children")185 186 187 188 InitializeClass(ReportClass) 18978 ''' Return all objects that are instances of ReportClass 79 ''' 80 unused(spec) 81 kids = [o for o in self.objectValues() if isinstance(o, ReportClass)] 82 if checkPerm: 83 kids = [kid for kid in kids if self.checkRemotePerm("View", kid)] 84 if sort: kids.sort(lambda x,y: cmp(x.primarySortKey(), 85 y.primarySortKey())) 86 return kids87 8890 """Return Ids of children within our organizer.""" 91 unused(spec) 92 return [k.id for k in self.children()]93 94 95 security.declareProtected(ZEN_COMMON, "countChildren")97 """Return a count of all our contained children.""" 98 unused(spec) 99 count = len(self.childIds()) 100 for child in self.children(): 101 count += child.countChildren() 102 return count103 104 109 110112 """make a device class""" 113 rClass = self.getReportClass() 114 dc = rClass(id, title) 115 self._setObject(id, dc) 116 if REQUEST: 117 messaging.IMessageSender(self).sendToBrowser( 118 'Report Organizer Created', 119 'Report organizer %s was created.' % id 120 ) 121 return self.callZenScreen(REQUEST)122 123125 """Return list of report instances. 126 """ 127 reports = [] 128 for r in self.objectValues( 129 spec=('Report','DeviceReport','GraphReport','MultiGraphReport')): 130 if self.checkRemotePerm('View', r): 131 reports.append(r) 132 return reports133 134136 """Return a count of all our contained children.""" 137 count = len(self.reports()) 138 for child in self.children(): 139 count += child.countReports() 140 return count141 142 143 security.declareProtected('Manage DMD', 'manage_addGraphReport')145 """Add an graph report to this object. 146 """ 147 if id: 148 from Products.ZenModel.GraphReport import GraphReport 149 gr = GraphReport(id) 150 self._setObject(id, gr) 151 if REQUEST: 152 messaging.IMessageSender(self).sendToBrowser( 153 'Report Created', 154 'Graph report %s was created.' % id 155 ) 156 return self.callZenScreen(REQUEST)157 158160 """Move a report from here organizer to moveTarget. 161 """ 162 if not moveTarget or not ids: return self() 163 if type(ids) in types.StringTypes: ids = (ids,) 164 target = self.getOrganizer(moveTarget) 165 for rptname in ids: 166 rpt = self._getOb(rptname) 167 rpt._operation = 1 # moving object state 168 self._delObject(rptname) 169 target._setObject(rptname, rpt) 170 if REQUEST: 171 messaging.IMessageSender(self).sendToBrowser( 172 'Reports Moved', 173 'Reports %s were moved to %s.' % (', '.join(ids), moveTarget) 174 ) 175 REQUEST['RESPONSE'].redirect(target.getPrimaryUrlPath())176 177
Trees | Indices | Help |
|
---|
Generated by Epydoc 3.0beta1 on Thu May 7 11:46:49 2009 | http://epydoc.sourceforge.net |