Ë
    ¹ûàg!  ã                   ó^   — d dl mZ d dlmZ d dlmZmZ d dlmZm	Z	 d dl
mZ  G d„ de«      Zy)	é    )Úapps)ÚNotRegistered)ÚFieldDoesNotExistÚPermissionDenied)ÚHttp404ÚJsonResponse)ÚBaseListViewc                   ó>   — e Zd ZdZdZdZd„ Zd„ Zd„ Zd„ Z	d„ Z
d
d	„Zy)ÚAutocompleteJsonViewz3Handle AutocompleteWidget's AJAX requests for data.é   Nc           	      óR  — | j                  |«      \  | _        | _        | _        }| j	                  |«      st
        ‚| j                  «       | _        | j                  «       }t        |d   D �cg c]  }| j                  ||«      ‘Œ c}d|d   j                  «       idœ«      S c c}w )zÚ
        Return a JsonResponse with search results as defined in
        serialize_result(), by default:
        {
            results: [{id: "123" text: "foo"}],
            pagination: {more: true}
        }
        Úobject_listÚmoreÚpage_obj)ÚresultsÚ
pagination)Úprocess_requestÚtermÚmodel_adminÚsource_fieldÚhas_permr   Úget_querysetr   Úget_context_datar   Úserialize_resultÚhas_next)ÚselfÚrequestÚargsÚkwargsÚto_field_nameÚcontextÚobjs          úe/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/django/contrib/admin/views/autocomplete.pyÚgetzAutocompleteJsonView.get   s·   € ð × Ñ  Ó)ñ	
ØŒIØÔØÔØð �}‰}˜WÔ%Ü"Ð"à×,Ñ,Ó.ˆÔØ×'Ñ'Ó)ˆÜð  ' }Ñ5öàð ×)Ñ)¨#¨}Õ=òð  & w¨zÑ':×'CÑ'CÓ'EÐFñó
ð 	
ùòs   Á.B$c                 óD   — t        t        ||«      «      t        |«      dœS )zn
        Convert the provided model object to a dictionary that is added to the
        results list.
        )ÚidÚtext)ÚstrÚgetattr)r   r"   r    s      r#   r   z%AutocompleteJsonView.serialize_result-   s   € ô
 œ' # }Ó5Ó6ÄÀCÃÑIÐIó    c                 óV   —  | j                   j                  | j                  g|¢­i |¤ŽS )zUse the ModelAdmin's paginator.)r   Úget_paginatorr   )r   r   r   s      r#   r,   z"AutocompleteJsonView.get_paginator4   s)   € à-ˆt×Ñ×-Ñ-¨d¯l©lÐL¸TÒLÀVÑLÐLr*   c                 ó.  — | j                   j                  | j                  «      }|j                  | j                  j                  «       «      }| j                   j                  | j                  || j                  «      \  }}|r|j                  «       }|S )z9Return queryset based on ModelAdmin.get_search_results().)	r   r   r   Úcomplex_filterr   Úget_limit_choices_toÚget_search_resultsr   Údistinct)r   ÚqsÚsearch_use_distincts      r#   r   z!AutocompleteJsonView.get_queryset8   s{   € à×Ñ×*Ñ*¨4¯<©<Ó8ˆØ×Ñ˜t×0Ñ0×EÑEÓGÓHˆØ"&×"2Ñ"2×"EÑ"EØ�L‰L˜"˜dŸi™ió#
ÑˆÐñ Ø—‘“ˆBØˆ	r*   c                 ó¦  — |j                   j                  dd«      }	 |j                   d   }|j                   d   }|j                   d   }	 t	        j
                  ||«      }	 |j                  j                  |«      }	 |j                  j                  }		 | j                  j                  |	«      }
|
j!                  |«      s!t#        dt%        |
«      j&                  z  «      ‚t)        |j                  d|	j                  j*                  j,                  «      }|	j                  j                  |«      j,                  }|
j/                  ||«      st        ‚||
||fS # t        $ r}t        |‚d}~ww xY w# t        $ r}t        |‚d}~ww xY w# t        $ r}t        |‚d}~ww xY w# t        $ r}t        |‚d}~ww xY w# t        $ r}t        |‚d}~ww xY w)a†  
        Validate request integrity, extract and return request parameters.

        Since the subsequent view permission check requires the target model
        admin, which is determined here, raise PermissionDenied if the
        requested app, model or field are malformed.

        Raise Http404 if the target model admin is not configured properly with
        search_fields.
        r   Ú Ú	app_labelÚ
model_nameÚ
field_nameNz5%s must have search_fields for the autocomplete_view.)ÚGETr$   ÚKeyErrorr   r   Ú	get_modelÚLookupErrorÚ_metaÚ	get_fieldr   Úremote_fieldÚmodelÚAttributeErrorÚ
admin_siteÚget_model_adminr   Úget_search_fieldsr   ÚtypeÚ__qualname__r)   ÚpkÚattnameÚto_field_allowed)r   r   r   r6   r7   r8   ÚeÚsource_modelr   Úremote_modelr   r    s               r#   r   z$AutocompleteJsonView.process_requestC   sÆ  € ð �{‰{�‰˜v rÓ*ˆð	*ØŸ™ KÑ0ˆIØ Ÿ™ \Ñ2ˆJØ Ÿ™ \Ñ2ˆJð
	*ÜŸ>™>¨)°ZÓ@ˆLð	*Ø'×-Ñ-×7Ñ7¸
ÓCˆLð	*Ø'×4Ñ4×:Ñ:ˆLð	*ØŸ/™/×9Ñ9¸,ÓGˆKð
 ×,Ñ,¨WÔ5ÜØGÜ�{Ó#×0Ñ0ñ1óð ô
  Ø×%Ñ% |°\×5GÑ5G×5JÑ5J×5RÑ5Ró
ˆð %×*Ñ*×4Ñ4°]ÓC×KÑKˆØ×+Ñ+¨G°]ÔCÜ"Ð"à�[ ,°Ð=Ð=øôI ò 	*Ü"¨Ð)ûð	*ûô ò 	*Ü"¨Ð)ûð	*ûô
 !ò 	*Ü"¨Ð)ûð	*ûô ò 	*Ü"¨Ð)ûð	*ûô ò 	*Ü"¨Ð)ûð	*úsw   ž-E ÁE3 Á#F Á?F# ÂF; Å	E0Å$E+Å+E0Å3	FÅ<FÆFÆ	F ÆFÆF Æ#	F8Æ,F3Æ3F8Æ;	GÇGÇGc                 ó<   — | j                   j                  ||¬«      S )z9Check if user has permission to access the related model.)r"   )r   Úhas_view_permission)r   r   r"   s      r#   r   zAutocompleteJsonView.has_permy   s   € à×Ñ×3Ñ3°GÀÐ3ÓEÐEr*   )N)Ú__name__Ú
__module__rF   Ú__doc__Úpaginate_byrB   r$   r   r,   r   r   r   © r*   r#   r   r      s1   „ Ù=à€KØ€Jò
ò>JòMò	ò4>ôlFr*   r   N)Údjango.appsr   Údjango.contrib.admin.exceptionsr   Údjango.core.exceptionsr   r   Údjango.httpr   r   Údjango.views.generic.listr	   r   rS   r*   r#   ú<module>rY      s$   ðÝ Ý 9ß Fß -Ý 2ôsF˜<õ sFr*   