summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@peacefrogs.net>2011-02-10 16:01:56 +0100
committerÉtienne Loks <etienne.loks@peacefrogs.net>2011-02-10 16:01:56 +0100
commitec6f4cad842965b97ee222f0827d1f6ab2e12d6f (patch)
treeef86b3d1a8eacf39d851293df6adc5ec6073e5a1
parent73b5168c5333395c78a3862caabacde64720d89b (diff)
downloadIshtar-ec6f4cad842965b97ee222f0827d1f6ab2e12d6f.tar.bz2
Ishtar-ec6f4cad842965b97ee222f0827d1f6ab2e12d6f.zip
CSV improvment...regression ( ;) ) can manage non standard encoding (such as Windows ones) (closes #159)
-rw-r--r--ishtar/furnitures/views.py11
-rw-r--r--ishtar/furnitures/widgets.py5
-rw-r--r--ishtar/settings.py.example3
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 += """<table id="grid_%s" class='jqgrid'></table>
<div id="pager_%s"></div>
""" % (name, name)
+ encoding = settings.ENCODING or 'utf-8'
rendered += """
-<div id="foot_%s" class="gridfooter"><a href="%scsv" target="_blank">%s</a></div>
+<div id="foot_%s" class="gridfooter"><a href="%scsv" target="_blank">%s (%s)</a></div>
<input type="hidden" id="hidden_%s" name="%s">""" % (name,
- unicode(self.source), unicode(_("Export as CSV")), name, name)
+ unicode(self.source), unicode(_("Export as CSV")), encoding, name, name)
rendered += """
<script type="text/javascript">
var query_vars = new Array(%(col_idx)s);
diff --git a/ishtar/settings.py.example b/ishtar/settings.py.example
index 4d16fd5b2..99017d049 100644
--- a/ishtar/settings.py.example
+++ b/ishtar/settings.py.example
@@ -1,10 +1,11 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
-# Copyright (C) 2010 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2010-2011 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
# Django settings for ishtar project.
# Ishtar custom
SRID = 27572
+ENCODING = '' # specific encoding for CSV export - default to utf-8
ROOT_PATH = "/var/local/webapp/ishtar/ishtar/"
URL_PATH = ""