U
    adw                     @   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                       sL   e Zd ZdZdZdZdd Zee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)cssZjs)r   r   ZMedia)selfZjs_files r   C/tmp/pip-unpacked-wheel-portabvm/django_extensions/admin/widgets.py_media   s    zForeignKeySearchInput._mediac                 C   s4   | j  j}| j jjjf ||i}t|jdddS )N   z...)truncate)relZget_related_fieldnamemodelZ_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 kri }| j jj}|j}|j }td||f }| jsLtj	
|d| _|  }	|	rvdddd |	 D  }
nd}
d|krd	|d< tj| |||g}|r| |}nd}|
|| jd
| j||||d}|t| jpd||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> classZ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   Z_metar-   Zobject_namelowerr   r,   urllibparseurljoinZurl_parametersjoinitemsr   Z	TextInputrenderr   r   appendr   widget_templater   )r   r   r   r   Zrendereroptsr-   r.   r+   paramsr*   outputr/   contextr   r   r   r6   0   sH    




zForeignKeySearchInput.render)N)NN)__name__
__module____qualname____doc__r8   r,   r   propertyZmediar   r   r6   __classcell__r   r   r    r   r
      s   r
   )r1   Zdjangor   Zdjango.contrib.admin.sitesr   Zdjango.contrib.admin.widgetsr   Zdjango.template.loaderr   Zdjango.templatetags.staticr   Zdjango.urlsr   Zdjango.utils.safestringr   Zdjango.utils.textr	   r
   r   r   r   r   <module>   s   