Advertisement
Guest User

Untitled

a guest
Apr 28th, 2015
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.60 KB | None | 0 0
  1. def export_as_csv(report, fields, force_fields):
  2. print "export to csv started"
  3. """
  4. Generic csv export admin action.
  5. based on http://djangosnippets.org/snippets/2020/
  6. extended for being able to give list_display as fields and work with admin-defined functions
  7. """
  8. opts = report
  9. if not force_fields:
  10. field_names = set([field.name for field in opts.fields])
  11. if fields:
  12. fieldset = set(fields)
  13. field_names = field_names & fieldset
  14. elif fields:
  15. field_names = set(fields)
  16. else:
  17. raise("option force_fields can only be used in parallel with option fields")
  18.  
  19. writer = csv.writer(open("myfile.csv","w"), delimiter=',',quoting=csv.QUOTE_ALL)
  20.  
  21. writer.writerow(list(field_names))
  22. row = []
  23. for field in field_names:
  24. try:
  25. row.append(unicode(getattr(report, field)).encode('utf-8'))
  26. except AttributeError:
  27. row.append(unicode((getattr(report, field)(report))).encode('utf-8'))
  28. except:
  29. raise
  30. writer.writerow(row)
  31.  
  32. response = writer
  33. return response
  34.  
  35. list_display = ('primary_id', 'created_date', 'report_size',)
  36. mail = EmailMessage('Email Subject', 'Email Body', None, ['example@example.com'])
  37. mail.attach("report.csv", export_as_csv(report, fields = list_display, force_fields=True) , "text/csv")
  38. mail.send()
  39.  
  40. class Report(models.Model):
  41. primary_id = models.IntegerField('Primary Key', primary_key = True, default=0)
  42. created_date = models.DateTimeField('Created date', default=timezone.now)
  43. report_size = models.IntegerField('Report Size', default=0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement