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

# Source Code for Module Products.ZenModel.Trigger

      1  ###########################################################################
      2  #
      3  # This program is part of Zenoss Core, an open source monitoring platform.
      4  # Copyright (C) 2007, 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  import logging
     15  log = logging.getLogger("zen.triggers")
     16
     17  from Globals import InitializeClass
     18  from Globals import DTMLFile
     19  from AccessControl import ClassSecurityInfo
     20  from AdministrativeRoleable import AdministrativeRoleable
     21  from Products.ZenModel.ZenossSecurity import *
     22  from Products.ZenRelations.RelSchema import *
     23  from Products.ZenModel.ZenModelRM import ZenModelRM
     24  from zope.interface import implements
     25  from Products.ZenUtils.guid.interfaces import IGloballyIdentifiable
     26
     27
     28 -class InvalidTriggerActionType(Exception): pass
     29
     30
     31 -def manage_addTriggerManager(context, REQUEST=None):
     32      """Create the trigger manager."""
     33      tm = TriggerManager(TriggerManager.root)
     34      context._setObject(TriggerManager.root, tm)
     35      if REQUEST is not None:
     36          REQUEST['RESPONSE'].redirect(context.absolute_url() + '/manage_main')
     37
     38 -class TriggerManager(ZenModelRM):
     39      """Manage triggers."""
     40
     41      _id = "TriggerManager"
     42      root = 'Triggers'
     43      meta_type = _id
     44
     45      sub_meta_types = ("Trigger",)
     46
     47      factory_type_information = (
     48          {
     49              'id'             : _id,
     50              'meta_type'      : _id,
     51              'description'    : """Management of triggers""",
     52              'icon'           : 'UserSettingsManager.gif',
     53              'product'        : 'ZenModel',
     54              'factory'        : 'manage_addTriggerManager',
     55              'immediate_view' : 'editSettings',
     56              'actions'        : (
     57                  {
     58                      'id'            : 'settings',
     59                      'name'          : 'Settings',
     60                      'action'        : '../editSettings',
     61                      'permissions'   : ( ZEN_MANAGE_DMD, )
     62                  })
     63           },
     64      )
     65
     66  addTrigger = DTMLFile('dtml/addTrigger',globals())
     67
     68
     69 -def manage_addTrigger(context, id, title = None, REQUEST = None):
     70      """Create a trigger"""
     71      ns = Trigger(id, title)
     72      context._setObject(id, ns)
     73      if REQUEST:
     74          REQUEST['RESPONSE'].redirect(context.absolute_url() + '/manage_main')
     75
     76 -class Trigger(ZenModelRM, AdministrativeRoleable):
     77      """
     78      A stub object that is used for managing permissions.
     79      """
     80      implements(IGloballyIdentifiable)
     81      security = ClassSecurityInfo()
     82
     83      _id = "Trigger"
     84      meta_type = _id
     85
     86      _properties = ZenModelRM._properties
     87
     88      _relations = (
     89          ("adminRoles",
     90          ToManyCont(
     91              ToOne,
     92              "Products.ZenModel.AdministrativeRole",
     93              "managedObject"
     94          )),
     95      )
     96
     97      factory_type_information = (
     98          {
     99              'id'             : _id,
    100              'meta_type'      : _id,
    101              'description'    : """Stub object representing a trigger.""",
    102              'icon'           : 'ActionRule.gif',
    103              'product'        : 'ZenEvents',
    104              'factory'        : 'manage_addTrigger',
    105              'immediate_view' : 'editTrigger',
    106              'actions'        :(
    107                  {
    108                      'id'            : 'edit',
    109                      'name'          : 'Edit',
    110                      'action'        : 'editTrigger',
    111                      'permissions'   : (ZEN_CHANGE_ALERTING_RULES,)
    112                  }
    113              )
    114           },
    115      )
    116
    117      # a property storing user permission mappings
    118      users = []
    119
    120 -    def __init__(self, id, title=None, buildRelations=True):
    121          self.globalRead = False
    122          self.globalWrite = False
    123          self.globalManage = False
    124
    125          self.userRead = False
    126          self.userWrite = False
    127          self.userManage = False
    128
    129          super(ZenModelRM, self).__init__(id, title=title, buildRelations=buildRelations)
    130
    131      security.declareProtected(ZEN_CHANGE_ALERTING_RULES, 'manage_editTrigger')
    132 -    def manage_editTrigger(self, REQUEST=None):
    133          """Update trigger properties"""
    134          return self.zmanage_editProperties(REQUEST)
    135
    136  InitializeClass(TriggerManager)
    137  InitializeClass(Trigger)
    138