
    k"gH                        d dl Z d dlmZ d dlmZmZmZmZmZm	Z	 d dl
mZ d dlmZmZ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 dlmZ d dlm Z  d dlm!Z" dZ# G d dejH                        Z% G d d      Z& G d d      Z' G d d      Z( G d d      Z) G d d      Z* G d d      Z+ G d de&      Z, G d d e'      Z- G d! d"ej\                  j^                        Z0y)#    N)forms)display_for_fieldflatten_fieldsetshelp_text_for_fieldlabel_for_fieldlookup_fieldquote)ObjectDoesNotExist)ForeignObjectRelManyToManyRelOneToOneField)flatatt)capfirstlinebreaksbr)NoReverseMatchreverse)cached_property)conditional_escapeformat_html)	mark_safe)gettext)gettext_lazy_selected_actionc            	           e Zd Z ej                   ed            Z ej                  ddd ej                  ddi            Z	y	)

ActionFormzAction:)label Fr   classzselect-across)r   requiredinitialwidgetN)
__name__
__module____qualname__r   ChoiceField_actionBooleanFieldHiddenInputselect_across     U/var/www/html/djangosite/lib/python3.12/site-packages/django/contrib/admin/helpers.pyr   r      sH    UQy\2F&E&& u  '?!;<	Mr,   r   c                   t    e Zd Z	 	 d
dZd Zd Zed        Zed        Zed        Z	ed        Z
ed	        Zy)	AdminFormNc                     ||c| _         | _        |j                         D cg c]  \  }}||   |D cg c]  }||   	 c}d  c}}}| _        || _        |d}|| _        y c c}w c c}}}w )N)fielddependenciesr+   )form	fieldsetsitemsprepopulated_fieldsmodel_adminreadonly_fields)	selfr3   r4   r6   r8   r7   
field_namer2   fs	            r-   __init__zAdminForm.__init__)   s     %))!	4> -@,E,E,G$
 $
(
L :&,8WQa8WX$
  '" O. 9X$
s   A)A$ A)$A)c                     d| j                   j                   d| j                  j                   j                   d| j                  dS )N<z: form=z fieldsets=>)	__class__r$   r3   r4   r9   s    r-   __repr__zAdminForm.__repr__;   sJ    ++, -II''445 6*!-	
r,   c              #      K   | j                   D ]5  \  }}t        | j                  |f| j                  | j                  d| 7 y w)N)r8   r7   )r4   Fieldsetr3   r8   r7   r9   nameoptionss      r-   __iter__zAdminForm.__iter__B   sW     !^^ 	MD'		 !% 4 4 ,,	
  	s   AAc                 .    | j                   j                  S N)r3   errorsrA   s    r-   rK   zAdminForm.errorsL       yyr,   c                 .    | j                   j                  S rJ   )r3   non_field_errorsrA   s    r-   rN   zAdminForm.non_field_errorsP   s    yy)))r,   c                 .    | j                   j                  S rJ   )r3   fieldsrA   s    r-   rP   zAdminForm.fieldsT   rL   r,   c                 .    | j                   j                  S rJ   )r3   is_boundrA   s    r-   rR   zAdminForm.is_boundX   s    yy!!!r,   c                 ^    | j                   j                  }| D ]  }||j                  z  } |S rJ   )r3   mediar9   rT   fss      r-   rT   zAdminForm.media\   s1    		 	BRXXE	r,   NN)r"   r#   r$   r<   rB   rH   propertyrK   rN   rP   rR   rT   r+   r,   r-   r/   r/   (   s}     /$
     * *     " "  r,   r/   c                   F    e Zd Z	 	 	 	 	 	 ddZed        Zed        Zd Zy)rD   Nc                     || _         ||c| _        | _        dj                  |      | _        || _        || _        || _        y )N )r3   rF   rP   joinclassesdescriptionr7   r8   )r9   r3   rF   r8   rP   r]   r^   r7   s           r-   r<   zFieldset.__init__e   sC     	!%v	4;xx(&&.r,   c                 *    t        j                         S rJ   )r   MediarA   s    r-   rT   zFieldset.mediav   s    {{}r,   c                     t        | j                  j                  D cg c]  }|| j                  v  c}      ryd| j                  v S c c}w NFcollapse)anyr3   rK   rP   r]   r9   r1   s     r-   is_collapsiblezFieldset.is_collapsiblez   s@    $))2B2BC$CDT\\)) Ds   A	c              #      K   | j                   D ]1  }t        | j                  || j                  | j                         3 y w)Nr7   )rP   	Fieldliner3   r8   r7   re   s     r-   rH   zFieldset.__iter__   s?     [[ 	E		5$"6"6DDTDT 	s   AA)Nr+   r+   r+   NN)	r"   r#   r$   r<   rX   rT   r   rf   rH   r+   r,   r-   rD   rD   d   sH     /"   * *
r,   rD   c                        e Zd ZddZd Zd Zy)ri   Nc                      | _         t        |d      rt        |t              r	|g _        n| _        t         fd j                  D                _        | _        |d}| _        y )NrH   c              3      K   | ]K  }|j                   j                  v xr- j                   j                  |   j                  j                   M y wrJ   )r3   rP   r!   	is_hidden).0r1   r9   s     r-   	<genexpr>z%Fieldline.__init__.<locals>.<genexpr>   sK      )
 TYY%%%R$))*:*:5*A*H*H*R*RR)
s   AAr+   )	r3   hasattr
isinstancestrrP   allhas_visible_fieldr7   r8   )r9   r3   r1   r8   r7   s   `    r-   r<   zFieldline.__init__   sm    	uj)Zs-C 'DKDK%( )
)
 &
 "
 '" O.r,   c              #      K   t        | j                        D ]Y  \  }}|| j                  v r)t        | j                  ||dk(  | j
                         =t        | j                  ||dk(         [ y w)Nr   )is_firstr7   )rv   )	enumeraterP   r8   AdminReadonlyFieldr3   r7   
AdminField)r9   ir1   s      r-   rH   zFieldline.__iter__   so     !$++. 	FHAu,,,(IIuQTEUEU  !EQ!VEE	Fs   A3A5c                 |     t        dj                   fd j                  D              j                  d            S )N
c              3      K   | ]9  }|j                   vr)j                  |   j                  j                          ; y wrJ   )r8   r3   rK   as_ul)rn   r;   r9   s     r-   ro   z#Fieldline.errors.<locals>.<genexpr>   s>      D000 		!##))+s   ?A)r   r\   rP   striprA   s   `r-   rK   zFieldline.errors   s8    II   eDk
 	
r,   rW   )r"   r#   r$   r<   rH   rK   r+   r,   r-   ri   ri      s    /F
r,   ri   c                       e Zd Zd Zd Zd Zy)ry   c                     ||   | _         || _        t        | j                   j                   j                  t        j
                        | _        d| _        y NF)r1   rv   rq   r!   r   CheckboxInputis_checkboxis_readonly)r9   r3   r1   rv   s       r-   r<   zAdminField.__init__   sA    %[
 %djj&6&6&=&=u?R?RS r,   c                    g }t        | j                  j                        }| j                  r|j	                  d       | j                  j                  j
                  r|j	                  d       | j                  s|j	                  d       |rddj                  |      ini }| j                  j                  t        |      || j                  rd      S d       S )NvCheckboxLabelr   inliner   r[   r   )contentsattrslabel_suffix)
r   r1   r   r   appendr   rv   r\   	label_tagr   )r9   r]   r   r   s       r-   r   zAdminField.label_tag   s    %djj&6&67NN+,::$$NN:&}}NN8$07#((7+,R zz##x(#// $ 
 	
 6: $ 
 	
r,   c                 \    t        | j                  j                  j                               S rJ   )r   r1   rK   r~   rA   s    r-   rK   zAdminField.errors   s     **00233r,   N)r"   r#   r$   r<   r   rK   r+   r,   r-   ry   ry      s    !
&4r,   ry   c                   &    e Zd ZddZd Zd Zd Zy)rx   Nc                    t        |      r|j                  dk7  r|j                  nd}n|}|j                  j                  r2||j                  j                  v r|j                  j                  |   }n#t	        ||j                  j
                  ||      }|j                  j                  r2||j                  j                  v r|j                  j                  |   }n t        ||j                  j
                        }||j                  v r$|j                  |   j                  j                  }nd}|||||d| _        || _        || _        || _        d| _        d| _        |j#                         | _        y )Nz<lambda>r   r3   F)rF   r   	help_textr1   rm   T)callabler"   _metalabelsr   model
help_textsr   rP   r!   rm   r1   r3   r7   rv   r   r   get_empty_value_displayempty_value_display)	r9   r3   r1   rv   r7   
class_namer   r   rm   s	            r-   r<   zAdminReadonlyField.__init__   s8    E?+0>>Z+GRJJ::tzz/@/@!@JJ%%j1E#E4::+;+;[tTE::  Z4::3H3H%H

--j9I+J

8H8HIIDKKE*11;;II ""

 	&  #.#F#F#H r,   c                     i }| j                   sd|d<   | j                  d   }t        dt        |      t	        |      | j
                  j                        S )Nr   r   r   z<label{}>{}{}</label>)rv   r1   r   r   r   r3   r   )r9   r   r   s      r-   r   zAdminReadonlyField.label_tag   sP    }}%E'N

7##ENUOII""	
 	
r,   c                 \   d|j                   j                  j                  d|j                   j                  j                  d}	 t	        |t        |j                        g| j                  j                  j                        }t        d||      S # t        $ r t        |      cY S w xY w)Nzadmin:r&   _change)argscurrent_appz<a href="{}">{}</a>)r   r   	app_label
model_namer   r	   pkr7   
admin_siterF   r   r   rr   )r9   remote_field
remote_objurl_nameurls        r-   get_admin_urlz AdminReadonlyField.get_admin_url   s    $$..$$//
	#JMM*+ ,,77<<C
 4c:FF 	#z?"	#s   AB B+*B+c                    ddl m} | j                  d   | j                  j                  | j
                  }}}	 t        |||      \  }}}|| j                  j                  v rB| j                  |   j                  j                  }t        |dd      r|j                  ||      S |Ot        |dd      r ||      }	t9        |	      S t        |d      r|}	t9        |	      S t        |      }	t9        |	      S t        |j                  t              r0|.dj!                  t#        t$        |j'                                     }	nVt        |j                  t(        t*        f      r|| j-                  |j                  |      }	nt/        ||| j0                        }	t        |	      }	t9        |	      S # t2        t4        t6        f$ r | j0                  }	Y t9        |	      S w xY w)	Nr   )_boolean_iconr1   	read_onlyFboolean__html__z, ),django.contrib.admin.templatetags.admin_listr   r1   r3   instancer7   r   rP   r!   getattrrenderrp   r   rq   r   r   r\   maprr   rs   r   r   r   r   r   AttributeError
ValueErrorr
   r   )
r9   r   r1   objr7   r;   attrvaluer!   result_reprs
             r-   r   zAdminReadonlyField.contents
  s   N JJwII  s
	8)%kBNAtU 		(((5)//66 6;6!==66y4E2"/"6K" "+.. uj1&+ "+.. '35&9 "+.. annm<AR"&))CUYY[,A"BKq~~0@-/PQ)"&"4"4Q^^U"KK"3E1d>V>V"WK*;7!+..9 
,>? 	322K6 "+..9	3s   F+ + GGrJ   )r"   r#   r$   r<   r   r   r   r+   r,   r-   rx   rx      s    $IL

#&/r,   rx   c                       e Zd ZdZ	 	 	 	 	 	 	 ddZd Zd Zd Zed        Z	e
d        Zd	 Zed
        Zed        Zed        Zy)InlineAdminFormSetzI
    A wrapper around an inline formset for use in the admin system.
    Nc                     || _         || _        || _        || _        |d}|| _        |i }|| _        |j                  rdj                  |j                        nd| _        || _        || _	        |	| _
        |
| _        y )Nr+   r[   r   )optsformsetr4   r7   r8   r6   r]   r\   has_add_permissionhas_change_permissionhas_delete_permissionhas_view_permission)r9   r   r   r4   r6   r8   r7   r   r   r   r   s              r-   r<   zInlineAdminFormSet.__init__8  s     	"&" O.&"$#6 39>>sxx/r"4%:"%:"#6 r,   c              #   B  K   | j                   r| j                  }n"| j                  t        | j                        z   }t	        | j
                  j                  | j
                  j                               D ]]  \  }}| j                  j                  |      }t        | j
                  || j                  | j                  ||| j                  |       _ | j
                  j                  D ]H  }t        | j
                  || j                  | j                  d | j                  | j                         J | j                  r[t        | j
                  | j
                  j                  | j                  | j                  d | j                  | j                         y y w)N)r7   view_on_site_urlrh   )r   r8   r   r4   zipr   initial_formsget_querysetr   get_view_on_site_urlInlineAdminFormr6   extra_formsr   
empty_form)r9   readonly_fields_for_editingr3   originalr   s        r-   rH   zInlineAdminFormSet.__iter__U  si    %%*.*>*>'*.*>*>ARB +' "LL&&(A(A(C
 	ND(  $yy==hG!((+ II!1	 			 LL,, 		D!(($$ II 		 ""!''(($$ II  #s   FFc           	   #     K   t        | j                  dd       }| j                  j                  }|j                  j                  xs i }|j                  j
                  xs i }t        t        | j                              D ]U  \  }}|r|j                  |k(  r| j                  r|| j                  v r|j                  j                  |      }d}||j                  j                  }||j                  |      xs- t!        || j"                  j$                  | j"                  |      d|id|j                  |      xs  t'        || j"                  j$                        d |j                  |   }|j(                  }	|	-t!        || j"                  j$                  | j"                  |      }	||	|j                  |j*                  |j,                  d X y w)NfkFr   rm   )rF   r   r!   r   r   )r   r   r   r   r   r   rw   r   r4   rF   r   r8   rP   getr!   rm   r   r   r   r   r   r   r   )
r9   r   r   meta_labelsmeta_help_textsrz   r:   
form_fieldwidget_is_hiddenr   s
             r-   rP   zInlineAdminFormSet.fields  s    T\\4.\\,,
 &&--3$**55;&'8'HI #	MAzbgg+--t?S?S1S'..22:>
#( )'1'8'8'B'B$&(__Z8 &"				'	  +,<= %!0!4!4Z!@ "H*:tyyG  (..z:
"((=+"DIIOOTYYZE '"(// * 3 3!+!5!5 ;#	s   GGc           	          | j                   j                  }t        j                  d| j                  j
                  z  | j                  j
                  t        d      dt        |      iz  t        d      dd      S )Nz#%szAdd another %(verbose_name)sverbose_nameRemove)prefixaddText
deleteText)rF   rG   )r   r   jsondumpsr   r   r   r   )r9   r   s     r-   inline_formset_dataz&InlineAdminFormSet.inline_formset_data  sr    yy--zz 3 33"ll11&'EF&(>  #*("3

 	
r,   c                 .    | j                   j                  S rJ   )r   r   rA   s    r-   r   zInlineAdminFormSet.forms  s    ||!!!r,   c                 ^    t        | j                  j                        ryd| j                  v S rb   )rd   r   rK   r]   rA   s    r-   rf   z!InlineAdminFormSet.is_collapsible  s&    t||""#T\\))r,   c                 6    | j                   j                         S rJ   )r   non_form_errorsrA   s    r-   r   z"InlineAdminFormSet.non_form_errors  s    ||++--r,   c                 .    | j                   j                  S rJ   )r   rR   rA   s    r-   rR   zInlineAdminFormSet.is_bound  s    ||$$$r,   c                 .    | j                   j                  S rJ   )r   total_form_countrA   s    r-   r   z#InlineAdminFormSet.total_form_count  s    ||,,,r,   c                     | j                   j                  | j                  j                  z   }| D ]  }||j                  z  } |S rJ   )r   rT   r   rU   s      r-   rT   zInlineAdminFormSet.media  s@    		$,,"4"44 	BRXXE	r,   )NNNTTTT)r"   r#   r$   __doc__r<   rH   rP   r   rX   r   r   rf   r   rR   r   rT   r+   r,   r-   r   r   3  s     !"" 7:)V(T
  " " * *
. % % - -  r,   r   c                   H     e Zd ZdZ	 	 	 d fd	Zd Zd Zd Zd Zd Z	 xZ
S )	r   zF
    A wrapper around an inline form for use in the admin system.
    c	                 ~    || _         || _        || _        |xr |d u| _        || _        t
        	|   |||||       y rJ   )r   r7   r   show_urlabsolute_urlsuperr<   )
r9   r   r3   r4   r6   r   r8   r7   r   r@   s
            r-   r<   zInlineAdminForm.__init__  sN     &  A%5T%A,)0/;	
r,   c              #      K   | j                   D ]@  \  }}t        | j                  | j                  || j                  fd| j
                  i| B y w)Nr7   )r4   InlineFieldsetr   r3   r8   r7   rE   s      r-   rH   zInlineAdminForm.__iter__  s^     !^^ 	MD' 		$$	
 !,,  	s   AAc                 ~   | j                   j                  j                  j                  j                  xs | j                   j                  j                  j                  j                  j
                   xs | j                   j                  j                  xr^ | j                   j                  j                  j                  j                  j                  | j                   j                  j                  v xsD t        d | j                   j                  j                  j                  j                  D              S )Nc              3      K   | ]Q  }|j                   j                  xs5 |j                   j                  j                   j                  j                    S y wrJ   )r   
auto_fieldr   r   editable)rn   parents     r-   ro   z:InlineAdminForm.needs_explicit_pk_field.<locals>.<genexpr>	  sI       ''Sv||/A/A/G/G/J/J/S/S+SSs   AA)
r3   r   r   r   r   r   excluderF   rd   all_parentsrA   s    r-   needs_explicit_pk_fieldz'InlineAdminForm.needs_explicit_pk_field  s     IIOO!!''22 99??((..11::: 		'' SIIOO))//2277499??;R;RR  "iioo3399EE 	
r,   c                 l    t        | j                  | j                  j                  j                  d      S r   )ry   r3   r   	_pk_fieldrF   rA   s    r-   pk_fieldzInlineAdminForm.pk_field  s%    $))T\\%;%;%@%@%HHr,   c                 x    t        | j                  dd       }|r!t        | j                  |j                  d      S y)Nr   Fr   )r   r   ry   r3   rF   )r9   r   s     r-   fk_fieldzInlineAdminForm.fk_field  s1    T\\4.dii%88r,   c                 <    ddl m} t        | j                  |d      S )Nr   )DELETION_FIELD_NAMEF)django.forms.formsetsr   ry   r3   )r9   r   s     r-   deletion_fieldzInlineAdminForm.deletion_field  s    =$))%8%@@r,   )NNN)r"   r#   r$   r   r<   rH   r   r   r   r   __classcell__r@   s   @r-   r   r     s3     
(	
(IAr,   r   c                   $     e Zd Z fdZd Z xZS )r   c                 2    || _         t        |   |i | y rJ   )r   r   r<   )r9   r   r   kwargsr@   s       r-   r<   zInlineFieldset.__init__   s    $)&)r,   c              #      K   t        | j                  dd       }| j                  D ]C  }|r|j                  |k7  st	        | j
                  || j                  | j                         E y w)Nr   rh   )r   r   rP   rF   ri   r3   r8   r7   )r9   r   r1   s      r-   rH   zInlineFieldset.__iter__$  s_     T\\4.[[ 	EE)IIud&:&:HXHX 	s
   8A-2A-)r"   r#   r$   r<   rH   r   r   s   @r-   r   r     s    *r,   r   c                   "     e Zd ZdZ fdZ xZS )AdminErrorListz9Store errors for the form/formsets in an add/change view.c                 :   t         |           |j                  r| j                  |j                  j                                |D ]Q  }| j                  |j                                |j                  D ]!  }| j                  |j                                # S y y rJ   )r   r<   rR   extendrK   valuesr   )r9   r3   inline_formsetsinline_formseterrors_in_inline_formr@   s        r-   r<   zAdminErrorList.__init__0  s    ==KK**,-"1 @N::<=-;-B-B @)KK 5 < < >?@@ r,   )r"   r#   r$   r   r<   r   r   s   @r-   r  r  -  s    C@ @r,   r  )1r   djangor   django.contrib.admin.utilsr   r   r   r   r   r	   django.core.exceptionsr
   django.db.models.fields.relatedr   r   r   django.forms.utilsr   django.template.defaultfiltersr   r   django.urlsr   r   django.utils.functionalr   django.utils.htmlr   r   django.utils.safestringr   django.utils.translationr   r   r&   ACTION_CHECKBOX_NAMEFormr   r/   rD   ri   ry   rx   r   r   r   utils	ErrorListr  r+   r,   r-   <module>r     s       6 
 ' A / 3 = - , 6)  9 9x   F 
  
F4 4<h/ h/Va aHEAi EAPX @U[[** @r,   