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

Source Code for Module Products.ZenModel.ZenPacker

 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  import Globals 
12  from AccessControl import ClassSecurityInfo 
13  from Products.ZenWidgets import messaging 
14   
15 -class ZenPacker(object):
16 security = ClassSecurityInfo() 17 18 security.declareProtected('Manage DMD', 'addToZenPack')
19 - def addToZenPack(self, ids=(), organizerPaths=(), pack=None, REQUEST=None):
20 "Add elements from a displayed list of objects to a ZenPack" 21 from Products.ZenModel.ZenPackable import ZenPackable 22 from Products.ZenModel.ZenPack import ZenPack 23 ids = list(ids) + list(organizerPaths) 24 message = "You must provide a valid ZenPack" 25 if pack: 26 pack = self.dmd.ZenPackManager.packs._getOb(pack) 27 message = 'Saved to %s' % pack.id 28 if ids: 29 for id in ids: 30 try: 31 obj = self.findObject(id) 32 except AttributeError, ex: 33 message = str(ex) 34 break 35 obj.buildRelations() 36 pack.packables.addRelation(obj) 37 else: 38 if isinstance(self, ZenPackable): 39 self.buildRelations() 40 pack.packables.addRelation(self) 41 else: 42 message = 'Nothing to save' 43 if REQUEST: 44 if isinstance(pack, ZenPack): 45 messaging.IMessageSender(self).sendToBrowser( 46 'Add To ZenPack', message) 47 return REQUEST['RESPONSE'].redirect('/zport/dmd/ZenPackManager' + 48 '/packs/%s' % pack.id if pack else '')
49
50 - def findObject(self, id):
51 "Ugly hack for inconsistent object structure accross Organizers" 52 result = [] 53 try: 54 result.append(self._getOb(id)) 55 except AttributeError: 56 pass 57 for name, relationship in self._relations: 58 try: 59 result.append(getattr(self, name)._getOb(id)) 60 except AttributeError: 61 pass 62 if len(result) == 0: 63 try: 64 result.append(self.dmd.unrestrictedTraverse(id)) 65 except KeyError: 66 pass 67 if len(result) == 1: 68 return result[0] 69 raise AttributeError('Cannot find a unique %s on %s' % (id, self.id))
70 71
72 - def eligiblePacks(self):
73 """ 74 Return a list of zenpacks that objects can be added to. (The 75 development mode zenpacks.) 76 """ 77 return [zp for zp in self.dmd.ZenPackManager.packs() 78 if zp.isDevelopment()]
79