diff options
| 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 | 
| commit | 40e718aba36be55b1b44f6217191b90ed9ad51be (patch) | |
| tree | ef86b3d1a8eacf39d851293df6adc5ec6073e5a1 | |
| parent | 5e3ccae0f74697adbf795fea85a697b2a43be556 (diff) | |
| download | Ishtar-40e718aba36be55b1b44f6217191b90ed9ad51be.tar.bz2 Ishtar-40e718aba36be55b1b44f6217191b90ed9ad51be.zip | |
CSV improvment...regression ( ;) ) can manage non standard encoding (such as Windows ones) (closes #159)
| -rw-r--r-- | ishtar/furnitures/views.py | 11 | ||||
| -rw-r--r-- | ishtar/furnitures/widgets.py | 5 | ||||
| -rw-r--r-- | 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 += """<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 = "" | 
