From 40e718aba36be55b1b44f6217191b90ed9ad51be Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Thu, 10 Feb 2011 16:01:56 +0100 Subject: CSV improvment...regression ( ;) ) can manage non standard encoding (such as Windows ones) (closes #159) --- ishtar/furnitures/views.py | 11 ++++++----- ishtar/furnitures/widgets.py | 5 +++-- ishtar/settings.py.example | 3 ++- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/ishtar/furnitures/views.py b/ishtar/furnitures/views.py index d7edbf782..432724498 100644 --- a/ishtar/furnitures/views.py +++ b/ishtar/furnitures/views.py @@ -25,8 +25,6 @@ import csv import json import datetime -CSV_OPTIONS = {'delimiter':';', 'quotechar':'"', 'quoting':csv.QUOTE_ALL} - from django.http import HttpResponse from django.template import RequestContext from django.shortcuts import render_to_response, redirect @@ -40,6 +38,9 @@ from menus import menu import forms as ishtar_forms import models +CSV_OPTIONS = {'delimiter':';', 'quotechar':'"', 'quoting':csv.QUOTE_ALL} +ENCODING = settings.ENCODING or 'utf-8' + def index(request): """ Main page @@ -199,12 +200,12 @@ def get_item(model, func_name, default_name): try: field = model._meta.get_field(field_name) except: - col_names.append(u"".encode('utf-8')) + col_names.append(u"".encode(ENCODING)) continue - col_names.append(unicode(field.verbose_name).encode('utf-8')) + col_names.append(unicode(field.verbose_name).encode(ENCODING)) writer.writerow(col_names) for data in datas: - writer.writerow([val.encode('utf-8') for val in data[1:]]) + writer.writerow([val.encode(ENCODING) for val in data[1:]]) return response return HttpResponse(None, mimetype='text/plain') diff --git a/ishtar/furnitures/widgets.py b/ishtar/furnitures/widgets.py index 439eb81fa..28853e406 100644 --- a/ishtar/furnitures/widgets.py +++ b/ishtar/furnitures/widgets.py @@ -160,10 +160,11 @@ class JQueryJqGrid(forms.RadioSelect): rendered += """
""" % (name, name) + encoding = settings.ENCODING or 'utf-8' rendered += """ -
%s
+
%s (%s)
""" % (name, - unicode(self.source), unicode(_("Export as CSV")), name, name) + unicode(self.source), unicode(_("Export as CSV")), encoding, name, name) rendered += """