summaryrefslogtreecommitdiff
path: root/ishtar_common/admin.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2022-02-24 16:10:37 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2022-02-24 16:10:37 +0100
commite5a7ae5eed8d9c65943e174b96fc23a7e3e51ee0 (patch)
tree871f1c39b10f44dbf9ffa105f6e1ce3a879fbdd5 /ishtar_common/admin.py
parent4629b32a0f098df6dde48a9416b47e72545ca57d (diff)
downloadIshtar-e5a7ae5eed8d9c65943e174b96fc23a7e3e51ee0.tar.bz2
Ishtar-e5a7ae5eed8d9c65943e174b96fc23a7e3e51ee0.zip
Admin: JSON field - CSV export and import
Diffstat (limited to 'ishtar_common/admin.py')
-rw-r--r--ishtar_common/admin.py22
1 files changed, 16 insertions, 6 deletions
diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py
index bbd61f14b..99c3b2deb 100644
--- a/ishtar_common/admin.py
+++ b/ishtar_common/admin.py
@@ -174,6 +174,8 @@ def export_as_csv_action(
value = getattr(value, "txt_idx")
elif value is None:
value = ""
+ elif isinstance(value, ContentType):
+ value = f"{value.app_label}|{value.model}"
else:
value = str(value)
row.append(value)
@@ -575,11 +577,16 @@ class ImportActionAdmin(admin.ModelAdmin):
elif isinstance(field, ForeignKey):
if value:
model = field.rel.to
- try:
- value = model.objects.get(**{slug_col: value})
- except model.DoesNotExist:
- missing_parent.append(row.pop(k))
- continue
+ if model == ContentType:
+ value = value.split("|")
+ value = ContentType.objects.get(app_label=value[0],
+ model=value[1])
+ else:
+ try:
+ value = model.objects.get(**{slug_col: value})
+ except model.DoesNotExist:
+ missing_parent.append(row.pop(k))
+ continue
else:
value = None
row[k] = value
@@ -1658,7 +1665,8 @@ class JsonDataFieldForm(JsonContentTypeFormMixin, forms.ModelForm):
exclude = []
-class JsonDataFieldAdmin(admin.ModelAdmin):
+class JsonDataFieldAdmin(ImportActionAdmin):
+ import_keys = ["key"]
list_display = [
"name",
"content_type",
@@ -1672,9 +1680,11 @@ class JsonDataFieldAdmin(admin.ModelAdmin):
actions = [
change_value("display", True, _("Display selected")),
change_value("display", False, _("Hide selected")),
+ export_as_csv_action(),
]
list_filter = ["value_type", "search_index"]
form = JsonDataFieldForm
+ model = models.JsonDataField
admin_site.register(models.JsonDataField, JsonDataFieldAdmin)