def close_expired_lots (self): ''' Closes all expired lots ''' portal_catalog = getToolByName(self, 'portal_catalog') # Please refer to portal_catalog tool # Zope management interface for default Plone seach indexes query = {} today = DateTime().Date() # returns a string yyyy/mm/dd today = DateTime(today) # converts the string back to a date object now = DateTime() query = {'portal_type':'Lot', 'expires': {'query': now, 'range': 'max'}, 'review_state': 'public', } # Return brain objects for search results expired_brains = portal_catalog.searchResults(**query) #context.plone_log("Got results:" + str(brains)) if len(expired_brains) < 1: return "Nothing here to see" workflowTool = getToolByName(self, "portal_workflow") objlist = [] print len(expired_brains) for brain in expired_brains: import pdb; pdb.set_trace() obj = brain.getObject() if not obj: continue obj_id = obj.getId() print obj status = workflowTool.getStatusOf("Lot_Workflow", obj) wfs = workflowTool.getWorkflowsFor(obj) workflowTool.doActionFor(ob=obj, action="close lot",wf_id="Lot_Workflow" ) newstatus = workflowTool.getStatusOf("Lot_Workflow", obj) objlist.append(( obj, obj_id, status["review_state"], newstatus["review_state"] )) return objlist