summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ishtar_common/admin.py33
1 files changed, 27 insertions, 6 deletions
diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py
index f0f795665..dc4fbbf90 100644
--- a/ishtar_common/admin.py
+++ b/ishtar_common/admin.py
@@ -46,6 +46,7 @@ from django.contrib.gis.geos.error import GEOSException
from django.core.cache import cache
from django.core.exceptions import FieldError, FieldDoesNotExist
from django.core.serializers import serialize
+from django.db.models import Q
from django.db.models.fields import (
BooleanField,
IntegerField,
@@ -2268,11 +2269,23 @@ class ApiSearchModelAdminForm(forms.ModelForm):
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
+ models_name = []
+ if model_name == "find":
+ models_name.append(
+ f"{self.instance.content_type.app_label}.models_finds.{model_name}"
+ )
+ models_name.append(
+ f"{self.instance.content_type.app_label}.models.{model_name}"
)
+ q = None
+ for model_name in models_name:
+ q1 = Q(associated_models__klass__iexact=model_name)
+ if not q:
+ q = q1
+ else:
+ q |= q1
+
+ q = models.ImporterType.objects.filter(q)
# self.fields['table_format'].queryset = q
self.fields['export'].queryset = q
@@ -2281,6 +2294,12 @@ class ApiSearchModelAdmin(admin.ModelAdmin):
form = ApiSearchModelAdminForm
list_display = ("user", "content_type")
+ def get_readonly_fields(self, request, obj=None):
+ fields = tuple(super().get_readonly_fields(request, obj) or [])
+ if obj: # editing an existing object
+ return fields + tuple(["content_type"])
+ return fields
+
admin_site.register(models_rest.ApiSearchModel, ApiSearchModelAdmin)
@@ -2335,9 +2354,11 @@ def update_types_from_source(modeladmin, request, queryset):
request,
str(
_(
- "Bad response for {} - {}. Response status code {} != 200. Check your key?"
+ "Bad response for {} - {}. Response status code {} != 200. "
+ "No access to {}. If it is not expected, check your key."
)
- ).format(source.name, curl, response.status_code),
+ ).format(source.name, curl, response.status_code, item_type),
+ message_type=messages.WARNING
)
continue
try: