source: products/qSiloGroup/trunk/Extensions/Install.py @ 200

Last change on this file since 200 was 200, checked in by mylan, 18 years ago

1.Migrate qPloneComments to Plone 2.1.2
2.Use SecureMailHost? for notification sending.
2.Add discussion object's creator notification on publishing comment.

File size: 4.2 KB
Line 
1import string
2from cStringIO import StringIO
3
4from Products.Archetypes import listTypes
5from Products.Archetypes.Extensions.utils import installTypes
6
7from Products.CMFCore.utils import getToolByName
8from Products.CMFCore.DirectoryView import addDirectoryViews
9
10from Products.qSiloGroup.config import *
11
12def removeSkin(self, layer):
13    skinstool = getToolByName(self, 'portal_skins')
14    for skinName in skinstool.getSkinSelections():
15        original_path = skinstool.getSkinPath(skinName)
16        original_path = [l.strip() for l in original_path.split(',')]
17        new_path= []
18        for l in original_path:
19            if (l == layer) or (l.startswith(layer+'/')):
20                continue
21            new_path.append(l)
22        skinstool.addSkinSelection(skinName, ','.join(new_path))
23
24def setupSkin(self, out, skinFolder):
25
26    skinstool=getToolByName(self, 'portal_skins')
27
28    addDirectoryViews(skinstool, SKINS_DIR, GLOBALS)
29
30    for skin in skinstool.getSkinSelections():
31        path = skinstool.getSkinPath(skin)
32        path = map( string.strip, string.split( path,',' ) )
33
34        if not skinFolder in path:
35            try:
36                path.insert( path.index( 'custom')+1, skinFolder )
37            except ValueError:
38                path.append(skinFolder)
39            path = string.join( path, ', ' )
40            skinstool.addSkinSelection( skin, path )
41            out.write(%s layer sucessfully installed into skin %s.\n' % (skinFolder, skin))
42        else:
43            out.write(%s layer was already installed into skin %s.\n' % (skinFolder, skin))
44
45def setupActions(self, out):
46    out.write("Inspecting portal_types\n")
47    types_tool = getToolByName(self, 'portal_types')
48    for ptype in types_tool.objectValues():
49        if ptype.getId() == 'Folder':
50            action_obj = ptype.getActionObject('object/edit_silo_navigation')
51            if action_obj is None:
52                out.write( '  Added Silo Navigation tab for %s\n' % ptype.getId() )
53                ptype.addAction('edit_silo_navigation',
54                                'Silo Navigation',
55                                'string:${object_url}/silo_navigation_form',
56                                '',
57                                ('Modify portal content',),
58                                'object',
59                                visible=True)
60            else:
61                action_obj.edit(title=title, action=action,
62                                condition=condition,
63                                permissions=tuple(permissions),
64                                visible=visible)
65def removeActions(self):
66    tool = getToolByName(self, 'portal_types')
67    for ptype in tool.objectValues():
68        if ptype.getId() == 'Folder':
69            action = ptype.getActionObject('object/edit_silo_navigation')
70            if action != None:
71                acts = list(ptype.listActions())
72                ptype.deleteActions([acts.index(a) for a in acts if a.getId()=='edit_silo_navigation'])
73
74def setupResources(self, out):
75    portal_js = getToolByName(self, 'portal_javascripts', None)
76    portal_css = getToolByName(self, 'portal_css', None)
77
78    if portal_js is not None:
79        scripts = portal_js.getResourceIds()
80        for script in JS:
81            if script['id'] not in scripts:
82                portal_js.registerScript(**script)
83                print >> out, 'Registered %s script\n' % script['id']
84            else:
85                print >> out, 'Skipped registering of %s script\n' % script['id']
86
87    if portal_css is not None:
88        csses = portal_css.getResourceIds()
89        for css in CSS:
90            if css['id'] not in csses:
91                portal_css.registerStylesheet(**css)
92                print >> out, 'Registered %s css\n' % script['id']
93            else:
94                print >> out, 'Skipped registering of %s css\n' % script['id']
95
96def install(self):
97    out = StringIO()
98
99    out.write('setupSkin... \n')
100    setupSkin(self, out, PROJECTNAME)
101
102    installTypes(self, out, listTypes(PROJECTNAME), PROJECTNAME)
103    print >> out, 'Type Installed'
104
105    setupActions(self, out)
106
107    setupResources(self, out)
108
109    return out.getvalue()
110
111def uninstall(self):
112    out = StringIO()
113
114    removeActions(self)
115
116    removeSkin(self, PROJECTNAME)
117
118    return out.getvalue()
Note: See TracBrowser for help on using the repository browser.