source: products/qPloneComments/tags/1.5/Extensions/Install.py @ 3659

Last change on this file since 3659 was 1, checked in by myroslav, 19 years ago

Building directory structure

File size: 3.8 KB
Line 
1from StringIO import StringIO
2from Products.CMFCore.utils import getToolByName
3from Products.CMFCore.DirectoryView import addDirectoryViews
4from Products.CMFCore.CMFCorePermissions import ManagePortal
5
6from Products.qPloneComments.config import *
7
8import string
9   
10def install(self):
11    out=StringIO()
12    skinsTool = getToolByName(self, 'portal_skins')
13    # Add directory views
14    try: 
15        addDirectoryViews(skinsTool, SKINS_DIR, GLOBALS)
16        out.write( "Added directory views to portal_skins.\n" )
17    except:
18        out.write( '*** Unable to add directory views to portal_skins.\n')
19
20    # Checking for presense SKIN_NAME Layer in available skins
21    avail_skin_names = skinsTool.getSkinSelections()
22    if SKIN_NAME in avail_skin_names :
23        out.write("Skipping creation %s skin, %s already set up\n" % (SKIN_NAME) )
24        return
25
26    for skin in avail_skin_names:
27        # Get skin's layers
28        skin_layers = skinsTool.getSkinPath(skin)
29        skin_layers_list = map( string.strip, string.split(skin_layers,',') )
30        if not (SKIN_NAME in skin_layers_list) :
31            # Insert new layer after 'custom'
32            try: 
33                skin_layers_list.insert(skin_layers_list.index('custom')+1 \
34                                        , string.lower(SKIN_NAME) )
35            except ValueError:
36                skin_layers_list.append(string.lower(SKIN_NAME) )
37
38            # Add new skin Layer
39            new_skin_layers = string.join(skin_layers_list, ', ')
40            skinsTool.addSkinSelection(skin, new_skin_layers)
41            out.write("%s skin-layer was added to %s skin\n" % (SKIN_NAME, skin) )
42        else:
43            out.write("Skipping adding %s skin-layer, to %s skin\n" % (SKIN_NAME, skin) )
44
45    # add Property sheet to portal_properies
46    pp = getToolByName(self, 'portal_properties')
47    if not PROPERTY_SHEET in pp.objectIds():
48        pp.addPropertySheet(id=PROPERTY_SHEET, title= '%s Properties' % PROPERTY_SHEET)
49        out.write("Adding %s property sheet to portal_properies\n" % PROPERTY_SHEET )
50    props_sheet = pp[PROPERTY_SHEET]
51    updateProperty(props_sheet, id="Email_of_discussion_manager", value="", property_type='string', out=out)
52    updateProperty(props_sheet, id="Turning_on/off_notification", value="True", property_type='boolean', out=out)
53    updateProperty(props_sheet, id="Turning_on/off_Moderation", value="True", property_type='boolean', out=out)
54    updateProperty(props_sheet, id="Turning_on/off_Anonymous_Commenting", value="True", property_type='boolean', out=out)
55    out.write("Updating properties of %s property sheet\n" % PROPERTY_SHEET )
56
57    # Add Configlet. Delete old version before adding, if exist one.
58    controlpanel_tool = getToolByName(self, 'portal_controlpanel')
59    controlpanel_tool.unregisterConfiglet(CONFIGLET_ID)
60    controlpanel_tool.registerConfiglet(id=CONFIGLET_ID, name=CONFIGLET_NAME, category='Products',
61                                        action='string:${portal_url}/qPloneComments_config',
62                                        appId=PROJECTNAME, permission=ManagePortal, imageUrl='group.gif')
63
64
65   
66    out.write('Installation successfully completed.\n')
67    return out.getvalue()
68
69
70def updateProperty(pp_ps, id, value, property_type, out):
71    if not pp_ps.hasProperty(id):
72        pp_ps.manage_addProperty(id, value, property_type)
73        out.write("Adding %s property to %s property sheet\n" % (id, PROPERTY_SHEET) )
74
75
76def uninstall(self) :
77    skinstool = getToolByName(self, 'portal_skins')
78
79    for skinName in skinstool.getSkinSelections():
80        path = skinstool.getSkinPath(skinName)
81        path = [i.strip() for i in  path.split(',')]
82        if SKIN_NAME in path:
83            path.remove(SKIN_NAME)
84            path = ','.join(path)
85            skinstool.addSkinSelection(skinName, path)
Note: See TracBrowser for help on using the repository browser.