Ignore:
Timestamp:
Jan 24, 2006 10:33:35 PM (18 years ago)
Author:
mylan
Message:

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:
1 edited

Legend:

Unmodified
Added
Removed
  • qPloneComments/branches/plone-2.1/Extensions/Install.py

    r170 r200  
    33from Products.CMFCore.DirectoryView import addDirectoryViews 
    44from Products.CMFCore.CMFCorePermissions import ManagePortal,ReplyToItem 
    5 from App.Common import package_home 
    6 from os.path import exists as path_exists, join as path_join 
    75 
    86from Products.qPloneComments.config import * 
    97 
    108import 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     
    3610def install(self): 
    3711    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') 
    3819 
    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 
    5025 
    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) ) 
    5337 
    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) ) 
    5844 
    5945    # add Property sheet to portal_properies 
     
    6349        out.write("Adding %s property sheet to portal_properies\n" % 'qPloneComments' ) 
    6450    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) 
    6657    # Tern on Anonymous commenting 
    6758    self.manage_permission(ReplyToItem, ['Anonymous','Manager','Member'], 1) 
     
    7768 
    7869    # 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") 
    9376 
    94     self.manage_permission('Moderate Discussion', ['DiscussionManager', 'Manager']) 
    9577    #  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']) 
    10081        out.write("Added DiscussionManager group to portal_groups with DiscussionManager role.\n") 
    10182 
     
    10485    wf_tool.setChainForPortalTypes( ('Discussion Item',), [])  
    10586    out.write("Removed workflow chain for Discussion Item type.\n") 
    106  
     87     
    10788    out.write('Installation successfully completed.\n') 
    10889    return out.getvalue() 
    10990 
    11091 
    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') ) 
     92def 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 
    11797 
    11898def uninstall(self) : 
     
    120100    # Remove skin 
    121101    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) 
    131108    # Remove configlet 
    132109    controlpanel_tool = getToolByName(self, 'portal_controlpanel') 
     
    134111    # Remove Product's property sheet from portal_properties 
    135112    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.