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

# Source Code for Module Products.ZenModel.ClassifierEntry

      1  ##############################################################################
      2  #
      3  # Copyright (C) Zenoss, Inc. 2007, all rights reserved.
      4  #
      5  # This content is made available according to terms specified in
      6  # License.zenoss under the directory where your Zenoss product is installed.
      7  #
      8  ##############################################################################
      9
     10
     11  __doc__="""ClassifierEntry
     12
     13  Contains a list of keywords that are used to match an entry to a specific
     14  device.  Once a match is found the Entry provides paths for DeviceClass,
     15  Product, and Company.  This could potentially also provide Location, System
     16  Group etc.
     17
     18  $Id: ClassifierEntry.py,v 1.6 2004/03/26 23:58:44 edahl Exp $"""
     19
     20  __version__ = "$Revision: 1.6 $"[11:-2]
     21
     22  from AccessControl import ClassSecurityInfo
     23  from Globals import DTMLFile
     24
     25  from Products.ZCatalog.CatalogAwareness import CatalogAware
     26  from OFS.SimpleItem import SimpleItem
     27  from OFS.PropertyManager import PropertyManager
     28
     29
     30 -def manage_addClassifierEntry(context, id=None, title=None,
     31                      default_catalog = "", keywords = "", deviceClassPath = "",
     32                      product = "", systemPath = "",
     33                      locationPath = "", manufacturer = "",
     34                      productDescr = "", REQUEST = None):
     35      """make a device"""
     36      if not id:
     37          id = context.ZenClassifier.getNextClassifierEntryId()
     38      ce = ClassifierEntry(id, title=title,
     39                           default_catalog=default_catalog,
     40                          keywords=keywords, deviceClassPath=deviceClassPath,
     41                          product=product, systemPath=systemPath,
     42                          locationPath=locationPath, manufacturer=manufacturer,
     43                          productDescr = productDescr)
     44      context._setObject(id, ce)
     45      ce = context._getOb(id)
     46
     47      if REQUEST is not None:
     48          REQUEST['RESPONSE'].redirect(context.absolute_url()
     49                                       +'/manage_main')
     50
     51
     52  addClassifierEntry = DTMLFile('dtml/addClassifierEntry',globals())
     53
     54 -class ClassifierEntry(PropertyManager, CatalogAware, SimpleItem):
     55      """ClassifierEntry"""
     56
     57      meta_type = 'ClassifierEntry'
     58
     59      manage_options = (PropertyManager.manage_options +
     60                      SimpleItem.manage_options
     61                      )
     62
     63      _properties = (
     64                      {'id':'default_catalog', 'type':'selection',
     65                          'select_variable':'getClassifierNames'},
     66                      {'id':'keywords', 'type':'text', 'mode':'rw'},
     67                      {'id':'deviceClassPath', 'type':'string', 'mode':'rw'},
     68                      {'id':'manufacturer', 'type':'string', 'mode':'rw'},
     69                      {'id':'product', 'type':'string', 'mode':'rw'},
     70                      {'id':'productDescr', 'type':'text', 'mode':'rw'},
     71                  )
     72
     73
     74      security = ClassSecurityInfo()
     75
     76 -    def __init__(self, id, title=None,
     77                      default_catalog = "", keywords = "", deviceClassPath = "",
     78                      product = "", systemPath = "",
     79                      locationPath = "", manufacturer = "",
     80                      snmpAgentPath = "", productDescr = ""):
     81          from Products.ZenUtils.Utils import unused
     82          unused(locationPath)
     83          self.id = id
     84          self.title = title
     85          self.default_catalog = default_catalog
     86          self.keywords = keywords
     87          self.deviceClassPath = deviceClassPath
     88          self.product = product
     89          self.productDescr = productDescr
     90          self.systemPath = systemPath
     91          self.snmpAgentPath = snmpAgentPath
     92          self.manufacturer = manufacturer
     93
     94
     95
     96 -    def manage_editProperties(self, REQUEST):
     97          """ Added indexing call -EAD
     98          Edit object properties via the web.
     99          The purpose of this method is to change all property values,
    100          even those not listed in REQUEST; otherwise checkboxes that
    101          get turned off will be ignored.  Use manage_changeProperties()
    102          instead for most situations.
    103          """
    104          for prop in self._propertyMap():
    105              name=prop['id']
    106              if 'w' in prop.get('mode', 'wd'):
    107                  value=REQUEST.get(name, '')
    108                  if name == 'default_catalog' and self.default_catalog != value:
    109                      self.unindex_object()
    110                  self._updateProperty(name, value)
    111          self.index_object()
    112          if REQUEST:
    113              message="Saved changes."
    114              return self.manage_propertiesForm(self,REQUEST,
    115                                                manage_tabs_message=message)
    116
    117
    118 -    def _url(self):
    119          return "/".join(self.getPhysicalPath())
    120
    121
    122 -    def index_object(self):
    123          """Override so that we can find the catalog no matter where we are
    124          A common method to allow Findables to index themselves."""
    125          if hasattr(self.ZenClassifier, self.default_catalog):
    126              cat = getattr(self.ZenClassifier, self.default_catalog)
    127              cat.catalog_object(self, self._url())
    128
    129
    130 -    def unindex_object(self):
    131          """Override so that we can find the catalog no matter where we are
    132          A common method to allow Findables to unindex themselves."""
    133          if hasattr(self.ZenClassifier, self.default_catalog):
    134              cat = getattr(self.ZenClassifier, self.default_catalog)
    135              cat.uncatalog_object(self._url())
    136
    137
    138 -    def getClassifierNames(self):
    139          """allow select in property manager to find ZenClassifier"""
    140          return self.ZenClassifier.getClassifierNames()
    141
    142
    143 -    def getKeywords(self):
    144          """base class just returns attribute mobile subclass returns
    145          a concatination of all keyword values up its aquisition path"""
    146          return self.keywords
    147
    148
    149 -    def getDeviceClassPath(self):
    150          """base class just returns attribute mobile subclass returns
    151          builds its path based on its current aquisition path"""
    152          return self.deviceClassPath
    153
    154
    155 -    def getProduct(self):
    156          """return the product path for this classifier entry"""
    157          return self.product
    158
    159
    160 -    def getManufacturer(self):
    161          """return the manufacturer for this classifier entry"""
    162          return self.manufacturer
    163
    164 -    def getProductDescr(self):
    165          """return the productDescr for this classifier entry"""
    166          return self.productDescr
    167