Changeset f23bc9a for asadb/groups


Ignore:
Timestamp:
Mar 31, 2012, 5:08:15 PM (14 years ago)
Author:
Alex Dehnert <adehnert@…>
Branches:
master, space-access, stable, stage
Children:
1b10de0
Parents:
6f85f2a
git-author:
Alex Dehnert <adehnert@…> (03/31/12 17:08:15)
git-committer:
Alex Dehnert <adehnert@…> (03/31/12 17:08:15)
Message:

Support CSV output

File:
1 edited

Legend:

Unmodified
Added
Removed
  • asadb/groups/views.py

    r6f85f2a rf23bc9a  
    22
    33import collections
     4import csv
    45import datetime
    56
     
    1415from django.template import Context, Template
    1516from django.template.loader import get_template
    16 from django.http import Http404, HttpResponseRedirect
     17from django.http import HttpResponse, Http404, HttpResponseRedirect
    1718from django.core.urlresolvers import reverse
    1819from django.core.mail import EmailMessage, mail_admins
     
    787788    )
    788789
     790    _format_choices = [
     791        ('html/inline',     "Web (HTML)", ),
     792        ('csv/inline',      "Spreadsheet (CSV) --- in browser", ),
     793        ('csv/download',    "Spreadsheet (CSV) --- download", ),
     794    ]
     795    output_format = forms.fields.ChoiceField(choices=_format_choices, widget=forms.RadioSelect, initial='html')
     796
    789797    class Meta:
    790798        fieldsets = [
     
    793801                'fields': ['name', 'abbreviation', 'activity_category', 'group_class', 'group_status', 'group_funding', ],
    794802            }),
    795             ('display', {
     803            ('fields', {
    796804                'legend': 'Data to display',
    797805                'fields': ['basic_fields', ],
     806            }),
     807            ('final', {
     808                'legend': 'Final options',
     809                'fields': ['output_format', ],
    798810            }),
    799811        ]
     
    817829    if run_report:
    818830        basic_fields = form.cleaned_data['basic_fields']
     831        output_format, output_disposition = form.cleaned_data['output_format'].split('/')
    819832        col_labels = [form.basic_fields_labels[field] for field in basic_fields]
    820833        for group in groups_filterset.qs:
    821834            group_data = [getattr(group, field) for field in basic_fields]
    822835            report_groups.append(group_data)
    823     else:
    824         pass
     836
     837        if output_format == 'csv':
     838            if output_disposition == 'download':
     839                mimetype = 'text/csv'
     840            else:
     841                # Firefox, at least, downloads text/csv regardless
     842                mimetype = 'text/plain'
     843            response = HttpResponse(mimetype=mimetype)
     844            if output_disposition == 'download':
     845                response['Content-Disposition'] = 'attachment; filename=asa-db-report.csv'
     846            writer = csv.writer(response)
     847            writer.writerow(col_labels)
     848            for row in report_groups: writer.writerow(row)
     849            return response
    825850
    826851    context = {
Note: See TracChangeset for help on using the changeset viewer.