Changeset 3150 in products
- Timestamp:
- Apr 19, 2011 7:43:46 PM (13 years ago)
- Location:
- ploneorg.kudobounty/trunk/ploneorg/kudobounty
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
ploneorg.kudobounty/trunk/ploneorg/kudobounty/browser/views.py
r3131 r3150 34 34 """ 35 35 try: 36 container = self.portal.restrictedTraverse( SUBMISSION_CONTAINER_ID)36 container = self.portal.restrictedTraverse(CONTAINER_ID) 37 37 except: 38 38 logger.warn("Can't find bounty submission container " \ 39 "with '%s' path" % SUBMISSION_CONTAINER_ID)39 "with '%s' path" % CONTAINER_ID) 40 40 else: 41 41 # Create Bounty Program Submission object -
ploneorg.kudobounty/trunk/ploneorg/kudobounty/config.py
r3131 r3150 9 9 } 10 10 11 SUBMISSION_CONTAINER_ID = "bounty-submissions" 11 CONTAINER_ID = "bounty-submissions" 12 CONTAINER_TITLE = "Bounty submissions" 13 12 14 FORM_ID = "bounty-submissions-form" 13 FORM_PATH = "/".join([SUBMISSION_CONTAINER_ID, FORM_ID]) 14 TOPIC_ID = "index.html" 15 TOPIC_PATH = "/".join([SUBMISSION_CONTAINER_ID, TOPIC_ID]) 16 17 15 FORM_PATH = "/".join([CONTAINER_ID, FORM_ID]) 16 TOPIC_ID = "aggregator" 17 TOPIC_PATH = "/".join([CONTAINER_ID, TOPIC_ID]) -
ploneorg.kudobounty/trunk/ploneorg/kudobounty/setuphandlers.py
r3138 r3150 1 1 from ploneorg.kudobounty.config import FORM_ID 2 2 from ploneorg.kudobounty.config import TOPIC_ID 3 from ploneorg.kudobounty.config import SUBMISSION_CONTAINER_ID 3 from ploneorg.kudobounty.config import CONTAINER_ID 4 from ploneorg.kudobounty.config import CONTAINER_TITLE 4 5 5 6 from Products.CMFCore.utils import getToolByName 7 from Products.CMFPlone.utils import _createObjectByType 8 from Products.ATContentTypes.lib import constraintypes 9 6 10 from Products.GenericSetup.context import TarballExportContext, TarballImportContext 7 11 from Products.GenericSetup.interfaces import IFilesystemExporter, IFilesystemImporter … … 14 18 """ 15 19 16 def createTopic(container, logger):20 def createTopic(container, wftool, logger): 17 21 """ 18 Located in: /bounty-mission/index_html 19 22 Located in: /bounty-mission/aggregator 20 23 Item Type = ["Bounty Program Submission",] 21 24 state = ['published',] 22 23 25 sort_on = "creation" 24 26 """ 25 theCollection = getattr(container, TOPIC_ID, None) 26 ptype = getattr(theCollection, 'portal_type', None) 27 if not ptype == "Topic": 28 container.invokeFactory(id=TOPIC_ID, type_name="Topic") 29 theCollection = getattr(container, TOPIC_ID) 30 theCollection.unmarkCreationFlag() 31 theCriteria = theCollection.addCriterion('Type','ATPortalTypeCriterion') 32 theCriteria.setValue(["Bounty Program Submission",]) 33 theCriteria = theCollection.addCriterion('review_state','ATSelectionCriterion') 34 theCriteria.setValue("published") 35 theCriteria = theCollection.addCriterion('created','ATSortCriterion') 36 logger.info("To '%s' added collection, which grab all " \ 37 "'Bounty Program Submission' objects" % \ 38 '/'.join(theCriteria.getPhysicalPath())) 39 else: 40 logger.info("To '%s' collection already present in the portal" \ 41 % '/'.join(theCollection.getPhysicalPath())) 27 topic = getattr(container, TOPIC_ID, None) 28 if topic is None: 29 # Add criteria 30 _createObjectByType('Topic', container, id=TOPIC_ID, 31 title=CONTAINER_TITLE) 32 topic = getattr(container, TOPIC_ID, None) 33 crit = topic.addCriterion('Type','ATPortalTypeCriterion') 34 crit.setValue(["Bounty Program Submission",]) 35 crit = topic.addCriterion('review_state','ATSelectionCriterion') 36 crit.setValue("published") 37 crit = topic.addCriterion('created','ATSortCriterion') 38 topic.setLayout('folder_summary_view') 39 topic.unmarkCreationFlag() 42 40 43 def createPFGForm(context, container, logger): 41 if wftool.getInfoFor(topic, 'review_state') != 'published': 42 wftool.doActionFor(topic, 'publish') 43 44 logger.info("Bounty submissions aggregator successfully added") 45 46 47 def createPFGForm(context, container, wftool, logger): 44 48 """ 45 49 """ 46 50 form = getattr(container, FORM_ID, None) 47 wftool = getToolByName(container, "portal_workflow")48 49 51 if form is not None: 50 # Delete form if it exist51 52 container.manage_delObjects(ids = FORM_ID) 52 53 53 # Create new form object 54 54 container.invokeFactory(id=FORM_ID, type_name="FormFolder", 55 title=" Form of Bounty Program")55 title="Bounty Submission Form") 56 56 form = getattr(container, FORM_ID) 57 logger.info("To '%s' added Form Folder" % \58 '/'.join(form.getPhysicalPath()))59 57 # cleanup form and import data from the archive 60 58 form.manage_delObjects(ids=form.objectIds()) … … 62 60 ctx = TarballImportContext(form, pfg_data) 63 61 IFilesystemImporter(form).import_(ctx, 'structure', True) 64 logger.info("Successfully imported PFG from data from archive into the form")65 62 # Fix importing PFG via GS bug 66 63 # - it adds extra indentation, wchich breaks the script. 67 64 create_bounty_script = form["create-bounty-submission"] 68 65 create_bounty_script.setScriptBody(CREATE_SCRIPT_BODY) 69 # Update form66 # Update and pubhish the form 70 67 form.update(**{"actionAdapter":["create-bounty-submission",],}) 71 68 form.unmarkCreationFlag() 72 69 form.reindexObject() 73 # Publish the form74 70 if wftool.getInfoFor(form, 'review_state') != 'published': 75 71 wftool.doActionFor(form, 'publish') 76 logger.info("'%s' PFG form successfully published" % form.Title()) 77 else: 78 logger.info("'%s' PFG form already in 'published' state" % form.Title()) 72 logger.info("Bounty submission form successfully created") 79 73 80 74 def createStructure(context, logger): … … 82 76 wftool = getToolByName(site, "portal_workflow") 83 77 84 subcontainer = getattr(site, SUBMISSION_CONTAINER_ID, None) 85 if subcontainer is None: 86 site.invokeFactory("Folder", SUBMISSION_CONTAINER_ID) 87 subcontainer = getattr(site, SUBMISSION_CONTAINER_ID) 88 subcontainer.update(title="Bounty Submissions") 89 logger.info("Successfully crated '%s' submissions container" \ 90 "in the portal" % SUBMISSION_CONTAINER_ID) 91 # Publish the submissions container 92 if wftool.getInfoFor(subcontainer, 'review_state') != 'published': 93 wftool.doActionFor(subcontainer, 'publish') 94 logger.info("Bounty submissions container successfully published") 95 else: 96 logger.info("Bounty submissions container already in 'published' state") 97 # exclude folder from navigation 98 subcontainer.setExcludeFromNav(True) 99 logger.info("Excluded Bounty submissions container from navigation") 78 # CONTAINER 79 if CONTAINER_ID not in site.objectIds(): 80 _createObjectByType('Folder', site, id=CONTAINER_ID, 81 title=CONTAINER_TITLE) 82 folder = getattr(site, CONTAINER_ID) 83 folder.setOrdering('unordered') 84 folder.setConstrainTypesMode(constraintypes.ENABLED) 85 #folder.setLocallyAllowedTypes(["Bounty Program Submission"]) 86 #folder.setImmediatelyAddableTypes(["Bounty Program Submission"]) 87 folder.setDefaultPage(TOPIC_ID) 88 folder.unmarkCreationFlag() 100 89 101 else: 102 logger.info("To '%s' container already present in the portal" \ 103 % '/'.join(subcontainer.getPhysicalPath())) 90 if wftool.getInfoFor(folder, 'review_state') != 'published': 91 wftool.doActionFor(folder, 'publish') 104 92 105 createTopic(subcontainer, logger) 106 createPFGForm(context, subcontainer, logger) 93 logger.info("Submissions container added") 94 95 createTopic(folder, wftool, logger) 96 createPFGForm(context, folder, wftool, logger) 107 97 108 98 def importVarious(context): … … 112 102 return 113 103 logger = context.getLogger("ploneorg.kudobounty") 114 115 104 createStructure(context, logger)
Note: See TracChangeset
for help on using the changeset viewer.