summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/admin.py11
-rw-r--r--ishtar_common/serializers.py10
-rw-r--r--ishtar_common/serializers_utils.py14
3 files changed, 31 insertions, 4 deletions
diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py
index 4d922bded..2f3556eca 100644
--- a/ishtar_common/admin.py
+++ b/ishtar_common/admin.py
@@ -76,7 +76,7 @@ from ishtar_common.utils import API_MAIN_CONTENT_TYPES, get_cache, create_slug,\
get_person_gdpr_log, InlineClass
from ishtar_common import forms as common_forms, forms_common as other_common_forms
-from ishtar_common.serializers import restore_serialized, IMPORT_MODEL_LIST
+from ishtar_common.serializers import CUSTOM_FORM_LIST, restore_serialized, IMPORT_MODEL_LIST
from ishtar_common.serializers_utils import generic_get_results, serialization_info
from archaeological_files import forms as file_forms
from archaeological_operations import forms as operation_forms
@@ -1519,7 +1519,6 @@ class ImportJSONActionAdmin(admin.ModelAdmin):
with open(filename, "wb+") as zipped_file:
for chunk in request.FILES["json_file"].chunks():
zipped_file.write(chunk)
- result = restore_serialized(filename)
try:
result = restore_serialized(filename)
except ValueError as e:
@@ -2694,7 +2693,11 @@ class JsonFieldInline(admin.TabularInline):
formset = JsonFieldFormset
-class CustomFormAdmin(admin.ModelAdmin):
+serialize_form_action = serialize_action("custom_forms", CUSTOM_FORM_LIST)
+serialize_form_action.short_description = SERIALIZE_DESC
+
+
+class CustomFormAdmin(ImportJSONActionAdmin):
list_display = [
"name",
"form",
@@ -2716,8 +2719,10 @@ class CustomFormAdmin(admin.ModelAdmin):
"profile_types",
)
autocomplete_fields = ["users"]
+ actions = [serialize_form_action]
form = CustomFormForm
inlines = [ExcludeFieldInline, JsonFieldInline]
+ import_keys = ["name"]
def get_inline_instances(self, request, obj=None):
# no inline on creation
diff --git a/ishtar_common/serializers.py b/ishtar_common/serializers.py
index 3cbe20907..09d482d02 100644
--- a/ishtar_common/serializers.py
+++ b/ishtar_common/serializers.py
@@ -170,6 +170,15 @@ def directory_serialization(archive=False, return_empty_types=False, archive_nam
return full_archive
+CUSTOM_FORM_LIST = [
+ models.CustomForm,
+ models.ExcludedField,
+ models.JsonDataSection,
+ models.JsonDataField,
+ models.CustomFormJsonField
+]
+
+
def document_serialization(
archive=False,
return_empty_types=False,
@@ -410,6 +419,7 @@ def restore_serialized(
DIRS = (
("types", [None]),
+ ("custom_forms", CUSTOM_FORM_LIST),
("common_imports", IMPORT_MODEL_LIST),
("common_configuration", CONF_MODEL_LIST),
("common_geo", GEO_MODEL_LIST),
diff --git a/ishtar_common/serializers_utils.py b/ishtar_common/serializers_utils.py
index d9866f5da..e3f6f6c6f 100644
--- a/ishtar_common/serializers_utils.py
+++ b/ishtar_common/serializers_utils.py
@@ -182,7 +182,13 @@ class ItemKeySerializer(serializers.ModelSerializer):
GENERIC_QUERYSET_FILTER = {
- "JsonDataSection": {"JsonDataField": "json_data_field__pk__in"},
+ "JsonDataSection": {
+ "JsonDataField": "json_data_field__pk__in",
+ "CustomForm": "json_data_field__custom_form_details__custom_form_id__in"
+ },
+ "JsonDataField": {
+ "CustomForm": "custom_form_details__custom_form_id__in"
+ },
"Regexp": {
"ImporterType": "columns__importer_type__pk__in",
"ImporterGroup": "columns__importer_type__groups__group__pk__in",
@@ -235,6 +241,12 @@ GENERIC_QUERYSET_FILTER = {
},
"ImporterType": {
"ImporterGroup": "groups__group__pk__in",
+ },
+ "ExcludedField": {
+ "CustomForm": "custom_form_id__in"
+ },
+ "CustomFormJsonField": {
+ "CustomForm": "custom_form_id__in"
}
}