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

Source Code for Module Products.ZenModel.Manufacturer

  1  ########################################################################### 
  2  # 
  3  # This program is part of Zenoss Core, an open source monitoring platform. 
  4  # Copyright (C) 2007, 2009 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__="""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   
36 -def manage_addManufacturer(context, id=None, REQUEST = None):
37 """make a Manufacturer""" 38 if id: 39 d = Manufacturer(id) 40 context._setObject(id, d) 41 42 if REQUEST is not None: 43 REQUEST['RESPONSE'].redirect(context.absolute_url() 44 +'/manage_main')
45 46 addManufacturer = DTMLFile('dtml/addManufacturer',globals()) 47
48 -class Manufacturer(ZenModelRM, ZenPackable):
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 # Screen action bindings (and tab definitions) 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 ) 106 }, 107 ) 108 109 security = ClassSecurityInfo() 110 111
112 - def count(self):
113 """Return the number of products for this manufacturer. 114 """ 115 return self.products.countObjects()
116 117
118 - def manage_addHardware(self, prodName=None, REQUEST=None):
119 """Add a hardware product from UI code. 120 """ 121 if prodName: 122 from Products.ZenModel.HardwareClass import HardwareClass 123 self._getProduct(prodName, HardwareClass) 124 if REQUEST: return self.callZenScreen(REQUEST)
125 126
127 - def manage_addSoftware(self, prodName=None, isOS=False, REQUEST=None):
128 """Add a software product from UI code. 129 """ 130 if prodName: 131 from Products.ZenModel.SoftwareClass import SoftwareClass 132 prod = self._getProduct(prodName, SoftwareClass, isOS=isOS) 133 if REQUEST: return self.callZenScreen(REQUEST)
134 135
136 - def moveProducts(self, moveTarget=None, ids=None, REQUEST=None):
137 """Move product to different manufacturer. 138 """ 139 if not moveTarget or not ids: return self() 140 target = self.getManufacturer(moveTarget) 141 if isinstance(ids, basestring): ids = (ids,) 142 for id in ids: 143 obj = self.products._getOb(id) 144 obj._operation = 1 # moving object state 145 self.products._delObject(id) 146 target.products._setObject(id, obj) 147 if REQUEST: return self.callZenScreen(REQUEST)
148 149
150 - def _getProduct(self, prodName, factory, **kwargs):
151 """Add a product to this manufacturer based on its factory type. 152 """ 153 prod = self.products._getOb(prodName, None) 154 if not prod: 155 prod = factory(prodName) 156 for k, v in kwargs.iteritems(): 157 setattr(prod, k, v) 158 self.products._setObject(prod.id, prod) 159 prod = self.products._getOb(prod.id) 160 return prod
161 162
163 - def manage_deleteProducts(self, ids=None, REQUEST=None):
164 """Delete a list of products from UI. 165 """ 166 if not ids: return self.callZenScreen(REQUEST) 167 for id in ids: self.products._delObject(id) 168 if REQUEST: return self.callZenScreen(REQUEST)
169 170
171 - def getProductNames(self):
172 """return a list of all products this Manufacturer makes""" 173 prods = [""] 174 prods.extend(map(lambda x: x.getId(), 175 Manufacturer.products.objectValuesAll())) 176 prods.sort() 177 return prods
178 179
180 - def matches(self, name):
181 """ 182 Returns true if this manufacturer name or any of the regexes defined 183 match the provided string. 184 185 @param name: Manufacturer name 186 @type name: string 187 @return: True if this manufacturer matches the given name 188 @rtype: bool 189 """ 190 if self.id == name: 191 return True 192 for regex in self.regexes: 193 if re.search(regex, name): 194 return True 195 return False
196 197 198 security.declareProtected('Manage DMD', 'manage_editManufacturer')
199 - def manage_editManufacturer(self, id='', title='', url='', supportNumber='', 200 address1='', address2='', city='', state='', zip='', 201 country='', regexes=[], REQUEST=None):
202 """ 203 Edit a Manufacturer from a web page. 204 """ 205 redirect = self.rename(id) 206 self.title = title 207 self.url = url 208 self.supportNumber = supportNumber 209 self.address1 = address1 210 self.address2 = address2 211 self.city = city 212 self.state = state 213 self.zip = zip 214 self.country = country 215 self.regexes = regexes 216 if REQUEST: 217 from Products.ZenUtils.Time import SaveMessage 218 messaging.IMessageSender(self).sendToBrowser( 219 'Saved', 220 SaveMessage() 221 ) 222 return self.callZenScreen(REQUEST, redirect)
223 224 225 InitializeClass(Manufacturer) 226