Changeset 181
- Timestamp:
- 01/12/06 08:16:30
- Files:
-
- qClickTrackingTool/branches/qClickTrackingTool-0.3.2_me/Campaign.py (deleted)
- qClickTrackingTool/branches/qClickTrackingTool-0.3.2_me/ClickTracker.py (modified) (1 diff)
- qClickTrackingTool/branches/qClickTrackingTool-0.3.2_me/Extensions/Install.py (modified) (6 diffs)
- qClickTrackingTool/branches/qClickTrackingTool-0.3.2_me/__init__.py (modified) (2 diffs)
- qClickTrackingTool/branches/qClickTrackingTool-0.3.2_me/config.py (modified) (1 diff)
- qClickTrackingTool/branches/qClickTrackingTool-0.3.2_me/legacy (added)
- qClickTrackingTool/branches/qClickTrackingTool-0.3.2_me/legacy/Campaign.py (added)
- qClickTrackingTool/branches/qClickTrackingTool-0.3.2_me/legacy/__init__.py (added)
- qClickTrackingTool/branches/qClickTrackingTool-0.3.2_me/skins/qClickTrackingTool/portal_clicktracker_view.pt (modified) (1 diff)
- qClickTrackingTool/branches/qClickTrackingTool-0.3.2_me/version.txt (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
qClickTrackingTool/branches/qClickTrackingTool-0.3.2_me/ClickTracker.py
r180 r181 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/branches/qClickTrackingTool-0.3.2_me/Extensions/Install.py
r180 r181 9 9 from Products.qClickTrackingTool.ClickTracker import ClickTracker 10 10 from Products.qClickTrackingTool.Workflow import createWorkflow 11 from Products.qClickTrackingTool.Campaign import Campaign12 11 from Products.qClickTrackingTool.ClickTracker import ClickTracker 13 12 from Products.qClickTrackingTool.config import * 14 13 15 14 16 def tool_migration(self, out, oldVersion, newVersion): 17 #get tools 18 pc=getToolByName(self, 'portal_clicktracker') 15 def isSwitchedToATCT(self): 16 pt = getToolByName(self, 'portal_types') 17 doc_fti = pt.getTypeInfo('Document') 18 if doc_fti.Metatype() == 'ATDocument': 19 return 1 20 else: 21 return 0 19 22 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) 23 def write_object_properties(self, obj): 24 properties = {} 25 if not isSwitchedToATCT(self): 26 properties['id'] = obj.id 27 properties['title'] = obj.title 28 properties['description'] = obj.description 29 properties['remote_url'] = obj.getRemoteUrl() 30 else: 31 properties['id'] = obj.id 32 properties['title'] = obj.Title() 33 properties['description'] = obj.Description() 34 properties['remote_url'] = obj.getRemoteUrl() 29 35 30 print >> out, "migration complete..."36 return properties 31 37 38 def update_object(self, obj, properties): 39 if isSwitchedToATCT(self): 40 obj.update(title = properties['title'], 41 description = properties['description'], 42 remoteUrl = properties['remote_url']) 43 else: 44 setattr(obj, 'title', properties['title']) 45 setattr(obj, 'description', properties['description']) 46 setattr(obj, 'remote_url', properties['remote_url']) 47 48 def convert_objects(self, container, new_type, out): 49 pt = getToolByName(self, 'portal_types') 50 if getObjectsType(self, container, out): 51 for o in listFolderItems(container)[:]: 52 prop = write_object_properties(self, o) 53 container._delObject(o.id) 54 fti = pt.getTypeInfo('ClickTracker') 55 fti.manage_changeProperties(allowed_content_types = (new_type,)) 56 container.invokeFactory(id = prop['id'], type_name=new_type) 57 campaign=getattr(container, prop['id']) 58 update_object(self, campaign, prop) 59 else: 60 create_repType(self, out) 61 62 def listFolderItems(container): 63 res = [] 64 ids = container.objectIds() 65 for ob_id in ids: 66 res.append(container._getOb(ob_id)) 67 return res 68 69 def getObjectsType(self, container, out): 70 pt = getToolByName(self, 'portal_types') 71 ids = container.objectIds() 72 if ids: 73 obj = container._getOb(ids[0]) 74 type_obj = obj.meta_type 75 else: 76 print >> out, "Portal click tracker is empty..." 77 type_obj = None 78 79 return type_obj 32 80 33 81 def install_tool(self, out, tool='ClickTracker'): 34 82 portal=getToolByName(self, 'portal_url').getPortalObject() 35 if TOOLID not in portal.objectIds(): 83 pt = getToolByName(self, 'portal_types') 84 create_repType(self, out) 85 if not TOOLID in portal.objectIds(): 36 86 addPloneTool=portal.manage_addProduct[PROJECTNAME].manage_addTool(tool) 37 87 else: … … 41 91 oldVersion=p.getInstalledVersion() 42 92 newVersion= qi.getProductVersion(PROJECTNAME) 43 44 if oldVersion < newVersion: 45 tool_migration(self, out, oldVersion, newVersion) 93 is_migrated = isSwitchedToATCT(self) 94 pc = getToolByName(self, 'portal_clicktracker') 95 if oldVersion<newVersion: 96 convert_objects(self, pc, REP_TYPE, out) 97 98 if is_migrated: 99 if getObjectsType(self, pc, out) != 'ATLink': 100 convert_objects(self, pc, REP_TYPE, out) 101 102 else: 103 print >> out, "Repurpouse type already migrated to ATCT..." 104 else: 105 if getObjectsType(self, pc, out) == 'ATLink': 106 convert_objects(self, pc, 'Link', out) 107 108 else: 109 print >> out, "Repurpouse type already migrated to CMF..." 46 110 47 111 print >> out, "Installed %s tool..." % tool 48 112 113 def repurpose_content_type(self, old_type, new_type): 114 pt = getToolByName(self, 'portal_types') 115 copy = pt.manage_copyObjects(old_type) 116 pt.manage_pasteObjects(cb_copy_data=copy) 117 copy_name = 'copy_of_%s' %old_type 118 copy_obj = pt._getOb(copy_name) 119 copy_obj.manage_renameObject(copy_name, new_type) 120 setattr(copy_obj, 'title', new_type) 121 122 def create_repType(self, out): 123 pt = getToolByName(self, 'portal_types') 124 if REP_TYPE in pt.objectIds(): 125 print >> out, "%s already installed ..." %REP_TYPE 126 pt._delObject(REP_TYPE) 127 repurpose_content_type(self, 'Link', 'Campaign') 128 print >> out, "Repurpose content successfully" 129 49 130 def install_configlet(self, out): 50 131 control_panel=getToolByName(self,'portal_controlpanel') … … 52 133 'Click Tracking Tool', 53 134 'string:${portal_url}/%s/portal_clicktracker_view' % TOOLID, 54 permission=MANAGE_CLICKTRACKINGTOOL_PERMISSION, 135 permission=MANAGE_CLICKTRACKINGTOOL_PERMISSION, 55 136 imageUrl='link_icon.gif', 56 137 category='Products', … … 68 149 portal_workflow.manage_addWorkflow(id=C_WORKFLOWID, workflow_type=C_WORKFLOWID +' (Campaign Workflow)') 69 150 #set workflow for Campaign 70 portal_workflow.setChainForPortalTypes( ('Campaign'), C_WORKFLOWID) 151 portal_workflow.setChainForPortalTypes( ('Campaign'), C_WORKFLOWID) 71 152 print >> out, "Installed workflow..." 72 153 73 154 def fix_permissions(self, out): 74 155 portal_workflow=getToolByName(self, 'portal_workflow') 75 156 #remove worklow from tool 76 portal_workflow.setChainForPortalTypes( ('ClickTracker (qClickTrackingTool)'), '') 157 portal_workflow.setChainForPortalTypes( ('ClickTracker (qClickTrackingTool)'), '') 77 158 #set permission for portal_clicktracker 78 159 pc=getToolByName(self, 'portal_clicktracker') … … 87 168 88 169 def install(self): 89 170 90 171 out=StringIO(); 91 172 173 pt = getToolByName(self, 'portal_types') 92 174 installTypes(self, out, listTypes(PROJECTNAME), PROJECTNAME) 93 175 install_subskin(self, out, GLOBALS) … … 104 186 105 187 remove_configlet(self, out) 106 188 107 189 print >> out, "Successfully uninstalled %s." % PROJECTNAME 108 190 return out.getvalue() qClickTrackingTool/branches/qClickTrackingTool-0.3.2_me/__init__.py
r180 r181 17 17 ).initialize(context) 18 18 19 import Campaign20 19 content_types, constructors, ftis = process_types( 21 listTypes(PROJECTNAME),20 [v for v in listTypes(PROJECTNAME) if v['name'] != 'Campaign'], 22 21 PROJECTNAME) 23 22 … … 29 28 fti = ftis, 30 29 ).initialize(context) 30 31 import sys 32 import Products.qClickTrackingTool.legacy.Campaign 33 #change module alias 34 sys.modules['Products.qClickTrackingTool.Campaign'] = legacy.Campaign qClickTrackingTool/branches/qClickTrackingTool-0.3.2_me/config.py
r180 r181 8 8 MANAGE_CLICKTRACKINGTOOL_PERMISSION = ManagePortal 9 9 C_WORKFLOWID='campaign_workflow' 10 REP_TYPE = 'Campaign' qClickTrackingTool/branches/qClickTrackingTool-0.3.2_me/skins/qClickTrackingTool/portal_clicktracker_view.pt
r180 r181 36 36 37 37 <dt metal:define-macro="listitem"> 38 39 <a href="#" 40 tal:attributes="href string:${obj/absolute_url}/atct_edit" 38 <!--python:test(obj.atct_edit, '', '')--> 39 <a href="#" 40 tal:define="atedit string:${obj/absolute_url}/atct_edit; 41 linkedit string:${obj/absolute_url}/link_edit_form" 42 tal:attributes="href atedit | linkedit" 41 43 tal:content="obj/title_or_id" /> 42 44 (<a href="#" qClickTrackingTool/branches/qClickTrackingTool-0.3.2_me/version.txt
r180 r181 1 0.3. 2+1 0.3.3
