summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--chimere/admin.py20
-rw-r--r--chimere/utils.py10
2 files changed, 19 insertions, 11 deletions
diff --git a/chimere/admin.py b/chimere/admin.py
index c36fd26..d492a4c 100644
--- a/chimere/admin.py
+++ b/chimere/admin.py
@@ -84,14 +84,18 @@ def export_to_shapefile(modeladmin, request, queryset):
return response
export_to_shapefile.short_description = _(u"Export to Shapefile")
-def export_to_csv(modeladmin, request, queryset):
- u"""
- Export data to CSV
- """
- filename, result = CSVManager.export(queryset)
- response = HttpResponse(result, mimetype='text/csv')
- response['Content-Disposition'] = 'attachment; filename=%s' % filename
- return response
+def _export_to_csv(cols=[]):
+ def func(modeladmin, request, queryset):
+ u"""
+ Export data to CSV
+ """
+ filename, result = CSVManager.export(queryset, cols=cols)
+ response = HttpResponse(result, mimetype='text/csv')
+ response['Content-Disposition'] = 'attachment; filename=%s' % filename
+ return response
+ return func
+
+export_to_csv = _export_to_csv()
export_to_csv.short_description = _(u"Export to CSV")
def managed_modified(modeladmin, request, queryset):
diff --git a/chimere/utils.py b/chimere/utils.py
index f5bc44f..028da06 100644
--- a/chimere/utils.py
+++ b/chimere/utils.py
@@ -554,10 +554,11 @@ class CSVManager(ImportManager):
return (new_item, updated_item, msg)
@classmethod
- def export(cls, queryset):
+ def export(cls, queryset, cols=[]):
dct = {'description':unicode(datetime.date.today()), 'data':[]}
cls_name = queryset.model.__name__.lower()
- cols = list(cls.COLS)
+ if not cols:
+ cols = list(cls.COLS)
for pm in queryset.model.all_properties():
cols.append((pm.name, pm.getAttrName(), pm.getAttrName()+'_set'))
header = [col[0] for col in cols]
@@ -568,7 +569,10 @@ class CSVManager(ImportManager):
if callable(attr):
data.append(attr(item))
else:
- data.append(getattr(item, attr))
+ v = getattr(item, attr)
+ if v == None:
+ v = ''
+ data.append(v)
dct['data'].append(data)
filename = unicode_normalize(settings.PROJECT_NAME + dct['description']\
+ '.csv')