
^Q\;                 @   s0  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 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+  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 j4 j5  Z6 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)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#   B/var/www/dbchiro/venv/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               @   sd   e  Z d  Z d d d d  Z d d   Z e d d    Z e d d	    Z e d
 d    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+   r/   r1   r3   r2   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)Nr3   r2   )r/   Fieldsetr+   r3   r2   )r4   nameoptionsr#   r#   r$   __iter__3   s    	zAdminForm.__iter__c             C   s
   |  j  j S)N)r+   errors)r4   r#   r#   r$   r:   <   s    zAdminForm.errorsc             C   s
   |  j  j S)N)r+   non_field_errors)r4   r#   r#   r$   r;   @   s    zAdminForm.non_field_errorsc             C   s.   |  j  j } x |  D] } | | j } q W| S)N)r+   media)r4   r<   fsr#   r#   r$   r<   D   s    zAdminForm.media)	r   r   r    r5   r9   propertyr:   r;   r<   r#   r#   r#   r$   r'   '   s
   	r'   c               @   sL   e  Z d  Z d f  f  f  d d d d  Z e d d    Z d d   Z d S)r6   Nc             C   sM   | |  _  | | |  _ |  _ d j |  |  _ | |  _ | |  _ | |  _ d  S)N )r+   r7   fieldsjoinclassesdescriptionr2   r3   )r4   r+   r7   r3   r@   rB   rC   r2   r#   r#   r$   r5   M   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,   _   s   	 z"Fieldset.media.<locals>.<listcomp>)rB   r   DEBUGr   ZMedia)r4   extrarD   r#   r#   r$   r<   V   s    zFieldset.mediac             c   s8   x1 |  j  D]& } t |  j | |  j d |  j Vq
 Wd  S)Nr2   )r@   	Fieldliner+   r3   r2   )r4   r(   r#   r#   r$   r9   b   s    zFieldset.__iter__)r   r   r    r5   r>   r<   r9   r#   r#   r#   r$   r6   L   s   r6   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)Nr9   c             3   s7   |  ]- } |   j  j k o.   j  j | j j Vq d  S)N)r+   r@   r   	is_hidden)r)   r(   )r4   r#   r$   	<genexpr>o   s   z%Fieldline.__init__.<locals>.<genexpr>)
r+   hasattr
isinstancer   	text_typer@   allZhas_visible_fieldr2   r3   )r4   r+   r(   r3   r2   r#   )r4   r$   r5   h   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   r2   )	enumerater@   r3   AdminReadonlyFieldr+   r2   
AdminField)r4   ir(   r#   r#   r$   r9   w   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)r3   r+   r:   as_ul)r)   r*   )r4   r#   r$   rJ      s    z#Fieldline.errors.<locals>.<genexpr>)r   rA   r@   strip)r4   r#   )r4   r$   r:   ~   s    zFieldline.errors)r   r   r    r5   r9   r:   r#   r#   r#   r$   rH   g   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)r4   r+   r(   rO   r#   r#   r$   r5      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   rX   appendr   rO   rA   	label_tagr   )r4   rB   r[   r\   r#   r#   r$   r^      s    		"zAdminField.label_tagc             C   s   t  |  j j j    S)N)r   r(   r:   rU   )r4   r#   r#   r$   r:      s    zAdminField.errorsN)r   r   r    r5   r^   r:   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   r7   r   	help_textr(   FT)callabler   _metalabelsr   modelZ
help_textsr   r(   r+   r2   rO   rX   rY   Zget_empty_value_displayempty_value_display)r4   r+   r(   rO   r2   
class_namer   r_   r#   r#   r$   r5      s(    !					zAdminReadonlyField.__init__c             C   sK   i  } |  j  s d | d <n  |  j d } t d t |  t t |    S)NrZ   r   r   z<label{}>{}:</label>)rO   r(   r   r   r   r   )r4   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_listrf   r(   r+   instancer2   r	   AttributeError
ValueErrorr
   rd   getattrrK   r   warningswarnr   r   r   rL   Zremote_fieldr   rA   mapr   rM   rN   r   r   )
r4   rf   r(   objr2   r*   attrr%   Zresult_reprrg   r#   r#   r$   r[      s2    $	$zAdminReadonlyField.contents)r   r   r    r5   r^   r[   r#   r#   r#   r$   rQ      s    	rQ   c               @   s   e  Z d  Z d Z d d d d d  Z d d   Z d d   Z d	 d
   Z e d d    Z	 e d d    Z
 e d d    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formsetr/   r2   r3   r1   rB   rA   )r4   rZ   rs   r/   r1   r3   r2   r#   r#   r$   r5      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)Nr2   view_on_site_url)ziprs   Zinitial_formsZget_querysetrr   Zget_view_on_site_urlInlineAdminFormr/   r1   r3   Zextra_forms
empty_form)r4   r+   originalrt   r#   r#   r$   r9     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_   )rk   rs   rP   r   r/   r7   r3   r   rr   rc   r   rw   r@   r   r   r   r_   )r4   ry   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#%sr7   prefixzAdd another %(verbose_name)sverbose_nameZaddTextZRemoveZ
deleteTextr8   )rr   r{   jsondumpsrs   rz   r   r   )r4   r{   r#   r#   r$   inline_formset_data.  s    	z&InlineAdminFormSet.inline_formset_datac             C   s
   |  j  j S)N)rs   r   )r4   r#   r#   r$   r   ;  s    zInlineAdminFormSet.formsc             C   s
   |  j  j S)N)rs   non_form_errors)r4   r#   r#   r$   r   ?  s    z"InlineAdminFormSet.non_form_errorsc             C   s8   |  j  j |  j j } x |  D] } | | j } q W| S)N)rr   r<   rs   )r4   r<   r=   r#   r#   r$   r<   C  s    zInlineAdminFormSet.media)r   r   r    __doc__r5   r9   r@   r~   r>   r   r   r<   r#   r#   r#   r$   rq      s   rq   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)rv   zF
    A wrapper around an inline form for use in the admin system.
    Nc	       	         s_   | |  _  | |  _ | |  _ | o* | d  k	 |  _ | |  _ t t |   j | | | | |  d  S)N)rs   r2   rx   show_urlZabsolute_urlsuperrv   r5   )	r4   rs   r+   r/   r1   rx   r3   r2   rt   )	__class__r#   r$   r5   O  s    				zInlineAdminForm.__init__c          	   c   sG   x@ |  j  D]5 \ } } t |  j |  j | |  j d |  j | Vq
 Wd  S)Nr2   )r/   InlineFieldsetrs   r+   r3   r2   )r4   r7   r8   r#   r#   r$   r9   X  s    zInlineAdminForm.__iter__c             C   s   |  j  j j j j s. |  j  j j j j j r2 d SxF |  j  j j j j   D], } | j j ss | j j j j j rK d SqK Wd S)NTF)r+   ra   rc   Z
auto_fieldpkeditableZget_parent_list)r4   parentr#   r#   r$   needs_explicit_pk_field_  s    ."z'InlineAdminForm.needs_explicit_pk_fieldc             C   s   t  |  j |  j j j d  S)NF)rR   r+   rs   Z	_pk_fieldr7   )r4   r#   r#   r$   pk_fieldj  s    zInlineAdminForm.pk_fieldc             C   s9   t  |  j d d   } | r1 t |  j | j d  Sd Sd  S)Nry   Fr   )rk   rs   rR   r+   r7   )r4   ry   r#   r#   r$   fk_fieldm  s    zInlineAdminForm.fk_fieldc             C   s#   d d l  m } t |  j | d  S)Nr   )DELETION_FIELD_NAMEF)django.forms.formsetsr   rR   r+   )r4   r   r#   r#   r$   deletion_fieldt  s    zInlineAdminForm.deletion_fieldc             C   s#   d d l  m } t |  j | d  S)Nr   )ORDERING_FIELD_NAMEF)r   r   rR   r+   )r4   r   r#   r#   r$   ordering_fieldx  s    zInlineAdminForm.ordering_field)r   r   r    r   r5   r9   r   r   r   r   r   r#   r#   )r   r$   rv   K  s   rv   c                   s.   e  Z d  Z   f d d   Z d d   Z   S)r   c                s&   | |  _  t t |   j | |   d  S)N)rs   r   r   r5   )r4   rs   argskwargs)r   r#   r$   r5   ~  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)Nry   r2   )rk   rs   r@   r7   rH   r+   r3   r2   )r4   ry   r(   r#   r#   r$   r9     s
    zInlineFieldset.__iter__)r   r   r    r5   r9   r#   r#   )r   r$   r   }  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   r5   Zis_boundextendr:   valuesr   )r4   r+   Zinline_formsetsZinline_formsetZerrors_in_inline_form)r   r#   r$   r5     s    	zAdminErrorList.__init__)r   r   r    r   r5   r#   r#   )r   r$   r     s   r   )7
__future__r   r|   rl   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   Zdjango.utils.htmlr   r   Zdjango.utils.safestringr   Zdjango.utils.translationr   r   r!   ZACTION_CHECKBOX_NAMEZFormr   rW   Zcheckboxobjectr'   r6   rH   rR   rQ   rq   rv   r   utilsZ	ErrorListr   r#   r#   r#   r$   <module>   s6   (
%NZ2