Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

reports.py 1.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import csv
  2. from oscar.core.loading import import_module
  3. report_classes = import_module('reports.reports', ['ReportGenerator'])
  4. offer_models = import_module('offer.models', ['Voucher', 'ConditionalOffer'])
  5. class VoucherReportGenerator(report_classes.ReportGenerator):
  6. filename_template = 'voucher-performance.csv'
  7. code = 'vouchers'
  8. description = 'Voucher performance'
  9. def generate(self, response):
  10. writer = csv.writer(response)
  11. header_row = ['Voucher code',
  12. 'Added to a basket',
  13. 'Used in an order',
  14. 'Total discount',
  15. ]
  16. writer.writerow(header_row)
  17. vouchers = offer_models.Voucher._default_manager.all()
  18. for voucher in vouchers:
  19. row = [voucher.code, voucher.num_basket_additions, voucher.num_orders, voucher.total_discount]
  20. writer.writerow(row)
  21. def filename(self):
  22. return self.filename_template
  23. class OfferReportGenerator(report_classes.ReportGenerator):
  24. filename_template = 'conditional-offer-performance.csv'
  25. code = 'conditional-offers'
  26. description = 'Offer performance'
  27. def generate(self, response):
  28. writer = csv.writer(response)
  29. header_row = ['Offer',
  30. 'Total discount',
  31. ]
  32. writer.writerow(header_row)
  33. for offer in offer_models.ConditionalOffer._default_manager.all():
  34. row = [offer, offer.total_discount]
  35. writer.writerow(row)
  36. def filename(self):
  37. return self.filename_template