diff options
Diffstat (limited to 'ishtar_common/admin.py')
| -rw-r--r-- | ishtar_common/admin.py | 22 | 
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  | 
