diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2023-01-13 11:41:38 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2023-01-13 11:41:38 +0100 |
commit | 329b9e86bb67b4504a044931a07896ae6504c6ae (patch) | |
tree | 4f18856f3b2aa665bc9ddeb0f9599ca9cf001306 | |
parent | d40e60fdf5e7ccb88f41bb9d6db30a4a4ab61a25 (diff) | |
download | Ishtar-329b9e86bb67b4504a044931a07896ae6504c6ae.tar.bz2 Ishtar-329b9e86bb67b4504a044931a07896ae6504c6ae.zip |
Syndication: admin ApiSearchModel - fix exporter filter for Find
-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: |