From 465ee0b4cfa68b5d7e1bd8c8752e69a0f6783215 Mon Sep 17 00:00:00 2001 From: Radek Czajka Date: Thu, 26 Mar 2020 14:37:19 +0100 Subject: [PATCH] Fix for CSV export. --- CHANGELOG.md | 2 +- fnpdjango/actions.py | 20 +++++---- fnpdjango/locale/pl/LC_MESSAGES/django.mo | Bin 835 -> 827 bytes fnpdjango/locale/pl/LC_MESSAGES/django.po | 50 +++++++++++----------- setup.py | 2 +- 5 files changed, 38 insertions(+), 36 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dac26e0..3ec1475 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ This document records all notable changes to fnpdjango. -## 0.4.4 (2020-03-26) +## 0.4.5 (2020-03-26) - Support for Django up do 3.0. - Added `actions.export_as_csv_action`. diff --git a/fnpdjango/actions.py b/fnpdjango/actions.py index ec0479e..1e1316a 100644 --- a/fnpdjango/actions.py +++ b/fnpdjango/actions.py @@ -3,6 +3,7 @@ from __future__ import unicode_literals import csv from django.http import HttpResponse +from django.utils.translation import ugettext_lazy as _ try: unicode @@ -12,7 +13,7 @@ else: str = unicode -def export_as_csv_action(description="Export selected objects as CSV file", fields=None, exclude=None, header=True): +def export_as_csv_action(description=_("Export selected objects as CSV file"), fields=None, exclude=None, header=True): """ This function returns an export csv action 'fields' and 'exclude' work like in django ModelForm @@ -24,14 +25,9 @@ def export_as_csv_action(description="Export selected objects as CSV file", fiel based on http://djangosnippets.org/snippets/1697/ """ opts = modeladmin.model._meta - field_names = [field.name for field in opts.fields] + field_names = fields or [field.name for field in opts.fields] - if fields: - for f in fields: - if f not in field_names: - field_names.append(f) - - elif exclude: + if exclude: field_names = [f for f in field_names if f not in exclude] response = HttpResponse(content_type='text/csv') @@ -42,7 +38,13 @@ def export_as_csv_action(description="Export selected objects as CSV file", fiel if header: writer.writerow(field_names) for obj in queryset: - writer.writerow([str(getattr(obj, field)) for field in field_names]) + row = [] + for field in field_names: + value = getattr(obj, field) + if callable(value): + value = value() + row.append(str(value)) + writer.writerow(row) return response diff --git a/fnpdjango/locale/pl/LC_MESSAGES/django.mo b/fnpdjango/locale/pl/LC_MESSAGES/django.mo index 6e5d1fcbb3e631b0549f49eb56964c377d255756..53bc202938a72df37197a04b9f9d43a84f21bbaf 100644 GIT binary patch delta 341 zcmX|*!Ab&A6o!wZO*Od4O;H;UBn82hX%wMpY0{=elt|lao@5-GD>Gx|s#nnFO+J)<$rMdh*l8oUkNBNL~b$WX3R>9Oe! zU=r2|H!nMU6AWecqGt1hOyzc1UC3RK1SV1^Iu)Ni*K?IyQ(l7)>wc|~O>>=s&!b^h zwBFmt&Y6z-W8D|k7JcipbEQrtl31rE_W9gMFG$&|deyo^tuR?M84vh=(v5W_s1it+ VPI#b0gOfqHXq0_g&8(6y{{j&GMzjC` delta 359 zcmdnZc9?B~O1&Th1H(=r769VYK+FfkccA>&K$-=J{{S%u5Hm6|FdPJ8E+Cc!^3O0a zFo*-`XFysMNdE)UAaN091_n+btp}vJfV2gW25JGD1*G5rC@jjr3gogug@F1Q*nxQB z9bHyGZ@q$?iT_RN100>b9o=0O!d!!bJ^lT-f>I0ei%N8Ti_6%vlyp3V{HRN zpgNz#;u77EqRCZ^o@%-wsfoE(3O\n" -"Language-Team: LANGUAGE \n" -"Language: \n" +"Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" +"Language-Team: \n" +"X-Generator: Poedit 2.2.4\n" -#: templates/fnpdjango/share.html:5 -#: templates/fnpdjango/share.html.py:7 -msgid "Share on Facebook" -msgstr "Podziel się na Facebooku" - -#: templates/fnpdjango/share.html:10 -#: templates/fnpdjango/share.html.py:12 -msgid "Share on Google+" -msgstr "Podziel się na Google+" - -#: templates/fnpdjango/share.html:15 -#: templates/fnpdjango/share.html.py:17 -msgid "Share on Twitter" -msgstr "Podziel się na Twitterze" - -#: templates/fnpdjango/share.html:20 -#: templates/fnpdjango/share.html.py:22 -msgid "Share on NK.pl" -msgstr "Podziel się na NK.pl" +#: actions.py:16 +msgid "Export selected objects as CSV file" +msgstr "Eksportuj wybrane obiekty jako plik CSV" #: templates/fnpdjango/prevnext/next.html:13 msgid "next" @@ -45,3 +31,17 @@ msgstr "następne" msgid "previous" msgstr "poprzednie" +#: templates/fnpdjango/share.html:5 templates/fnpdjango/share.html:7 +msgid "Share on Facebook" +msgstr "Podziel się na Facebooku" + +#: templates/fnpdjango/share.html:10 templates/fnpdjango/share.html:12 +msgid "Share on Google+" +msgstr "Podziel się na Google+" + +#: templates/fnpdjango/share.html:15 templates/fnpdjango/share.html:17 +msgid "Share on Twitter" +msgstr "Podziel się na Twitterze" + +#~ msgid "Share on NK.pl" +#~ msgstr "Podziel się na NK.pl" diff --git a/setup.py b/setup.py index 7b77c83..1a392f1 100755 --- a/setup.py +++ b/setup.py @@ -23,7 +23,7 @@ def whole_trees(package_dir, paths): setup( name='fnpdjango', - version='0.4.4', + version='0.4.5', author='Radek Czajka', author_email='radekczajka@nowoczesnapolska.org.pl', url='', -- 2.20.1