Changeset 182
- Timestamp:
- 01/12/06 08:27:18
- Files:
-
- qClickTrackingTool/trunk/Campaign.py (deleted)
- qClickTrackingTool/trunk/ClickTracker.py (modified) (2 diffs)
- qClickTrackingTool/trunk/Extensions/Install.py (modified) (7 diffs)
- qClickTrackingTool/trunk/HISTORY.txt (modified) (1 diff)
- qClickTrackingTool/trunk/README.txt (modified) (1 diff)
- qClickTrackingTool/trunk/__init__.py (modified) (3 diffs)
- qClickTrackingTool/trunk/campaign.py (added)
- qClickTrackingTool/trunk/config.py (modified) (1 diff)
- qClickTrackingTool/trunk/legacy (added)
- qClickTrackingTool/trunk/legacy/Campaign.py (added)
- qClickTrackingTool/trunk/legacy/__init__.py (added)
- qClickTrackingTool/trunk/skins/qClickTrackingTool/getTrackMap.py (modified) (1 diff)
- qClickTrackingTool/trunk/skins/qClickTrackingTool/portal_clicktracker_view.pt (modified) (2 diffs)
- qClickTrackingTool/trunk/version.txt (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
qClickTrackingTool/trunk/ClickTracker.py
r181 r182 5 5 6 6 def modify_fti(fti): 7 fti['allowed_content_types'] = (' Campaign')7 fti['allowed_content_types'] = ('campaign') 8 8 fti['filter_content_types'] = 1 9 9 fti['global_allow']=0 … … 16 16 fti['actions']=tuple(actions) 17 17 18 class ClickTracker(BaseFolder): 19 18 class ClickTracker(BaseFolder): 19 20 20 schema=schema 21 21 archetype_name=PROJECTNAME 22 22 id=TOOLID 23 23 24 24 def __init__(self): 25 25 BaseFolder.__init__(self, self.id) qClickTrackingTool/trunk/Extensions/Install.py
r181 r182 2 2 from Products.Archetypes.Extensions.utils import installTypes, install_subskin 3 3 from Products.CMFCore.WorkflowTool import addWorkflowFactory 4 from Products.CMFFormController.FormAction import FormActionKey 4 5 from Products.CMFCore import CMFCorePermissions 5 6 from Products.CMFCore.utils import getToolByName … … 9 10 from Products.qClickTrackingTool.ClickTracker import ClickTracker 10 11 from Products.qClickTrackingTool.Workflow import createWorkflow 11 from Products.qClickTrackingTool.Campaign import Campaign12 12 from Products.qClickTrackingTool.ClickTracker import ClickTracker 13 13 from Products.qClickTrackingTool.config import * 14 14 15 15 16 def tool_migration(self, out, oldVersion, newVersion): 17 #get tools 18 pc=getToolByName(self, 'portal_clicktracker') 16 def write_object_properties(self, obj, out): 17 properties = {} 18 pc = getToolByName(self, 'portal_clicktracker') 19 if getObjectsType(self, pc, out) == 'Link': 20 properties['id'] = obj.id 21 properties['title'] = obj.title 22 properties['description'] = obj.description 23 properties['remote_url'] = obj.getRemoteUrl() 24 else: 25 properties['id'] = obj.id 26 properties['title'] = obj.Title() 27 properties['description'] = obj.Description() 28 properties['remote_url'] = obj.getRemoteUrl() 19 29 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) 30 return properties 29 31 30 print >> out, "migration complete..." 32 def update_object(self, obj, properties, out): 33 obj.update(title = properties['title'], 34 description = properties['description'], 35 url = properties['remote_url']) 31 36 37 def convert_objects(self, container, new_type, out): 38 pt = getToolByName(self, 'portal_types') 39 if getObjectsType(self, container, out): 40 for o in listFolderItems(container)[:]: 41 prop = write_object_properties(self, o, out) 42 container._delObject(o.id) 43 fti = pt.getTypeInfo('ClickTracker') 44 fti.manage_changeProperties(allowed_content_types = (new_type,)) 45 container.invokeFactory(id = prop['id'], type_name=new_type) 46 campaign=getattr(container, prop['id']) 47 update_object(self, campaign, prop, out) 48 49 def listFolderItems(container): 50 res = [] 51 ids = container.objectIds() 52 for ob_id in ids: 53 res.append(container._getOb(ob_id)) 54 return res 55 56 def getObjectsType(self, container, out): 57 pt = getToolByName(self, 'portal_types') 58 ids = container.objectIds() 59 if ids: 60 obj = container._getOb(ids[0]) 61 type_obj = obj.meta_type 62 else: 63 print >> out, "Portal click tracker is empty..." 64 type_obj = None 65 66 return type_obj 67 68 def setPortalFactoryType(self, out,): 69 pf=getToolByName(self, 'portal_factory') 70 ftypes=list(pf.getFactoryTypes()) 71 if TYPE_NAME not in ftypes: 72 ftypes.append(TYPE_NAME) 73 pf.manage_setPortalFactoryTypes(listOfTypeIds=ftypes) 74 else: 75 print >>out, " %s type already in portal_factory..." %TYPE_NAME 76 77 print >> out, "Set %s type to portal_factory" %TYPE_NAME 32 78 33 79 def install_tool(self, out, tool='ClickTracker'): 34 80 portal=getToolByName(self, 'portal_url').getPortalObject() 35 if TOOLID not in portal.objectIds(): 81 pt = getToolByName(self, 'portal_types') 82 if not TOOLID in portal.objectIds(): 36 83 addPloneTool=portal.manage_addProduct[PROJECTNAME].manage_addTool(tool) 37 84 else: 38 85 qi=getToolByName(self, 'portal_quickinstaller') 39 40 86 p=qi._getOb(PROJECTNAME, None) 41 87 oldVersion=p.getInstalledVersion() 42 88 newVersion= qi.getProductVersion(PROJECTNAME) 43 44 if oldVersion <newVersion:45 tool_migration(self, out, oldVersion, newVersion)89 pc = getToolByName(self, 'portal_clicktracker') 90 if oldVersion<newVersion: 91 convert_objects(self, pc, TYPE_NAME, out) 46 92 47 print >> out, "Installed %s tool..." % tool 48 93 def customizing_FormController(self, out): 94 fc = getToolByName(self, 'portal_form_controller') 95 fc.addFormAction('validate_integrity', 96 'success', 97 'campaign', 98 None, 99 'redirect_to', 100 'string:portal_url/portal_clicktracker/portal_clicktracker_view') 49 101 def install_configlet(self, out): 50 102 control_panel=getToolByName(self,'portal_controlpanel') … … 52 104 'Click Tracking Tool', 53 105 'string:${portal_url}/%s/portal_clicktracker_view' % TOOLID, 54 permission=MANAGE_CLICKTRACKINGTOOL_PERMISSION, 106 permission=MANAGE_CLICKTRACKINGTOOL_PERMISSION, 55 107 imageUrl='link_icon.gif', 56 108 category='Products', … … 68 120 portal_workflow.manage_addWorkflow(id=C_WORKFLOWID, workflow_type=C_WORKFLOWID +' (Campaign Workflow)') 69 121 #set workflow for Campaign 70 portal_workflow.setChainForPortalTypes( (' Campaign'), C_WORKFLOWID)122 portal_workflow.setChainForPortalTypes( ('campaign'), C_WORKFLOWID) 71 123 print >> out, "Installed workflow..." 72 124 73 125 def fix_permissions(self, out): 74 126 portal_workflow=getToolByName(self, 'portal_workflow') 75 127 #remove worklow from tool 76 portal_workflow.setChainForPortalTypes( ('ClickTracker (qClickTrackingTool)'), '') 128 portal_workflow.setChainForPortalTypes( ('ClickTracker (qClickTrackingTool)'), '') 77 129 #set permission for portal_clicktracker 78 130 pc=getToolByName(self, 'portal_clicktracker') … … 86 138 control_panel.unregisterConfiglet(PROJECTNAME) 87 139 140 def remove_FormControllerAction(self, out): 141 fc = getToolByName(self, 'portal_form_controller') 142 if fc.actions.match('validate_integrity', 'success', TYPE_NAME, None): 143 fc.actions.delete(FormActionKey('validate_integrity', 'success', TYPE_NAME, None, fc)) 144 88 145 def install(self): 89 146 90 147 out=StringIO(); 91 148 149 pt = getToolByName(self, 'portal_types') 92 150 installTypes(self, out, listTypes(PROJECTNAME), PROJECTNAME) 151 setPortalFactoryType(self, out) 93 152 install_subskin(self, out, GLOBALS) 94 153 install_workflow(self, out) … … 96 155 install_configlet(self, out) 97 156 fix_permissions(self, out) 157 customizing_FormController(self, out) 98 158 99 159 print >> out, "Successfully installed %s." % PROJECTNAME … … 104 164 105 165 remove_configlet(self, out) 106 166 remove_FormControllerAction(self, out) 167 107 168 print >> out, "Successfully uninstalled %s." % PROJECTNAME 108 169 return out.getvalue() qClickTrackingTool/trunk/HISTORY.txt
r181 r182 1 0.4.0 -2006-01-12 2 ================== 3 4 - added FormConntrollerAction 5 - added new migration script 6 - changed old type by new one, based on Archetypes 7 1 8 0.3.2+ -2005-08-22 2 9 ================== qClickTrackingTool/trunk/README.txt
r181 r182 16 16 17 17 * Archetypes-1.3 18 19 * ATContentTypes-0.2+20 18 21 19 Usage qClickTrackingTool/trunk/__init__.py
r181 r182 5 5 6 6 from ClickTracker import ClickTracker 7 import campaign 7 8 8 9 registerDirectory(SKINS_DIR, GLOBALS) … … 17 18 ).initialize(context) 18 19 19 import Campaign20 20 content_types, constructors, ftis = process_types( 21 listTypes(PROJECTNAME),21 [v for v in listTypes(PROJECTNAME) if v['name'] != 'Campaign'], 22 22 PROJECTNAME) 23 23 … … 29 29 fti = ftis, 30 30 ).initialize(context) 31 32 import sys 33 import Products.qClickTrackingTool.legacy.Campaign 34 #change module alias 35 sys.modules['Products.qClickTrackingTool.Campaign'] = legacy.Campaign qClickTrackingTool/trunk/config.py
r181 r182 8 8 MANAGE_CLICKTRACKINGTOOL_PERMISSION = ManagePortal 9 9 C_WORKFLOWID='campaign_workflow' 10 TYPE_NAME = 'campaign' qClickTrackingTool/trunk/skins/qClickTrackingTool/getTrackMap.py
r181 r182 5 5 track_map={} 6 6 for link in links: 7 track_map[link.getId()]=link.get RemoteUrl()7 track_map[link.getId()]=link.getUrl() 8 8 9 9 return track_map qClickTrackingTool/trunk/skins/qClickTrackingTool/portal_clicktracker_view.pt
r181 r182 36 36 37 37 <dt metal:define-macro="listitem"> 38 39 <a href="#" 40 tal:attributes="href string:${obj/absolute_url}/atct_edit" 41 tal:content="obj/title_or_id" /> 38 <a href="#" 39 tal:attributes="href string:${obj/absolute_url}/base_edit" 40 tal:content="obj/title_or_id" /> 42 41 (<a href="#" 43 42 class="link-external" … … 48 47 </dt> 49 48 50 <dd tal:define="description obj/Description">49 <dd tal:define="description python: obj.getDescription()"> 51 50 <span tal:omit-tag="" tal:condition="not:description"> 52 51 qClickTrackingTool/trunk/version.txt
r181 r182 1 0. 3.2+1 0.4.0
