
 X:                 @   s6  d  d l  m Z d  d l Z d  d l Z d  d l m Z d  d l m Z d  d l m	 Z	 m
 Z
 m Z m Z m Z d  d l m Z d  d l m Z d  d l m Z d  d	 l m Z m Z 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" d  d l# m$ Z$ m% Z& d Z' Gd d   d e j(  Z) e j* i d d 6d d    Z+ Gd d   d e,  Z- Gd d   d e,  Z. Gd d   d e,  Z/ Gd d   d e,  Z0 Gd d    d  e,  Z1 Gd! d"   d" e,  Z2 Gd# d$   d$ e-  Z3 Gd% d&   d& e.  Z4 Gd' d(   d( e j5 j6  Z7 d S))    )unicode_literalsN)forms)settings)display_for_fieldflatten_fieldsetshelp_text_for_fieldlabel_for_fieldlookup_field)ObjectDoesNotExist)ManyToManyRel)flatatt)capfirstlinebreaksbr)six)RemovedInDjango20Warning)
force_text
smart_text)conditional_escapeformat_html)	mark_safe)ugettextugettext_lazyZ_selected_actionc               @   s\   e  Z d  Z e j d e d   Z e j d d d d d d d e j i d	 d
 6  Z	 d S)
ActionFormlabelzAction: requiredFinitialr   widgetzselect-acrossclassN)
__name__
__module____qualname__r   ZChoiceField_actionZBooleanFieldZHiddenInputZselect_across r$   r$   J/home/ubuntu/projects/ifolica/build/django/django/contrib/admin/helpers.pyr      s   	r   zaction-selectr   c             C   s   d S)NFr$   )valuer$   r$   r%   <lambda>#   s    r'   c               @   sF   e  Z d  Z d d d d  Z d d   Z d d   Z e e  Z d S)	AdminFormNc                s`     | |  _  |  _   f d d   | j   D |  _ | |  _ | d  k rS f  } n  | |  _ d  S)Nc                sA   g  |  ]7 \ } } i   | d  6  f d d   | D d 6 q S)fieldc                s   g  |  ] }   |  q Sr$   r$   ).0f)formr$   r%   
<listcomp>+   s   	 z1AdminForm.__init__.<locals>.<listcomp>.<listcomp>dependenciesr$   )r*   
field_namer.   )r,   r$   r%   r-   )   s   	z&AdminForm.__init__.<locals>.<listcomp>)r,   	fieldsetsitemsprepopulated_fieldsmodel_adminreadonly_fields)selfr,   r0   r2   r4   r3   r$   )r,   r%   __init__'   s    		zAdminForm.__init__c          	   c   sD   x= |  j  D]2 \ } } t |  j | d |  j d |  j | Vq
 Wd  S)Nr4   r3   )r0   Fieldsetr,   r4   r3   )r5   nameoptionsr$   r$   r%   __iter__2   s    	zAdminForm.__iter__c             C   s.   |  j  j } x |  D] } | | j } q W| S)N)r,   media)r5   r;   fsr$   r$   r%   _media;   s    zAdminForm._media)r   r    r!   r6   r:   r=   propertyr;   r$   r$   r$   r%   r(   &   s   	r(   c               @   sR   e  Z d  Z d f  f  f  d d d d  Z d d   Z e e  Z d d   Z d S)r7   Nc             C   sM   | |  _  | | |  _ |  _ d j |  |  _ | |  _ | |  _ | |  _ d  S)N )r,   r8   fieldsjoinclassesdescriptionr3   r4   )r5   r,   r8   r4   r@   rB   rC   r3   r$   r$   r%   r6   D   s    			zFieldset.__init__c             C   sb   d |  j  k rX t j r d n d } d | d d | g } t j d d d	   | D  St j   S)
NZcollapser   z.minzvendor/jquery/jquery%s.jszjquery.init.jszcollapse%s.jsjsc             S   s   g  |  ] } d  |  q S)zadmin/js/%sr$   )r*   urlr$   r$   r%   r-   U   s   	 z#Fieldset._media.<locals>.<listcomp>)rB   r   DEBUGr   ZMedia)r5   extrarD   r$   r$   r%   r=   M   s    zFieldset._mediac             c   s8   x1 |  j  D]& } t |  j | |  j d |  j Vq
 Wd  S)Nr3   )r@   	Fieldliner,   r4   r3   )r5   r)   r$   r$   r%   r:   Y   s    zFieldset.__iter__)r   r    r!   r6   r=   r>   r;   r:   r$   r$   r$   r%   r7   C   s
   
r7   c               @   s:   e  Z d  Z d d d d  Z d d   Z d d   Z d S)rH   Nc                s   |   _  t | d  s+ t | t j  r: | g   _ n	 |   _ t   f d d     j D    _ |   _ | d  k r f  } n  |   _	 d  S)Nr:   c             3   s7   |  ]- } |   j  j k o.   j  j | j j Vq d  S)N)r,   r@   r   	is_hidden)r*   r)   )r5   r$   r%   	<genexpr>f   s   z%Fieldline.__init__.<locals>.<genexpr>)
r,   hasattr
isinstancer   	text_typer@   allZhas_visible_fieldr3   r4   )r5   r,   r)   r4   r3   r$   )r5   r%   r6   _   s    	"			zFieldline.__init__c             c   sy   xr t  |  j  D]a \ } } | |  j k rT t |  j | d | d k d |  j Vq t |  j | d | d k Vq Wd  S)Nis_firstr   r3   )	enumerater@   r4   AdminReadonlyFieldr,   r3   
AdminField)r5   ir)   r$   r$   r%   r:   n   s    )zFieldline.__iter__c                s2   t  d j   f d d     j D  j d   S)N
c             3   s4   |  ]* } |   j  k r   j | j j   Vq d  S)N)r4   r,   errorsas_ul)r*   r+   )r5   r$   r%   rJ   x   s    z#Fieldline.errors.<locals>.<genexpr>)r   rA   r@   strip)r5   r$   )r5   r%   rU   u   s    zFieldline.errors)r   r    r!   r6   r:   rU   r$   r$   r$   r%   rH   ^   s   rH   c               @   s4   e  Z d  Z d d   Z d d   Z d d   Z d S)rR   c             C   sA   | | |  _  | |  _ t |  j  j  j t j  |  _ d |  _ d  S)NF)r)   rO   rL   r   r   CheckboxInputis_checkboxis_readonly)r5   r,   r)   rO   r$   r$   r%   r6   ~   s    	zAdminField.__init__c             C   s   g  } t  t |  j j   } |  j r7 | j d  n  |  j j j rV | j d  n  |  j so | j d  n  | r i d j |  d 6n i  } |  j j	 d t
 |  d | d |  j r d	 n d   S)
NZvCheckboxLabelr   inliner?   r   contentsattrsZlabel_suffixr   )r   r   r)   r   rY   appendr   rO   rA   	label_tagr   )r5   rB   r\   r]   r$   r$   r%   r_      s    		"zAdminField.label_tagc             C   s   t  |  j j j    S)N)r   r)   rU   rV   )r5   r$   r$   r%   rU      s    zAdminField.errorsN)r   r    r!   r6   r_   rU   r$   r$   r$   r%   rR   }   s   rR   c               @   s7   e  Z d  Z d d d  Z d d   Z d d   Z d S)rQ   Nc             C   s'  t  |  r- | j d k r$ | j n d } n | } | j j rd | | j j k rd | j j | } n t | | j j |  } | j j r | | j j k r | j j | } n t | | j j  } i | d 6| d 6| d 6| d 6|  _ | |  _	 | |  _
 | |  _ d |  _ d |  _ | j   |  _ d  S)	Nz<lambda>r   r8   r   	help_textr)   FT)callabler   _metalabelsr   modelZ
help_textsr   r)   r,   r3   rO   rY   rZ   Zget_empty_value_displayempty_value_display)r5   r,   r)   rO   r3   
class_namer   r`   r$   r$   r%   r6      s(    !					zAdminReadonlyField.__init__c             C   sK   i  } |  j  s d | d <n  |  j d } t d t |  t t |    S)Nr[   r   r   z<label{}>{}:</label>)rO   r)   r   r   r   r   )r5   r]   r   r$   r$   r%   r_      s    		zAdminReadonlyField.label_tagc       
      C   s  d d l  m } |  j d |  j j |  j } } } y t | | |  \ } } } Wn$ t t t	 f k
 ry |  j
 } Yn X| d  k rt | d d  }	 |	 r | |  } qxt | d  r | } qxt |  } t | d d  rt j d | t  t |  } qxt |  } nc t | j t  rW| d  k	 rWd	 j t t j | j     } n t | | |  j
  } t |  } t |  S)
Nr   )_boolean_iconr)   booleanFZ__html__Z
allow_tagszDeprecated allow_tags attribute used on %s. Use django.utils.html.format_html(), format_html_join(), or django.utils.safestring.mark_safe() instead.z, )Z,django.contrib.admin.templatetags.admin_listrg   r)   r,   instancer3   r	   AttributeError
ValueErrorr
   re   getattrrK   r   warningswarnr   r   r   rL   Zremote_fieldr   rA   mapr   rM   rN   r   r   )
r5   rg   r)   objr3   r+   attrr&   Zresult_reprrh   r$   r$   r%   r\      s2    $	$zAdminReadonlyField.contents)r   r    r!   r6   r_   r\   r$   r$   r$   r%   rQ      s    	rQ   c               @   sg   e  Z d  Z d Z d d d d d  Z d d   Z d d   Z d	 d
   Z d d   Z e	 e  Z
 d S)InlineAdminFormSetzI
    A wrapper around an inline formset for use in the admin system.
    Nc             C   s   | |  _  | |  _ | |  _ | |  _ | d  k r9 f  } n  | |  _ | d  k rW i  } n  | |  _ | j r{ d j | j  n d |  _ d  S)Nr?   r   )optsformsetr0   r3   r4   r2   rB   rA   )r5   r[   rt   r0   r2   r4   r3   r$   r$   r%   r6      s    								zInlineAdminFormSet.__init__c             c   s   xs t  |  j j |  j j    D]S \ } } |  j j |  } t |  j | |  j |  j | |  j	 d |  j d | Vq WxC |  j j
 D]5 } t |  j | |  j |  j d  |  j	 d |  j Vq Wt |  j |  j j |  j |  j d  |  j	 d |  j Vd  S)Nr3   view_on_site_url)ziprt   Zinitial_formsZget_querysetrs   Zget_view_on_site_urlInlineAdminFormr0   r2   r4   Zextra_forms
empty_form)r5   r,   originalru   r$   r$   r%   r:      s    +zInlineAdminFormSet.__iter__c             c   s(  t  |  j d d   } xt t |  j   D] \ } } | rR | j | k rR q+ n  | |  j k r i t | |  j j	 |  j  d 6i d d 6d 6d d 6t
 | |  j j	  d 6Vq+ |  j j j | } | j } | d  k r t | |  j j	 |  j  } n  i | d 6| j d 6| j d 6| j d 6Vq+ Wd  S)Nfkr   FrI   r   r   r`   )rl   rt   rP   r   r0   r8   r4   r   rs   rd   r   rx   r@   r   r   r   r`   )r5   rz   rS   r/   Z
form_fieldr   r$   r$   r%   r@     s&    "	

zInlineAdminFormSet.fieldsc             C   si   |  j  j } t j i d |  j j d 6i |  j j d 6t d  i t |  d 6d 6t d  d 6d	 6 S)
Nz#%sr8   prefixzAdd another %(verbose_name)sverbose_nameZaddTextZRemoveZ
deleteTextr9   )rs   r|   jsondumpsrt   r{   r   r   )r5   r|   r$   r$   r%   inline_formset_data%  s    	z&InlineAdminFormSet.inline_formset_datac             C   s8   |  j  j |  j j } x |  D] } | | j } q W| S)N)rs   r;   rt   )r5   r;   r<   r$   r$   r%   r=   2  s    zInlineAdminFormSet._media)r   r    r!   __doc__r6   r:   r@   r   r=   r>   r;   r$   r$   r$   r%   rr      s   rr   c                   sy   e  Z d  Z d Z d d d   f d d  Z d d   Z d d   Z d	 d
   Z d d   Z d d   Z	 d d   Z
   S)rw   zF
    A wrapper around an inline form for use in the admin system.
    Nc	       	         s_   | |  _  | |  _ | |  _ | o* | d  k	 |  _ | |  _ t t |   j | | | | |  d  S)N)rt   r3   ry   show_urlZabsolute_urlsuperrw   r6   )	r5   rt   r,   r0   r2   ry   r4   r3   ru   )	__class__r$   r%   r6   >  s    				zInlineAdminForm.__init__c          	   c   sG   x@ |  j  D]5 \ } } t |  j |  j | |  j d |  j | Vq
 Wd  S)Nr3   )r0   InlineFieldsetrt   r,   r4   r3   )r5   r8   r9   r$   r$   r%   r:   G  s    zInlineAdminForm.__iter__c             C   si   |  j  j j j j s. |  j  j j j j j r2 d Sx0 |  j  j j j j   D] } | j j rK d SqK Wd S)NTF)r,   rb   rd   Zhas_auto_fieldpkeditableZget_parent_list)r5   parentr$   r$   r%   needs_explicit_pk_fieldN  s    .z'InlineAdminForm.needs_explicit_pk_fieldc             C   s   t  |  j |  j j j d  S)NF)rR   r,   rt   Z	_pk_fieldr8   )r5   r$   r$   r%   pk_fieldY  s    zInlineAdminForm.pk_fieldc             C   s9   t  |  j d d   } | r1 t |  j | j d  Sd Sd  S)Nrz   Fr   )rl   rt   rR   r,   r8   )r5   rz   r$   r$   r%   fk_field\  s    zInlineAdminForm.fk_fieldc             C   s#   d d l  m } t |  j | d  S)Nr   )DELETION_FIELD_NAMEF)django.forms.formsetsr   rR   r,   )r5   r   r$   r$   r%   deletion_fieldc  s    zInlineAdminForm.deletion_fieldc             C   s#   d d l  m } t |  j | d  S)Nr   )ORDERING_FIELD_NAMEF)r   r   rR   r,   )r5   r   r$   r$   r%   ordering_fieldg  s    zInlineAdminForm.ordering_field)r   r    r!   r   r6   r:   r   r   r   r   r   r$   r$   )r   r%   rw   :  s   rw   c                   s.   e  Z d  Z   f d d   Z d d   Z   S)r   c                s&   | |  _  t t |   j | |   d  S)N)rt   r   r   r6   )r5   rt   argskwargs)r   r$   r%   r6   m  s    	zInlineFieldset.__init__c             c   sh   t  |  j d d   } xL |  j D]A } | r@ | j | k r@ q n  t |  j | |  j d |  j Vq Wd  S)Nrz   r3   )rl   rt   r@   r8   rH   r,   r4   r3   )r5   rz   r)   r$   r$   r%   r:   q  s
    zInlineFieldset.__iter__)r   r    r!   r6   r:   r$   r$   )r   r%   r   l  s   r   c                   s(   e  Z d  Z d Z   f d d   Z   S)AdminErrorListzN
    Stores all errors for the form/formsets in an add/change stage view.
    c                s   t  t |   j   | j r |  j | j j    xK | D]@ } |  j | j    x$ | j D] } |  j | j    q\ Wq9 Wn  d  S)N)r   r   r6   Zis_boundextendrU   valuesZnon_form_errors)r5   r,   Zinline_formsetsZinline_formsetZerrors_in_inline_form)r   r$   r%   r6   }  s    	zAdminErrorList.__init__)r   r    r!   r   r6   r$   r$   )r   r%   r   y  s   r   )8
__future__r   r}   rm   Zdjangor   Zdjango.confr   Zdjango.contrib.admin.utilsr   r   r   r   r	   Zdjango.core.exceptionsr
   Zdjango.db.models.fields.relatedr   Zdjango.forms.utilsr   Zdjango.template.defaultfiltersr   r   Zdjango.utilsr   Zdjango.utils.deprecationr   Zdjango.utils.encodingr   r   Zdjango.utils.htmlr   r   Zdjango.utils.safestringr   Zdjango.utils.translationr   r   r"   ZACTION_CHECKBOX_NAMEZFormr   rX   Zcheckboxobjectr(   r7   rH   rR   rQ   rr   rw   r   utilsZ	ErrorListr   r$   r$   r$   r%   <module>   s6   (	NR2