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