You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. from django.db.models import get_model
  2. from django.utils.translation import ugettext_lazy as _
  3. from oscar.core.loading import get_class
  4. ReportGenerator = get_class('dashboard.reports.reports', 'ReportGenerator')
  5. ReportCSVFormatter = get_class(
  6. 'dashboard.reports.reports', 'ReportCSVFormatter')
  7. ReportHTMLFormatter = get_class(
  8. 'dashboard.reports.reports', 'ReportHTMLFormatter')
  9. Voucher = get_model('voucher', 'Voucher')
  10. class VoucherReportCSVFormatter(ReportCSVFormatter):
  11. filename_template = 'voucher-performance.csv'
  12. def generate_csv(self, response, vouchers):
  13. writer = self.get_csv_writer(response)
  14. header_row = [_('Voucher code'),
  15. _('Added to a basket'),
  16. _('Used in an order'),
  17. _('Total discount')]
  18. writer.writerow(header_row)
  19. for voucher in vouchers:
  20. row = [voucher.code,
  21. voucher.num_basket_additions,
  22. voucher.num_orders,
  23. voucher.total_discount]
  24. writer.writerow(row)
  25. class VoucherReportHTMLFormatter(ReportHTMLFormatter):
  26. filename_template = 'dashboard/reports/partials/voucher_report.html'
  27. class VoucherReportGenerator(ReportGenerator):
  28. code = 'vouchers'
  29. description = _('Voucher performance')
  30. formatters = {
  31. 'CSV_formatter': VoucherReportCSVFormatter,
  32. 'HTML_formatter': VoucherReportHTMLFormatter}
  33. def generate(self):
  34. vouchers = Voucher._default_manager.all()
  35. return self.formatter.generate_response(vouchers)