X-Git-Url: https://git.mdrn.pl/edumed.git/blobdiff_plain/6c9978c5bf8b1ef20871557c22b8b02df647d700..9616d8fcb2932b9556aea942fc19000111da2a13:/contact/admin.py diff --git a/contact/admin.py b/contact/admin.py index bb43881..7581666 100644 --- a/contact/admin.py +++ b/contact/admin.py @@ -1,13 +1,15 @@ # -*- coding: utf-8 -*- +import csv + from django.contrib import admin -from .models import Contact from django.utils.translation import ugettext as _ -from .forms import contact_forms, admin_list_width from django.utils.safestring import mark_safe from django.conf.urls import patterns, url from django.http import HttpResponse, Http404 -from .utils import csv_prepare +from edumed.utils import UnicodeCSVWriter +from .forms import contact_forms, admin_list_width +from .models import Contact class ContactAdminMeta(admin.ModelAdmin.__class__): @@ -41,7 +43,7 @@ class ContactAdmin(admin.ModelAdmin): return lambda obj: self.admin_list(obj, nr) raise AttributeError(name) - def change_view(self, request, object_id, from_url='', extra_context=None): + def change_view(self, request, object_id, form_url='', extra_context=None): if object_id: try: instance = Contact.objects.get(pk=object_id) @@ -92,7 +94,7 @@ class ContactAdmin(admin.ModelAdmin): f.short_description = orig_fields[k].label if k in orig_fields else _(k) setattr(self, "body__%s" % k, f) return super(ContactAdmin, self).change_view( - request, object_id, from_url=from_url, extra_context=extra_context) + request, object_id, form_url=form_url, extra_context=extra_context) def changelist_view(self, request, extra_context=None): context = dict() @@ -114,7 +116,6 @@ class ContactAdmin(admin.ModelAdmin): def extract_view(request, form_tag, extract_type_slug): - toret = u'' contacts_by_spec = dict() form = contact_forms.get(form_tag) if form is None and extract_type_slug not in ('contacts', 'all'): @@ -137,10 +138,13 @@ def extract_view(request, form_tag, extract_type_slug): else: keys = form.get_extract_fields(contact, extract_type_slug) contacts_by_spec.setdefault(tuple(keys), []).append(contact) - + + response = HttpResponse(content_type='text/csv') + csv_writer = UnicodeCSVWriter(response) + # Generate list for each body key set for keys, contacts in contacts_by_spec.items(): - toret += u','.join(keys) + '\n' + csv_writer.writerow(keys) for contact in contacts: if extract_type_slug == 'contacts': records = [dict(contact=contact.contact)] @@ -153,11 +157,9 @@ def extract_view(request, form_tag, extract_type_slug): for key in keys: if key not in record: record[key] = '' - record[key] = csv_prepare(record[key]) - toret += u','.join([record[key] for key in keys]) + '\n' - toret += '\n\n' + csv_writer.writerow([record[key] for key in keys]) + csv_writer.writerow([]) - response = HttpResponse(toret, content_type='text/csv') response['Content-Disposition'] = 'attachment; filename="kontakt.csv"' return response