def list(self): company_name = request.params.get("company_name", "") number = request.params.get("number", "") is_booked = request.params.get("is_booked", "") date_from = request.params.get("invoiceDateFrom", h.today(30)) date_to = request.params.get("invoiceDateTo", h.today()) query = Invoice.query.join(Invoice.company).options(eagerload("company"), eagerload("elements")) if company_name != "": query = query.filter(Company.shortName.like(u"%" + company_name + u"%")) if is_booked: query = query.filter(Invoice.isBooked == is_booked) query = query.filter(Invoice.created_at.between(date_from, date_to)) query = query.filter(Invoice.number.like(u"%" + number + u"%")) records = query.order_by(Invoice.created_at.desc(), Invoice.series_number.desc()) invoice = Invoice() c.actions = invoice.get_action_choices(request) if request.method == "POST": response = invoice.response_action(request, Invoice.query) if response is not None: return response c.months = h.months_list() c.year = str(datetime.datetime.now().year) c.paginator = paginate.Page( records, page=int(request.GET.pop("page", 1)), items_per_page=int(request.GET.pop("page_size", 30)), **dict(request.GET) ) if "partial" in request.params: return render("/invoices/list-partial.xhtml") else: return render("/invoices/list.xhtml")