def update(self): pps = self.context.restrictedTraverse('@@plone_portal_state') self.portal = pps.portal() self.orders_folder = self.portal.orders self.orders = [] if self.request.has_key('list_orders.form.submitted'): # we have to have *some* filter criteria or the search will take # forever. oc = getToolByName(self.context, 'order_catalog') query = {'portal_type': 'emas.app.order', 'path': '/'.join(self.orders_folder.getPhysicalPath())} # make it a dict, because I want an easy way to get rid of some keys filter_criteria = DictType(self.request.get('filter_criteria', {})) now = DT() yesterday = now - 1 tomorrow = now + 1 start_date = self.request['order_date_start'] end_date = self.request['order_date_end'] if start_date and end_date: start_date = DT(self.request['order_date_start']) end_date = DT(self.request['order_date_end']) date_query = {'query': [start_date, end_date], 'range': 'minmax'} query['order_date'] = date_query for key, value in filter_criteria.items(): query[key] = value self.orders = oc(query) if self.orders: b_size = int(self.request.get('b_size', 50)) b_start = int(self.request.get('b_start', 0)) self.orders = Batch(self.orders, b_size, b_start) else: self.context.plone_utils.addPortalMessage( _('No orders match your search criteria.') )