a
    xdp                     @   s0   d dl mZmZ d dlmZ G dd deZdS )    )Http404JsonResponse)BaseListViewc                   @   s:   e Zd ZdZdZdZdd Zdd Zdd	 Zdd
dZ	dS )AutocompleteJsonViewz3Handle AutocompleteWidget's AJAX requests for data.   Nc                 O   s   | j |s tdt| j j | |s:tddiddS |jdd| _	| 
 | _|  }tdd	 |d
 D d|d  idS )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 c                 S   s    g | ]}t |jt |d qS ))idtext)strpk).0obj r   _/var/www/html/Ranjet/env/lib/python3.9/site-packages/django/contrib/admin/views/autocomplete.py
<listcomp>   s   z,AutocompleteJsonView.get.<locals>.<listcomp>object_listZmoreZpage_obj)resultsZ
pagination)model_adminZget_search_fieldsr   type__name__has_permr   GETgetr	   get_querysetr   Zget_context_dataZhas_next)selfrequestargskwargscontextr   r   r   r   
   s"    


zAutocompleteJsonView.getc                 O   s   | j j| jg|R i |S )zUse the ModelAdmin's paginator.)r   get_paginatorr   )r   r   r    r   r   r   r"   %   s    z"AutocompleteJsonView.get_paginatorc                 C   s6   | j | j}| j | j|| j\}}|r2| }|S )z9Return queryset based on ModelAdmin.get_search_results().)r   r   r   Zget_search_resultsr	   Zdistinct)r   qsZsearch_use_distinctr   r   r   r   )   s
    z!AutocompleteJsonView.get_querysetc                 C   s   | j j||dS )z9Check if user has permission to access the related model.)r   )r   Zhas_view_permission)r   r   r   r   r   r   r   1   s    zAutocompleteJsonView.has_perm)N)
r   
__module____qualname____doc__Zpaginate_byr   r   r"   r   r   r   r   r   r   r      s   r   N)Zdjango.httpr   r   Zdjango.views.generic.listr   r   r   r   r   r   <module>   s   