1
2
3
4
5
6
7
8
9
10
11
12
13 import os
14 import string
15 import warnings
16
17 warnings.filterwarnings('ignore', '.*non-existing path.*',
18 UserWarning,
19 '.*DirectoryView.*')
20
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
28 break
29 return layers
30
31
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
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