summaryrefslogtreecommitdiff
path: root/ishtar_common/admin.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/admin.py')
-rw-r--r--ishtar_common/admin.py22
1 files changed, 20 insertions, 2 deletions
diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py
index 86a9af8e8..3e388d615 100644
--- a/ishtar_common/admin.py
+++ b/ishtar_common/admin.py
@@ -193,6 +193,8 @@ def export_as_csv_action(
value = ""
elif isinstance(value, ContentType):
value = f"{value.app_label}|{value.model}"
+ elif hasattr(value, "natural_key"):
+ value = "||".join(value.natural_key())
else:
value = str(value)
row.append(value)
@@ -203,6 +205,7 @@ 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"),
@@ -664,6 +667,14 @@ class ImportActionAdmin(admin.ModelAdmin):
value = value.split("|")
value = ContentType.objects.get(app_label=value[0],
model=value[1])
+ elif "||" in value:
+ try:
+ value = model.objects.get_by_natural_key(
+ *value.split("||")
+ )
+ except model.DoesNotExist:
+ missing_parent.append(row.pop(k))
+ break
else:
for slug_col2 in self.import_keys:
try:
@@ -1790,7 +1801,13 @@ class JsonDataFieldForm(JsonContentTypeFormMixin, forms.ModelForm):
exclude = []
-class JsonDataFieldAdmin(ImportActionAdmin):
+serialize_json_action = serialize_action(
+ "types", [models.JsonDataSection, models.JsonDataField]
+)
+serialize_json_action.short_description = SERIALIZE_DESC
+
+
+class JsonDataFieldAdmin(ImportActionAdmin, ImportJSONActionAdmin):
import_keys = ["key"]
list_display = [
"name",
@@ -1803,9 +1820,10 @@ class JsonDataFieldAdmin(ImportActionAdmin):
"section",
]
actions = [
+ export_as_csv_action(),
+ serialize_json_action,
change_value("display", True, _("Display selected")),
change_value("display", False, _("Hide selected")),
- export_as_csv_action(),
]
list_filter = ["value_type", "search_index"]
form = JsonDataFieldForm