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")
def get(self, request, *args, **kwargs): self.object = self.get_object() data = [ [ gettext("service"), gettext("description"), gettext("rendered on"), gettext("effort type"), gettext("hourly rate"), gettext("hours"), gettext("cost"), ], [], ] hours = defaultdict(list) cost = defaultdict(list) for entry in LoggedHours.objects.filter( invoice_service__invoice=self.object): hours[entry.invoice_service_id].append(entry) for entry in LoggedCost.objects.filter( invoice_service__invoice=self.object): cost[entry.invoice_service_id].append(entry) for service in self.object.services.all(): data.append([ service.title, service.description, "", service.effort_type, service.effort_rate, "", "", ]) for entry in hours[service.id]: data.append([ "", entry.description, entry.rendered_on, "", "", entry.hours, entry.hours * service.effort_rate if service.effort_rate else "", ]) for entry in cost[service.id]: data.append([ "", entry.description, entry.rendered_on, "", "", "", entry.cost ]) data.append([]) xlsx = WorkbenchXLSXDocument() xlsx.add_sheet(gettext("logbook")) xlsx.table(None, data) return xlsx.to_response("%s.xlsx" % self.object.code)
def response(self, request, queryset): if request.GET.get("export") == "xlsx": xlsx = WorkbenchXLSXDocument() xlsx.people(queryset) return xlsx.to_response("people.xlsx") elif request.GET.get("export") == "vcard": return render_vcard_response( request, "\n".join( person_to_vcard(person).serialize() for person in queryset.prefetch_related( "phonenumbers", "emailaddresses", "postaladdresses") [:settings.BATCH_MAX_ITEMS]), )
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() }, )
def project_budget_statistics_view(request, form): statistics = project_budget_statistics.project_budget_statistics( form.queryset(), cutoff_date=form.cleaned_data.get("cutoff_date") ) if form.cleaned_data.get("closed_during_the_last_year"): statistics["statistics"] = sorted( statistics["statistics"], key=lambda s: s["project"].closed_on, reverse=True ) if request.GET.get("export") == "xlsx" and statistics["statistics"]: xlsx = WorkbenchXLSXDocument() xlsx.project_budget_statistics(statistics) return xlsx.to_response("project-budget-statistics.xlsx") return render( request, "reporting/project_budget_statistics.html", {"form": form, "statistics": statistics}, )
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")
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")
def response(self, request, queryset): if (request.GET.get("export") == "xlsx" and request.user.features[FEATURES.CONTROLLING]): xlsx = WorkbenchXLSXDocument() xlsx.logged_costs(queryset) return xlsx.to_response("costs.xlsx")