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 manufs = self.getDmdRoot("Manufacturers")
136 prodobj = manufs.createSoftwareProduct(prodKey, manufacturer)
137 self.productClass.addRelation(prodobj)
138 else:
139 self.productClass.removeRelation()
140
141
143 """Return the name of this software (from its softwareClass)
144 """
145 pclass = self.productClass()
146 if pclass: return pclass.name
147 return ""
148
149
151 """Return the version of this software (from its softwareClass)
152 """
153 pclass = self.productClass()
154 if pclass: return pclass.version
155 return ""
156
157
159 """Return the build of this software (from its softwareClass)
160 """
161 pclass = self.productClass()
162 if pclass: return pclass.build
163 return ""
164
165
167 """Return the install date as a DateTime object.
168 """
169 return self._installDate.getDate()
170
171
173 """Return the install date in the form 'YYYY/MM/DD HH:MM:SS'
174 """
175 return self._installDate.getStringSecsResolution()
176
177
179 """Set the install date should be string in form 'YYYY/MM/DD HH:MM:SS'
180 """
181 self._installDate.setDate(value)
182
183
186
187
189 """Return our Device for DeviceResultInt.
190 """
191 return self.os().device()
192
193
194 InitializeClass(Software)
195