source: products/qClickTrackingTool/tags/0.3.2/Extensions/Install.py

Last change on this file was 1, checked in by myroslav, 18 years ago

Building directory structure

File size: 4.1 KB
Line 
1from Products.Archetypes.public import listTypes
2from Products.Archetypes.Extensions.utils import installTypes, install_subskin
3from Products.CMFCore.WorkflowTool import addWorkflowFactory
4from Products.CMFCore import CMFCorePermissions
5from Products.CMFCore.utils import getToolByName
6from Products.CMFDefault.Link import Link
7from StringIO import StringIO
8
9from Products.qClickTrackingTool.ClickTracker import ClickTracker
10from Products.qClickTrackingTool.Workflow import createWorkflow
11from Products.qClickTrackingTool.Campaign import Campaign
12from Products.qClickTrackingTool.ClickTracker import ClickTracker
13from Products.qClickTrackingTool.config import *
14
15
16def tool_migration(self, out, oldVersion, newVersion):
17    #get tools
18    pc=getToolByName(self, 'portal_clicktracker')
19
20    for o in pc.listFolderContents()[:]:
21        #create temp link object
22        temp_link=Link(id=o.getId(), title=o.Title(), remote_url=o.getRemoteUrl(), description=o.Description())
23        #remove old link
24        pc._delObject(o.getId())
25        #create new Campaign
26        pc.invokeFactory(id=temp_link.id, type_name='Campaign')
27        campaign=getattr(pc, temp_link.id)
28        campaign.update(title=temp_link.title, description=temp_link.description, remoteUrl=temp_link.remote_url)
29
30    print >> out, "migration complete..."
31
32
33def install_tool(self, out, tool='ClickTracker'):
34    portal=getToolByName(self, 'portal_url').getPortalObject()
35    if TOOLID  not in portal.objectIds():
36        addPloneTool=portal.manage_addProduct[PROJECTNAME].manage_addTool(tool)
37    else:
38        qi=getToolByName(self, 'portal_quickinstaller')
39
40        p=qi._getOb(PROJECTNAME, None)
41        oldVersion=p.getInstalledVersion()
42        newVersion= qi.getProductVersion(PROJECTNAME)
43                               
44        if oldVersion < newVersion:
45            tool_migration(self, out, oldVersion, newVersion)   
46
47    print >> out, "Installed %s tool..." % tool
48   
49def install_configlet(self, out):
50    control_panel=getToolByName(self,'portal_controlpanel')
51    control_panel.registerConfiglet(PROJECTNAME,
52                                    'Click Tracking Tool',
53                                    'string:${portal_url}/%s/portal_clicktracker_view' % TOOLID,
54                                     permission=MANAGE_CLICKTRACKINGTOOL_PERMISSION, 
55                                     imageUrl='link_icon.gif',
56                                     category='Products',
57                                    )
58    print >> out, "Installed configlet.,,"
59
60def install_workflow(self, out):
61    portal_workflow=getToolByName(self, 'portal_workflow')
62
63    #register the workflow in the system
64    addWorkflowFactory(createWorkflow,
65                   id=C_WORKFLOWID,
66                   title='Campaign Workflow')
67
68    portal_workflow.manage_addWorkflow(id=C_WORKFLOWID, workflow_type=C_WORKFLOWID +' (Campaign Workflow)') 
69    #set workflow for Campaign
70    portal_workflow.setChainForPortalTypes( ('Campaign'), C_WORKFLOWID)           
71    print >> out, "Installed workflow..."
72   
73def fix_permissions(self, out):
74    portal_workflow=getToolByName(self, 'portal_workflow')
75    #remove worklow from tool
76    portal_workflow.setChainForPortalTypes( ('ClickTracker (qClickTrackingTool)'), '')   
77    #set permission for portal_clicktracker
78    pc=getToolByName(self, 'portal_clicktracker')
79    pc.manage_permission(CMFCorePermissions.ListFolderContents, ('Manager', 'Owner', 'Anonymous'), 1)
80
81    print >> out, "Click Tracking Tool Permissions fixed..."
82
83def remove_configlet(self, out):
84    # unregister Configlet
85    control_panel=getToolByName(self,'portal_controlpanel')
86    control_panel.unregisterConfiglet(PROJECTNAME) 
87
88def install(self):
89   
90    out=StringIO();
91
92    installTypes(self, out, listTypes(PROJECTNAME), PROJECTNAME)
93    install_subskin(self, out, GLOBALS)
94    install_workflow(self, out)
95    install_tool(self, out)
96    install_configlet(self, out)
97    fix_permissions(self, out)
98
99    print >> out, "Successfully installed %s." % PROJECTNAME
100    return out.getvalue()
101
102def uninstall(self):
103    out = StringIO()
104
105    remove_configlet(self, out)
106     
107    print >> out, "Successfully uninstalled %s." % PROJECTNAME
108    return out.getvalue()
Note: See TracBrowser for help on using the repository browser.