Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

reports.py 2.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import csv
  2. from oscar.core.loading import import_module
  3. import_module('reports.reports', ['ReportGenerator'], locals())
  4. import_module('basket.models', ['Basket', 'OPEN', 'SUBMITTED'], locals())
  5. class OpenBasketReportGenerator(ReportGenerator):
  6. filename_template = 'open-baskets-%s-%s.csv'
  7. code = 'open_baskets'
  8. description = 'Open baskets'
  9. def generate(self, response):
  10. writer = csv.writer(response)
  11. header_row = ['User ID',
  12. 'Username',
  13. 'Name',
  14. 'Email',
  15. 'Basket status',
  16. 'Num lines',
  17. 'Num items',
  18. 'Value',
  19. 'Date of creation',
  20. 'Time since creation',
  21. ]
  22. writer.writerow(header_row)
  23. baskets = Basket._default_manager.filter(status=basket_models.OPEN)
  24. for basket in baskets:
  25. if basket.owner:
  26. row = [basket.owner_id, basket.owner.username, basket.owner.get_full_name(). basket.owner.email,
  27. basket.status, basket.num_lines,
  28. basket.num_items, basket.total_incl_tax,
  29. basket.date_created, basket.time_since_creation]
  30. else:
  31. row = [basket.owner_id, None, None, None, basket.status, basket.num_lines,
  32. basket.num_items, basket.total_incl_tax,
  33. basket.date_created, basket.time_since_creation]
  34. writer.writerow(row)
  35. class SubmittedBasketReportGenerator(ReportGenerator):
  36. filename_template = 'submitted_baskets-%s-%s.csv'
  37. code = 'submitted_baskets'
  38. description = 'Submitted baskets'
  39. def generate(self, response):
  40. writer = csv.writer(response)
  41. header_row = ['User ID',
  42. 'User',
  43. 'Basket status',
  44. 'Num lines',
  45. 'Num items',
  46. 'Value',
  47. 'Time between creation and submission',
  48. ]
  49. writer.writerow(header_row)
  50. baskets = Basket._default_manager.filter(status=basket_models.SUBMITTED)
  51. for basket in baskets:
  52. row = [basket.owner_id, basket.owner, basket.status, basket.num_lines,
  53. basket.num_items, basket.total_incl_tax,
  54. basket.date_created, basket.time_before_submit]
  55. writer.writerow(row)