1
2
3
4
5
6
7
8
9
10
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
41
42
43 addSoftware = DTMLFile('dtml/addSoftware',globals())
44
45
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 { 'id' : 'viewHistory'
81 , 'name' : 'Modifications'
82 , 'action' : 'viewHistory'
83 , 'permissions' : (ZEN_VIEW_MODIFICATIONS,)
84 },
85 )
86 },
87 )
88
89 security = ClassSecurityInfo()
90
94
95
97 if name == 'installDate':
98 return self._installDate.getDate()
99 else:
100 raise AttributeError, name
101
102
110
111
112 security.declareProtected('Change Device', 'setProduct')
113 - def setProduct(self, productName, manufacturer="Unknown",
114 newProductName="", REQUEST=None, **kwargs):
129
130
132 """Set the product class of this software by its productKey.
133 """
134 if prodKey:
135
136 self._prodKey = prodKey
137 self._manufacturer = manufacturer
138
139 if manufacturer is None:
140 manufacturer = 'Unknown'
141
142 manufs = self.getDmdRoot("Manufacturers")
143 prodobj = manufs.createSoftwareProduct(prodKey, manufacturer)
144 self.productClass.addRelation(prodobj)
145 else:
146 self.productClass.removeRelation()
147
148
150 """Return the name of this software (from its softwareClass)
151 """
152 pclass = self.productClass()
153 if pclass: return pclass.name
154 return ""
155
156
158 """Return the version of this software (from its softwareClass)
159 """
160 pclass = self.productClass()
161 if pclass: return pclass.version
162 return ""
163
164
166 """Return the build of this software (from its softwareClass)
167 """
168 pclass = self.productClass()
169 if pclass: return pclass.build
170 return ""
171
172
174 """Return the install date as a DateTime object.
175 """
176 return self._installDate.getDate()
177
178
180 """Return the install date in the form 'YYYY/MM/DD HH:MM:SS'
181 """
182
183 if self._installDate.getStringSecsResolution() != "1968/01/08 00:00:00":
184 return self._installDate.getStringSecsResolution()
185 else:
186 return "Unknown"
187
188
190 """Set the install date should be string in form 'YYYY/MM/DD HH:MM:SS'
191 """
192 self._installDate.setDate(value)
193
194
196 """Return our Device for DeviceResultInt.
197 """
198 return self.os().device()
199
200
201 InitializeClass(Software)
202