o
    /h!                     @   s|   d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d d	lmZ G d
d deZdS )    N)forms)site)ForeignKeyRawIdWidget)render_to_string)static)reverse)	mark_safe)	Truncatorc                       sH   e Zd ZdZdZdZedd Zdd Zd fdd	Z	dd	d
Z
  ZS )ForeignKeySearchInputzj
    Widget for displaying ForeignKeys in an autocomplete search input
    instead in a <select> box.
    Nc                 C   s.   t dt dt dg}tjdt dfi|dS )Nz'django_extensions/js/jquery.bgiframe.jsz(django_extensions/js/jquery.ajaxQueue.jsz+django_extensions/js/jquery.autocomplete.jsallz-django_extensions/css/jquery.autocomplete.css)cssjs)r   r   Media)selfjs_files r   Z/var/www/html/env_mimamsha/lib/python3.10/site-packages/django_extensions/admin/widgets.pymedia   s   zForeignKeySearchInput.mediac                 C   s8   | j  j}| j jjjdi ||i}t|jdddS )N   z...)truncater   )relget_related_fieldnamemodel_default_managergetr	   words)r   valuekeyobjr   r   r   label_for_value&   s   z%ForeignKeySearchInput.label_for_valuec                    s   || _ t |t| d S N)search_fieldssuper__init__r   )r   r   r"   attrs	__class__r   r   r$   ,   s   zForeignKeySearchInput.__init__c              	   C   s  |d u ri }| j jj}|j}|j }td||f }| js&tj	
|d| _|  }	|	r;dddd |	 D  }
nd}
d|vrEd	|d< tj| |||g}|rW| |}nd}|
|| jd
| j||||d}|t| jpyd||f d| df| |  td|S )Nzadmin:%s_%s_changelistzforeignkey_autocomplete/?z&amp;c                 S   s   g | ]
\}}d ||f qS )z%s=%sr   ).0kvr   r   r   
<listcomp>=   s    z0ForeignKeySearchInput.render.<locals>.<listcomp> classvForeignKeyRawIdAdminField,)urlrelated_urlsearch_pathr"   	app_label
model_namelabelr   z;django_extensions/widgets/%s/%s/foreignkey_searchinput.htmlz8django_extensions/widgets/%s/foreignkey_searchinput.htmlz5django_extensions/widgets/foreignkey_searchinput.html)r   r   _metar4   object_namelowerr   r3   urllibparseurljoinurl_parametersjoinitemsr   	TextInputrenderr    r"   appendr   widget_templater   )r   r   r   r%   rendereroptsr4   r5   r2   paramsr1   outputr6   contextr   r   r   rA   0   sZ   



zForeignKeySearchInput.renderr!   )NN)__name__
__module____qualname____doc__rC   r3   propertyr   r    r$   rA   __classcell__r   r   r&   r   r
      s    
r
   )r:   djangor   django.contrib.admin.sitesr   django.contrib.admin.widgetsr   django.template.loaderr   django.templatetags.staticr   django.urlsr   django.utils.safestringr   django.utils.textr	   r
   r   r   r   r   <module>   s   