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 types
23 import re
24
25 from Globals import DTMLFile, InitializeClass
26 from AccessControl import ClassSecurityInfo
27 from AccessControl import Permissions as permissions
28 from Products.ZenModel.ZenossSecurity import *
29 from Products.ZenWidgets import messaging
30
31 from Products.ZenRelations.RelSchema import *
32
33 from ZenModelRM import ZenModelRM
34 from ZenPackable import ZenPackable
35
36
46
47 addManufacturer = DTMLFile('dtml/addManufacturer',globals())
48
50 """Manufacturer object"""
51 portal_type = meta_type = 'Manufacturer'
52
53 url = ''
54 supportNumber = ''
55 address1 = ''
56 address2 = ''
57 city = ''
58 state = ''
59 zip = ''
60 country = ''
61 regexes = ()
62
63 _properties = (
64 {'id':'url', 'type':'string', 'mode':'w'},
65 {'id':'supportNumber', 'type':'string', 'mode':'w'},
66 {'id':'address1', 'type':'string', 'mode':'w'},
67 {'id':'address2', 'type':'string', 'mode':'w'},
68 {'id':'city', 'type':'string', 'mode':'w'},
69 {'id':'state', 'type':'string', 'mode':'w'},
70 {'id':'zip', 'type':'string', 'mode':'w'},
71 {'id':'country', 'type':'string', 'mode':'w'},
72 {'id':'regexes', 'type':'lines', 'mode':'w'},
73 )
74
75 _relations = ZenPackable._relations + (
76 ("products", ToManyCont(ToOne,"Products.ZenModel.ProductClass","manufacturer")),
77 )
78
79
80 factory_type_information = (
81 {
82 'id' : 'Manufacturer',
83 'meta_type' : 'Manufacturer',
84 'description' : """Arbitrary device grouping class""",
85 'icon' : 'Manufacturer_icon.gif',
86 'product' : 'ZenModel',
87 'factory' : 'manage_addManufacturer',
88 'immediate_view' : 'viewManufacturerOverview',
89 'actions' :
90 (
91 { 'id' : 'overview'
92 , 'name' : 'Overview'
93 , 'action' : 'viewManufacturerOverview'
94 , 'permissions' : (permissions.view, )
95 },
96 { 'id' : 'edit'
97 , 'name' : 'Edit'
98 , 'action' : 'editManufacturer'
99 , 'permissions' : ("Manage DMD", )
100 },
101 { 'id' : 'config'
102 , 'name' : 'zProperties'
103 , 'action' : 'zPropertyEdit'
104 , 'permissions' : ("Manage DMD",)
105 },
106 { 'id' : 'viewHistory'
107 , 'name' : 'Modifications'
108 , 'action' : 'viewHistory'
109 , 'permissions' : (ZEN_VIEW_MODIFICATIONS,)
110 },
111 )
112 },
113 )
114
115 security = ClassSecurityInfo()
116
117
119 """Return the number of products for this manufacturer.
120 """
121 return self.products.countObjects()
122
123
131
132
141
142
143 - def moveProducts(self, moveTarget=None, ids=None, REQUEST=None):
155
156
158 """Add a product to this manufacturer based on its factory type.
159 """
160 prod = self.products._getOb(prodName, None)
161 if not prod:
162 prod = factory(prodName)
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='', url='', supportNumber='',
205 address1='', address2='', city='', state='', zip='',
206 country='', regexes=[], REQUEST=None):
227
228
229 InitializeClass(Manufacturer)
230