Changeset 200 in products for qPloneComments/branches/plone-2.1/Extensions
- Timestamp:
- Jan 24, 2006 10:33:35 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
qPloneComments/branches/plone-2.1/Extensions/Install.py
r170 r200 3 3 from Products.CMFCore.DirectoryView import addDirectoryViews 4 4 from Products.CMFCore.CMFCorePermissions import ManagePortal,ReplyToItem 5 from App.Common import package_home6 from os.path import exists as path_exists, join as path_join7 5 8 6 from Products.qPloneComments.config import * 9 7 10 8 import string 11 12 def setupSkin(self, out, layers): 13 """Setup skins""" 14 skinstool=getToolByName(self, 'portal_skins') 15 addDirectoryViews(skinstool, 'skins', GLOBALS) 16 17 for skin in skinstool.getSkinSelections(): 18 modified = False 19 path = skinstool.getSkinPath(skin) 20 path = map( string.strip, string.split( path,',' ) ) 21 for layer in layers: 22 if not layer in path: 23 try: 24 path.insert(path.index('custom')+1, layer ) 25 except ValueError: 26 path.append(layer) 27 modified = True 28 out.write(' Layer %s sucessfully installed into skin %s.\n' % (layer,skin)) 29 else: 30 out.write(' Layer %s was already installed into skin %s.\n' % (layer,skin)) 31 if modified: 32 path = string.join( path, ', ' ) 33 skinstool.addSkinSelection( skin, path ) 34 35 9 36 10 def install(self): 37 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') 38 19 39 Layers = [] 40 mtool = getToolByName(self, 'portal_migration') 41 plone_version = mtool.getFileSystemVersion() 42 if plone_version.startswith('2.1'): 43 plone_version = '2.1' 44 elif plone_version.startswith('2.0'): 45 plone_version = '2.0.5' 46 elif plone_version.startswith('2.5'): 47 plone_version = '2.5' 48 else: 49 raise Exception("Error - Unsupported version. Suported versions: Plone 2.0.5-2.5") 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 50 25 51 product_path = package_home(GLOBALS) 52 versioned_skin = path_join(product_path, 'skins', PROJECTNAME, plone_version) 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) ) 53 37 54 Layers.append(SKIN_NAME) 55 Layers.append('%s/%s' % (SKIN_NAME, plone_version) ) 56 out.write('Call setupSkin... \n') 57 setupSkin(self, out, Layers) 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) ) 58 44 59 45 # add Property sheet to portal_properies … … 63 49 out.write("Adding %s property sheet to portal_properies\n" % 'qPloneComments' ) 64 50 props_sheet = pp['qPloneComments'] 65 updateProperties(props_sheet, out, PROPERTIES) 51 updateProperty(props_sheet, id="enable_moderation", value="True", property_type='boolean', out=out) 52 updateProperty(props_sheet, id="enable_anonymous_commenting", value="True", property_type='boolean', out=out) 53 updateProperty(props_sheet, id="enable_published_notification", value="True", property_type='boolean', out=out) 54 updateProperty(props_sheet, id="enable_approve_notification", value="True", property_type='boolean', out=out) 55 updateProperty(props_sheet, id="email_discussion_manager", value="", property_type='string', out=out) 56 updateProperty(props_sheet, id="email_subject_prefix", value="", property_type='string', out=out) 66 57 # Tern on Anonymous commenting 67 58 self.manage_permission(ReplyToItem, ['Anonymous','Manager','Member'], 1) … … 77 68 78 69 # Add DiscussionManager role to Portal 79 if plone_version == '2.5': 80 uf = getToolByName(self, 'acl_users') 81 rmanager = uf.portal_role_manager 82 existing = rmanager.listRoleIds() 83 if not 'DiscussionManager' in existing: 84 rmanager.addRole('DiscussionManager') 85 out.write("Added DiscussionManager role top portal.\n") 86 else: 87 roles = list(self.__ac_roles__) 88 if not 'DiscussionManager' in roles: 89 roles.append('DiscussionManager') 90 roles = tuple(roles) 91 self.__ac_roles__ = roles 92 out.write("Added DiscussionManager role top portal.\n") 70 roles = list(self.__ac_roles__) 71 if not 'DiscussionManager' in roles: 72 roles.append( 'DiscussionManager' ) 73 roles = tuple(roles) 74 self.__ac_roles__ = roles 75 out.write("Added DiscussionManager role top portal.\n") 93 76 94 self.manage_permission('Moderate Discussion', ['DiscussionManager', 'Manager'])95 77 # Add 'DiscussionManagers' group 96 gtool = getToolByName(self, 'portal_groups') 97 existing = gtool.listGroupIds() 98 if not 'DiscussionManager' in existing: 99 gtool.addGroup('DiscussionManager', roles=['DiscussionManager']) 78 portal_groups = getToolByName(self, 'portal_groups') 79 if not 'DiscussionManager' in portal_groups.listGroupIds(): 80 portal_groups.addGroup('DiscussionManager', roles=['DiscussionManager']) 100 81 out.write("Added DiscussionManager group to portal_groups with DiscussionManager role.\n") 101 82 … … 104 85 wf_tool.setChainForPortalTypes( ('Discussion Item',), []) 105 86 out.write("Removed workflow chain for Discussion Item type.\n") 106 87 107 88 out.write('Installation successfully completed.\n') 108 89 return out.getvalue() 109 90 110 91 111 def updateProperties(pp_ps, out, *args): 112 for prop in args: 113 for prop_id, prop_value, prop_type in prop: 114 if not pp_ps.hasProperty(prop_id): 115 pp_ps.manage_addProperty(prop_id, prop_value, prop_type) 116 out.write("Adding %s property to %s property sheet\n" % (prop_id, 'qPloneComments') ) 92 def updateProperty(pp_ps, id, value, property_type, out): 93 if not pp_ps.hasProperty(id): 94 pp_ps.manage_addProperty(id, value, property_type) 95 out.write("Adding %s property to %s property sheet\n" % (id, 'qPloneComments') ) 96 117 97 118 98 def uninstall(self) : … … 120 100 # Remove skin 121 101 for skinName in skinstool.getSkinSelections(): 122 old_path = skinstool.getSkinPath(skinName) 123 old_path = [i.strip() for i in old_path.split(',')] 124 path = [] 125 for p in old_path: 126 if not p.startswith(SKIN_NAME): 127 path.append(p) 128 path = ','.join(path) 129 skinstool.addSkinSelection(skinName, path) 130 102 path = skinstool.getSkinPath(skinName) 103 path = [i.strip() for i in path.split(',')] 104 if SKIN_NAME in path: 105 path.remove(SKIN_NAME) 106 path = ','.join(path) 107 skinstool.addSkinSelection(skinName, path) 131 108 # Remove configlet 132 109 controlpanel_tool = getToolByName(self, 'portal_controlpanel') … … 134 111 # Remove Product's property sheet from portal_properties 135 112 pp = getToolByName(self, 'portal_properties') 113 if 'qPloneComments' in pp.objectIds(): 114 pp.manage_delObjects(ids=['qPloneComments',])
Note: See TracChangeset
for help on using the changeset viewer.