Package ZenUtils :: Module Skins
[hide private]
[frames] | no frames]

Source Code for Module ZenUtils.Skins

 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 as published by 
 8  # the Free Software Foundation. 
 9  # 
10  # For complete information please visit: http://www.zenoss.com/oss/ 
11  # 
12  ########################################################################### 
13  import os 
14  import string  
15  import warnings 
16   
17  warnings.filterwarnings('ignore', '.*non-existing path.*', 
18                          UserWarning, 
19                          '.*DirectoryView.*') 
20   
21 -def skinDirs(base):
22 layers = [] 23 for p, ds, fs in os.walk(os.path.join(base, 'skins')): 24 for d in ds: 25 if not d.startswith('.'): 26 layers.append(d) 27 # stop at one level 28 break 29 return layers
30 31
32 -def registerSkin(self, base, positionAfter='custom'):
33 """setup the skins in a product""" 34 layers = skinDirs(base) 35 try: 36 from Products.CMFCore.utils import getToolByName 37 from Products.CMFCore.DirectoryView import addDirectoryViews 38 skinstool = getToolByName(self, 'portal_skins') 39 for layer in layers: 40 if layer not in skinstool.objectIds(): 41 path = os.path.join(base, 'skins') 42 if not os.path.exists(path): os.mkdir(path, mode=0755) 43 addDirectoryViews(skinstool, 'skins', base) 44 skins = skinstool.getSkinSelections() 45 for skin in skins: 46 path = skinstool.getSkinPath(skin) 47 path = map(string.strip, string.split(path,',')) 48 for layer in layers: 49 if layer not in path: 50 try: 51 path.insert(path.index(positionAfter)+1, layer) 52 except ValueError: 53 path.append(layer) 54 path = ','.join(path) 55 skinstool.addSkinSelection(skin, path) 56 except ImportError, e: 57 if "Products.CMFCore.utils" in e.args: pass 58 else: raise 59 except AttributeError, e: 60 if "portal_skin" in e.args: pass 61 else: raise
62
63 -def unregisterSkin(self, base, positionAfter='custom'):
64 """setup the skins in a product""" 65 from Products.ZenUtils.Utils import unused 66 unused(positionAfter) 67 layers = skinDirs(base) 68 if layers is None: return 69 try: 70 from Products.CMFCore.utils import getToolByName 71 skinstool = getToolByName(self, 'portal_skins') 72 for layer in layers: 73 if layer in skinstool.objectIds(): 74 try: 75 skinstool._delOb(layer) 76 except AttributeError: 77 pass 78 obs = skinstool._objects 79 goodlayers = filter(lambda x:getattr(skinstool, x['id'], False), obs) 80 skinstool._objects = tuple(goodlayers) 81 except ImportError, e: 82 if "Products.CMFCore.utils" in e.args: pass 83 else: raise 84 except AttributeError, e: 85 if "portal_skin" in e.args: pass 86 else: raise
87