def invoices_search(self): """ Get a list of invoices based on search arguments. """ page = int(self.request.params.get('page', 1)) form = InvoiceSearchForm(self.request.GET, csrf_context=self.request.session) form.categories.query = Category.all_active(self.request) form.creditors.query = Creditor.all_active(self.request) if self.request.method == 'GET' and form.validate(): q = form.query.data categories = form.categories.data creditors = form.creditors.data fromdate = form.fromdate.data todate = form.todate.data invoices = Invoice.searchpage(self.request, page, qry=q, categories=categories, creditors=creditors, fromdate=fromdate, todate=todate, ) total = Invoice.searchpage(self.request, page, qry=q, categories=categories, creditors=creditors, fromdate=fromdate, todate=todate, total_only=True, ) else: invoices = Invoice.searchpage(self.request, page) total = Invoice.searchpage(self.request, page, total_only=True) return {'paginator': invoices, 'form': form, 'title': 'Search', 'searchpage': True, 'total': total}