Example #1
0
    def response(self, request, queryset):
        if request.GET.get("export") == "pdf":
            if not queryset.exists():
                messages.warning(request, _("No invoices found."))
                return HttpResponseRedirect("?error=1")

            count = queryset.count()
            if count > settings.BATCH_MAX_ITEMS:
                messages.error(
                    request,
                    _("%s invoices in selection, that's too many.") % count)
                return HttpResponseRedirect("?error=1")

            pdf, response = pdf_response(
                "invoices",
                as_attachment=request.GET.get("disposition") == "attachment",
            )
            for invoice in queryset:
                pdf.init_letter()
                pdf.process_invoice(invoice)
                pdf.restart()
            pdf.generate()
            return response

        if request.GET.get("export") == "xlsx":
            xlsx = WorkbenchXLSXDocument()
            xlsx.table_from_queryset(queryset)
            return xlsx.to_response("invoices.xlsx")
Example #2
0
def open_items_list(request, form):
    if request.GET.get("export") == "xlsx":
        xlsx = WorkbenchXLSXDocument()
        xlsx.table_from_queryset(form.open_items_list()["list"].select_related(
            "customer", "contact__organization", "owned_by",
            "project__owned_by"))
        return xlsx.to_response("open-items-list-{}.xlsx".format(
            form.cleaned_data["cutoff_date"].isoformat()))

    return render(
        request,
        "reporting/open_items_list.html",
        {
            "form": form,
            "open_items_list": form.open_items_list()
        },
    )
Example #3
0
    def response(self, request, queryset):
        if request.GET.get("export") == "xlsx":
            xlsx = WorkbenchXLSXDocument()
            additional = []
            values = {(v.deal_id, v.type_id): v.value
                      for v in Value.objects.filter(deal__in=queryset)}
            attributes = {(a.deal_id, a.attribute.group_id): a.attribute
                          for a in DealAttribute.objects.filter(
                              deal__in=queryset).select_related("attribute")}

            for vt in ValueType.objects.all():
                additional.append((
                    "{}: {}".format(Value._meta.verbose_name, vt),
                    (lambda id: lambda deal: values.get((deal.id, id)))(vt.id),
                ))
            for ag in AttributeGroup.objects.all():
                additional.append((
                    "{}: {}".format(Attribute._meta.verbose_name, ag),
                    (lambda id: lambda deal: attributes.get(
                        (deal.id, id)))(ag.id),
                ))
            xlsx.table_from_queryset(queryset, additional=additional)
            return xlsx.to_response("deals.xlsx")
Example #4
0
 def response(self, request, queryset):
     if (request.GET.get("export") == "xlsx"
             and request.user.features[FEATURES.CONTROLLING]):
         xlsx = WorkbenchXLSXDocument()
         xlsx.table_from_queryset(queryset)
         return xlsx.to_response("absences.xlsx")