1
2
3
4
5
6
7
8
9
10
11
12
13
14 __doc__="""Manufacturer
15
16 Manufacturer is a base class that represents a vendor of Products.
17
18 $Id: Manufacturer.py,v 1.11 2004/03/26 23:58:44 edahl Exp $"""
19
20 __version__ = "$Revision: 1.11 $"[11:-2]
21
22 import re
23
24 from Globals import DTMLFile, InitializeClass
25 from AccessControl import ClassSecurityInfo
26 from AccessControl import Permissions as permissions
27 from Products.ZenModel.ZenossSecurity import *
28 from Products.ZenWidgets import messaging
29
30 from Products.ZenRelations.RelSchema import *
31
32 from ZenModelRM import ZenModelRM
33 from ZenPackable import ZenPackable
34
35
45
46 addManufacturer = DTMLFile('dtml/addManufacturer',globals())
47
49 """Manufacturer object"""
50 portal_type = meta_type = 'Manufacturer'
51
52 url = ''
53 supportNumber = ''
54 address1 = ''
55 address2 = ''
56 city = ''
57 state = ''
58 zip = ''
59 country = ''
60 regexes = ()
61
62 _properties = (
63 {'id':'url', 'type':'string', 'mode':'w'},
64 {'id':'supportNumber', 'type':'string', 'mode':'w'},
65 {'id':'address1', 'type':'string', 'mode':'w'},
66 {'id':'address2', 'type':'string', 'mode':'w'},
67 {'id':'city', 'type':'string', 'mode':'w'},
68 {'id':'state', 'type':'string', 'mode':'w'},
69 {'id':'zip', 'type':'string', 'mode':'w'},
70 {'id':'country', 'type':'string', 'mode':'w'},
71 {'id':'regexes', 'type':'lines', 'mode':'w'},
72 )
73
74 _relations = ZenPackable._relations + (
75 ("products", ToManyCont(ToOne,"Products.ZenModel.ProductClass","manufacturer")),
76 )
77
78
79 factory_type_information = (
80 {
81 'id' : 'Manufacturer',
82 'meta_type' : 'Manufacturer',
83 'description' : """Arbitrary device grouping class""",
84 'icon' : 'Manufacturer_icon.gif',
85 'product' : 'ZenModel',
86 'factory' : 'manage_addManufacturer',
87 'immediate_view' : 'viewManufacturerOverview',
88 'actions' :
89 (
90 { 'id' : 'overview'
91 , 'name' : 'Overview'
92 , 'action' : 'viewManufacturerOverview'
93 , 'permissions' : (permissions.view, )
94 },
95 { 'id' : 'edit'
96 , 'name' : 'Edit'
97 , 'action' : 'editManufacturer'
98 , 'permissions' : ("Manage DMD", )
99 },
100 { 'id' : 'config'
101 , 'name' : 'Configuration Properties'
102 , 'action' : 'zPropertyEditNew'
103 , 'permissions' : ("Manage DMD",)
104 },
105 { 'id' : 'viewHistory'
106 , 'name' : 'Modifications'
107 , 'action' : 'viewNewHistory'
108 , 'permissions' : (ZEN_VIEW_MODIFICATIONS,)
109 },
110 )
111 },
112 )
113
114 security = ClassSecurityInfo()
115
116
118 """Return the number of products for this manufacturer.
119 """
120 return self.products.countObjects()
121
122
130
131
139
140
141 - def moveProducts(self, moveTarget=None, ids=None, REQUEST=None):
153
154
156 """Add a product to this manufacturer based on its factory type.
157 """
158 prod = self.products._getOb(prodName, None)
159 if not prod:
160 prod = factory(prodName)
161 for k, v in kwargs.iteritems():
162 setattr(prod, k, v)
163 self.products._setObject(prod.id, prod)
164 prod = self.products._getOb(prod.id)
165 return prod
166
167
174
175
177 """return a list of all products this Manufacturer makes"""
178 prods = [""]
179 prods.extend(map(lambda x: x.getId(),
180 Manufacturer.products.objectValuesAll()))
181 prods.sort()
182 return prods
183
184
186 """
187 Returns true if this manufacturer name or any of the regexes defined
188 match the provided string.
189
190 @param name: Manufacturer name
191 @type name: string
192 @return: True if this manufacturer matches the given name
193 @rtype: bool
194 """
195 if self.id == name:
196 return True
197 for regex in self.regexes:
198 if re.search(regex, name):
199 return True
200 return False
201
202
203 security.declareProtected('Manage DMD', 'manage_editManufacturer')
204 - def manage_editManufacturer(self, id='', title='', url='', supportNumber='',
205 address1='', address2='', city='', state='', zip='',
206 country='', regexes=[], REQUEST=None):
228
229
230 InitializeClass(Manufacturer)
231