Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def export_as_csv(report, fields, force_fields):
- print "export to csv started"
- """
- Generic csv export admin action.
- based on http://djangosnippets.org/snippets/2020/
- extended for being able to give list_display as fields and work with admin-defined functions
- """
- opts = report
- if not force_fields:
- field_names = set([field.name for field in opts.fields])
- if fields:
- fieldset = set(fields)
- field_names = field_names & fieldset
- elif fields:
- field_names = set(fields)
- else:
- raise("option force_fields can only be used in parallel with option fields")
- writer = csv.writer(open("myfile.csv","w"), delimiter=',',quoting=csv.QUOTE_ALL)
- writer.writerow(list(field_names))
- row = []
- for field in field_names:
- try:
- row.append(unicode(getattr(report, field)).encode('utf-8'))
- except AttributeError:
- row.append(unicode((getattr(report, field)(report))).encode('utf-8'))
- except:
- raise
- writer.writerow(row)
- response = writer
- return response
- list_display = ('primary_id', 'created_date', 'report_size',)
- mail = EmailMessage('Email Subject', 'Email Body', None, ['example@example.com'])
- mail.attach("report.csv", export_as_csv(report, fields = list_display, force_fields=True) , "text/csv")
- mail.send()
- class Report(models.Model):
- primary_id = models.IntegerField('Primary Key', primary_key = True, default=0)
- created_date = models.DateTimeField('Created date', default=timezone.now)
- report_size = models.IntegerField('Report Size', default=0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement