Package Products :: Package ZenModel :: Module Software
[hide private]
[frames] | no frames]

Source Code for Module Products.ZenModel.Software

  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__="""Software 
 15   
 16  Software represents a software vendor's product. 
 17   
 18  $Id: Software.py,v 1.5 2003/03/08 18:34:24 edahl Exp $""" 
 19   
 20  __version__ = "$Revision: 1.5 $"[11:-2] 
 21   
 22  from Globals import DTMLFile 
 23  from Globals import InitializeClass 
 24  from AccessControl import ClassSecurityInfo 
 25   
 26  from AccessControl import Permissions as permissions 
 27  from Products.ZenModel.ZenossSecurity import * 
 28   
 29  from Products.ZenRelations.RelSchema import * 
 30  from Products.ZenWidgets import messaging 
 31   
 32  from MEProduct import MEProduct 
 33  from ZenDate import ZenDate 
 34   
35 -def manage_addSoftware(context, id, title = None, REQUEST = None):
36 """make a Software""" 37 d = Software(id, title) 38 context._setObject(id, d) 39 if REQUEST is not None: 40 REQUEST['RESPONSE'].redirect(context.absolute_url()+'/manage_main')
41 42 43 addSoftware = DTMLFile('dtml/addSoftware',globals()) 44 45
46 -class Software(MEProduct):
47 """Software object""" 48 portal_type = meta_type = 'Software' 49 50 procRegex = "" 51 monitorProc = False 52 53 _properties = ( 54 {'id':'procRegex', 'type':'string', 'mode':'w'}, 55 {'id':'monitorProc', 'type':'boolean', 'mode':'w'}, 56 {'id':'installDate', 'type':'date', 'mode':''}, 57 ) 58 59 _relations = MEProduct._relations + ( 60 ("os", ToOne(ToManyCont, "Products.ZenModel.OperatingSystem", "software")), 61 ) 62 63 factory_type_information = ( 64 { 65 'id' : 'Software', 66 'meta_type' : 'Software', 67 'description' : """Class to manage product information""", 68 'icon' : 'Software_icon.gif', 69 'product' : 'ZenModel', 70 'factory' : 'manage_addSoftware', 71 'immediate_view' : 'viewProductOverview', 72 'actions' : 73 ( 74 { 'id' : 'overview' 75 , 'name' : 'Overview' 76 , 'action' : 'viewSoftwareOverview' 77 , 'permissions' : ( 78 permissions.view, ) 79 }, 80 ) 81 }, 82 ) 83 84 security = ClassSecurityInfo() 85
86 - def __init__(self, id, title=""):
87 MEProduct.__init__(self, id, title) 88 self._installDate = ZenDate("1968/1/8")
89 90
91 - def __getattr__(self, name):
92 if name == 'installDate': 93 return self._installDate.getDate() 94 else: 95 raise AttributeError, name
96 97
98 - def _setPropValue(self, id, value):
99 """override from PropertyManager to handle checks and ip creation""" 100 self._wrapperCheck(value) 101 if id == 'installDate': 102 self.setInstallDate(value) 103 else: 104 MEProduct._setPropValue(self, id, value)
105 106 107 security.declareProtected('Change Device', 'setProduct')
108 - def setProduct(self, productName, manufacturer="Unknown", 109 newProductName="", REQUEST=None, **kwargs):
110 """Set the product class of this software. 111 """ 112 if not manufacturer: manufacturer = "Unknown" 113 if newProductName: productName = newProductName 114 prodobj = self.getDmdRoot("Manufacturers").createSoftwareProduct( 115 productName, manufacturer, **kwargs) 116 self.productClass.addRelation(prodobj) 117 if REQUEST: 118 messaging.IMessageSender(self).sendToBrowser( 119 'Product Set', 120 ("Set Manufacturer %s and Product %s." 121 % (manufacturer, productName)) 122 ) 123 return self.callZenScreen(REQUEST)
124 125
126 - def setProductKey(self, prodKey, manufacturer=None):
127 """Set the product class of this software by its productKey. 128 """ 129 if prodKey: 130 # Store these so we can return the proper value from getProductKey 131 self._prodKey = prodKey 132 self._manufacturer = manufacturer 133 134 if manufacturer is None: 135 manufacturer = 'Unknown' 136 137 manufs = self.getDmdRoot("Manufacturers") 138 prodobj = manufs.createSoftwareProduct(prodKey, manufacturer) 139 self.productClass.addRelation(prodobj) 140 else: 141 self.productClass.removeRelation()
142 143
144 - def name(self):
145 """Return the name of this software (from its softwareClass) 146 """ 147 pclass = self.productClass() 148 if pclass: return pclass.name 149 return ""
150 151
152 - def version(self):
153 """Return the version of this software (from its softwareClass) 154 """ 155 pclass = self.productClass() 156 if pclass: return pclass.version 157 return ""
158 159
160 - def build(self):
161 """Return the build of this software (from its softwareClass) 162 """ 163 pclass = self.productClass() 164 if pclass: return pclass.build 165 return ""
166 167
168 - def getInstallDateObj(self):
169 """Return the install date as a DateTime object. 170 """ 171 return self._installDate.getDate()
172 173
174 - def getInstallDate(self):
175 """Return the install date in the form 'YYYY/MM/DD HH:MM:SS' 176 """ 177 #1968/01/08 00:00:00.000 178 if self._installDate.getStringSecsResolution() != "1968/01/08 00:00:00": 179 return self._installDate.getStringSecsResolution() 180 else: 181 return "Unknown"
182 183
184 - def setInstallDate(self, value):
185 """Set the install date should be string in form 'YYYY/MM/DD HH:MM:SS' 186 """ 187 self._installDate.setDate(value)
188 189
190 - def device(self):
191 """Return our Device for DeviceResultInt. 192 """ 193 return self.os().device()
194 195 196 InitializeClass(Software) 197