Exemple #1
0
    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.')
	        )