From 993da19467e202e35dc253ee7326d62b8734b7ca Mon Sep 17 00:00:00 2001 From: Cefin Date: Thu, 24 Mar 2022 16:16:16 +0100 Subject: Admin - Export - CSV: Standardise csv exports of typologies (refs #5251) --- ishtar_common/admin.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'ishtar_common/admin.py') diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py index d1a598356..f5729d9de 100644 --- a/ishtar_common/admin.py +++ b/ishtar_common/admin.py @@ -168,6 +168,18 @@ def export_as_csv_action( excludeset = set(exclude) field_names = field_names - excludeset + if hasattr(modeladmin, "CSV_FIELD_ORDER"): + field_order = modeladmin.CSV_FIELD_ORDER + def sort_csv(value): + if value not in field_order: + return 1000 + else: + return field_order.index(value) + + field_names = sorted( + field_names, key=sort_csv + ) + response = HttpResponse(content_type="text/csv") response["Content-Disposition"] = "attachment; filename=%s.csv" % str( opts @@ -198,7 +210,6 @@ def export_as_csv_action( export_as_csv.short_description = description return export_as_csv - def export_as_geojson_action( geometry_field, description=_("Export selected as GeoJSON file"), @@ -1056,6 +1067,15 @@ class GeneralTypeAdmin(ChangeParentAdmin, ImportActionAdmin, ImportJSONActionAdm prepopulated_fields = {"txt_idx": ("label",)} LIST_DISPLAY = ["label", "txt_idx", "available", "comment"] extra_list_display = [] + CSV_FIELD_ORDER = [ + "id", + "label", + "txt_idx", + "parent", + "order", + "available", + "comment", + ] def get_list_display(self, request): list_display = list(self.LIST_DISPLAY)[:] -- cgit v1.2.3