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.py41
1 files changed, 39 insertions, 2 deletions
diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py
index 4da0a15ad..f0f795665 100644
--- a/ishtar_common/admin.py
+++ b/ishtar_common/admin.py
@@ -2257,13 +2257,25 @@ def get_api_choices():
class ApiSearchModelAdminForm(forms.ModelForm):
class Meta:
model = models_rest.ApiUser
- exclude = []
+ exclude = ["table_format"]
content_type = forms.ModelChoiceField(
label=_("Content type"), queryset=ContentType.objects,
limit_choices_to=get_api_choices
)
+ def __init__(self, *args, **kwargs):
+ super(ApiSearchModelAdminForm, self).__init__(*args, **kwargs)
+ if self.instance.id:
+ model_name = self.instance.content_type.model.replace("_", "")
+ model_name = f"{self.instance.content_type.app_label}.models."\
+ f"{model_name}"
+ q = models.ImporterType.objects.filter(
+ associated_models__klass__iexact=model_name
+ )
+ # self.fields['table_format'].queryset = q
+ self.fields['export'].queryset = q
+
class ApiSearchModelAdmin(admin.ModelAdmin):
form = ApiSearchModelAdminForm
@@ -2300,7 +2312,8 @@ def update_types_from_source(modeladmin, request, queryset):
source = queryset.all()[0]
created, updated, deleted = 0, 0, 0
missing_models, missing_types = [], []
- for item_type in ("operation",):
+ config = {}
+ for item_type in ("operation", "contextrecord", "file", "find", "warehouse"):
curl = source.url
if not curl.endswith("/"):
curl += "/"
@@ -2335,6 +2348,17 @@ def update_types_from_source(modeladmin, request, queryset):
str(_("Response of {} is not a valid JSON message.")).format(curl),
)
continue
+
+ if "config" in content:
+ for k in content["config"]:
+ if not content["config"][k]:
+ continue
+ if k not in config:
+ config[k] = ""
+ elif config[k]:
+ config[k] += "||"
+ config[k] += content["config"][k]
+
result = source.update_matches(content)
if result.get("created", None):
created += result['created']
@@ -2346,6 +2370,18 @@ def update_types_from_source(modeladmin, request, queryset):
missing_models += result["search_model do not exist"]
if result.get("type do not exist", None):
missing_types += result["type do not exist"]
+ modified = False
+ for k in config:
+ if getattr(source, k) != config[k]:
+ modified = True
+ setattr(source, k, config[k])
+ if modified:
+ source.save()
+ messages.add_message(
+ request,
+ messages.INFO,
+ str(_("Table/exports configuration updated")),
+ )
if created:
messages.add_message(
request,
@@ -2485,6 +2521,7 @@ class ApiExternalSourceAdmin(admin.ModelAdmin):
generate_match_document,
update_association_from_match_document,
]
+ exclude = ("search_columns", "search_columns_label", "exports", "exports_label")
autocomplete_fields = ["users"]
list_display = ("name", "url", "key")