
    hp                     6    d dl mZmZ d dlmZ  G d de      Zy)    )Http404JsonResponse)BaseListViewc                   2    e 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           	         | j                   j                  |      s+t        dt        | j                         j                  z        | j                  |      st        ddid      S |j                  j                  dd      | _	        | j                         | _        | j                         }t        |d   D cg c]#  }t        |j                        t        |      d	% c}d
|d   j                         id      S c c}w )z
        Return a JsonResponse with search results of the form:
        {
            results: [{id: "123" text: "foo"}],
            pagination: {more: true}
        }
        z5%s must have search_fields for the autocomplete_view.errorz403 Forbiddeni  )statusterm object_list)idtextmorepage_obj)results
pagination)model_adminget_search_fieldsr   type__name__has_permr   GETgetr   get_querysetr   get_context_datastrpkhas_next)selfrequestargskwargscontextobjs         j/var/www/html/ranktracker/api/venv/lib/python3.12/site-packages/django/contrib/admin/views/autocomplete.pyr   zAutocompleteJsonView.get
   s     11':GT%%&//0  }}W%/ :3GGKKOOFB/	,,.'') #=1 366{CH5 "7:#6#?#?#AB
  	s   9(C>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_paginator%   s)    -t--dllLTLVLL    c                     | j                   j                  | j                        }| j                   j                  | j                  || j                        \  }}|r|j                         }|S )z9Return queryset based on ModelAdmin.get_search_results().)r   r   r"   get_search_resultsr   distinct)r!   qssearch_use_distincts      r'   r   z!AutocompleteJsonView.get_queryset)   s[    **4<<8"&"2"2"E"EdllTVX\XaXa"bB	r*   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_perm1   s    33G3EEr*   )N)
r   
__module____qualname____doc__paginate_byr   r   r)   r   r    r*   r'   r   r      s%    =KK6MFr*   r   N)django.httpr   r   django.views.generic.listr   r   r6   r*   r'   <module>r9      s    - 2.F< .Fr*   