From 1ad0312b086b0286b81322252991c855deca554e Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Mon, 20 Dec 2021 19:42:56 +0100 Subject: Syndication - filter field on sheet (bis) --- ishtar_common/admin.py | 49 +++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 45 insertions(+), 4 deletions(-) (limited to 'ishtar_common/admin.py') diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py index bb8daa372..5c2f33aa1 100644 --- a/ishtar_common/admin.py +++ b/ishtar_common/admin.py @@ -105,7 +105,7 @@ ISHTAR_FORMS = [ class ImportGenericForm(forms.Form): csv_file = forms.FileField( label=_("CSV file"), - help_text=_("Only unicode encoding is managed - convert your" " file first"), + help_text=_("Only unicode encoding is managed - convert your file first"), ) @@ -2094,7 +2094,7 @@ class ApiUserAdmin(admin.ModelAdmin): list_display = ("user_ptr", "ip") -admin_site.register(models.ApiUser, ApiUserAdmin) +admin_site.register(models_rest.ApiUser, ApiUserAdmin) def get_main_content_types_query(): @@ -2110,7 +2110,7 @@ def get_main_content_types_query(): class ApiSearchModelAdminForm(forms.ModelForm): class Meta: - model = models.ApiUser + model = models_rest.ApiUser exclude = [] content_type = forms.ModelChoiceField( @@ -2123,7 +2123,7 @@ class ApiSearchModelAdmin(admin.ModelAdmin): list_display = ("user", "content_type") -admin_site.register(models.ApiSearchModel, ApiSearchModelAdmin) +admin_site.register(models_rest.ApiSearchModel, ApiSearchModelAdmin) def send_error_message(request, msg, message_type=messages.ERROR): @@ -2353,3 +2353,44 @@ class ApiKeyMatchAdmin(admin.ModelAdmin): admin_site.register(models_rest.ApiKeyMatch, ApiKeyMatchAdmin) + + +class ApiSheetFilterForm(forms.ModelForm): + api_search_model = forms.ModelChoiceField( + models_rest.ApiSearchModel.objects, + label=_("API - Remote access - Search model"), + ) + key = forms.ChoiceField( + label=_("Key"), + initial="-", + choices=(("-", "-"),), + help_text=_("Save first to choose a key"), + ) + + class Meta: + model = models_rest.ApiSheetFilter + fields = ["api_search_model", "key"] + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + instance = kwargs.get("instance") + if not instance: + return + if args: + query_dict = args[0] + query_dict._mutable = True + query_dict.setlist("api_search_model", [instance.api_search_model.pk]) + query_dict._mutable = False + self.fields["api_search_model"].widget.attrs = {'disabled': 'disabled'} + self.fields["key"].help_text = "" + self.fields["key"].choices = [(k, k) for k in instance.get_keys()] + + +class ApiSheetFilterAdmin(admin.ModelAdmin): + form = ApiSheetFilterForm + model = models_rest.ApiSheetFilter + list_display = ["api_search_model", "key"] + list_filter = ["api_search_model"] + + +admin_site.register(models_rest.ApiSheetFilter, ApiSheetFilterAdmin) -- cgit v1.2.3