
    GwgG                        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mZ d d
lmZ d dlmZ d dlmZ  dZ! G d dejD                        Z# ejH                  ddi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      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)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     S/var/www/horilla/myenv/lib/python3.12/site-packages/django/contrib/admin/helpers.pyr   r      sH    UQy\2F&E&& u  '?!;<	Mr+   r   r   zaction-selectc                      yNFr*   )values    r,   <lambda>r0   '   s    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)	selfr6   r7   r9   r;   r:   
field_namer5   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#   r6   r7   r<   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)r;   r:   )r7   Fieldsetr6   r;   r:   r<   nameoptionss      r,   __iter__zAdminForm.__iter__D   sW     !^^ 	MD'		 !% 4 4 ,,	
  	s   AAc                 .    | j                   j                  S N)r6   errorsrD   s    r,   rN   zAdminForm.errorsN       yyr+   c                 .    | j                   j                  S rM   )r6   non_field_errorsrD   s    r,   rQ   zAdminForm.non_field_errorsR   s    yy)))r+   c                 .    | j                   j                  S rM   )r6   fieldsrD   s    r,   rS   zAdminForm.fieldsV   rO   r+   c                 .    | j                   j                  S rM   )r6   is_boundrD   s    r,   rU   zAdminForm.is_boundZ   s    yy!!!r+   c                 ^    | j                   j                  }| D ]  }||j                  z  } |S rM   )r6   mediar<   rW   fss      r,   rW   zAdminForm.media^   s1    		 	BRXXE	r+   NN)r!   r"   r#   r?   rE   rK   propertyrN   rQ   rS   rU   rW   r*   r+   r,   r2   r2   *   s}     /$
     * *     " "  r+   r2   c                   6    e Zd Z	 	 	 	 	 	 ddZed        Zd Zy)rG   Nc                     || _         ||c| _        | _        dj                  |      | _        || _        || _        || _        y )N )r6   rI   rS   joinclassesdescriptionr:   r;   )r<   r6   rI   r;   rS   r`   ra   r:   s           r,   r?   zFieldset.__init__g   sC     	!%v	4;xx(&&.r+   c                 t    d| j                   v rt        j                  dg      S t        j                         S )Ncollapsezadmin/js/collapse.js)js)r`   r   MediarD   s    r,   rW   zFieldset.mediax   s-    %;;#9":;;{{}r+   c              #      K   | j                   D ]1  }t        | j                  || j                  | j                         3 y w)Nr:   )rS   	Fieldliner6   r;   r:   )r<   r4   s     r,   rK   zFieldset.__iter__~   s?     [[ 	E		5$"6"6DDTDT 	s   AA)Nr*   r*   r*   NN)r!   r"   r#   r?   r[   rW   rK   r*   r+   r,   rG   rG   f   s4     /"  
r+   rG   c                        e Zd ZddZd Zd Zy)rh   Nc                      | _         t        |d      rt        |t              r	|g _        n| _        t         fd j                  D                _        | _        |d}| _        y )NrK   c              3      K   | ]K  }|j                   j                  v xr- j                   j                  |   j                  j                   M y wrM   )r6   rS   r    	is_hidden).0r4   r<   s     r,   	<genexpr>z%Fieldline.__init__.<locals>.<genexpr>   sK      )
 TYY%%%R$))*:*:5*A*H*H*R*RR)
s   AAr*   )	r6   hasattr
isinstancestrrS   allhas_visible_fieldr:   r;   )r<   r6   r4   r;   r:   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_firstr:   )ru   )	enumeraterS   r;   AdminReadonlyFieldr6   r:   
AdminField)r<   ir4   s      r,   rK   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rM   )r;   r6   rN   as_ul)rm   r>   r<   s     r,   rn   z#Fieldline.errors.<locals>.<genexpr>   s>      D000 		!##))+s   ?A)r   r_   rS   striprD   s   `r,   rN   zFieldline.errors   s8    II   eDk
 	
r+   rZ   )r!   r"   r#   r?   rK   rN   r*   r+   r,   rh   rh      s    /F
r+   rh   c                       e Zd Zd Zd Zd Zy)rx   c                     ||   | _         || _        t        | j                   j                   j                  t        j
                        | _        d| _        y r.   )r4   ru   rp   r    r   CheckboxInputis_checkboxis_readonly)r<   r6   r4   ru   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   r4   r   r   appendr   ru   r_   	label_tagr   )r<   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 rM   )r   r4   rN   r}   rD   s    r,   rN   zAdminField.errors   s     **00233r+   N)r!   r"   r#   r?   r   rN   r*   r+   r,   rx   rx      s    !
&4r+   rx   c                   &    e Zd ZddZd Zd Zd Zy)rw   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   r6   F)rI   r   	help_textr4   rl   T)callabler!   _metalabelsr   model
help_textsr   rS   r    rl   r4   r6   r:   ru   r   r   get_empty_value_displayempty_value_display)	r<   r6   r4   ru   r:   
class_namer   r   rl   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>)ru   r4   r   r   r   r6   r   )r<   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	   pkr:   
admin_siterI   r   r   rq   )r<   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_iconr4   	read_onlyFboolean__html__z, ),django.contrib.admin.templatetags.admin_listr   r4   r6   instancer:   r   rS   r    getattrrenderro   r   rp   r   r   r_   maprq   rr   r   r   r   r   r   AttributeError
ValueErrorr
   r   )
r<   r   r4   objr:   r>   attrr/   r    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rM   )r!   r"   r#   r?   r   r   r   r*   r+   r,   rw   rw      s    $IL

#&/r+   rw   c                   ~    e Zd ZdZ	 	 	 	 	 	 	 ddZd Zd Z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formsetr7   r:   r;   r9   r`   r_   has_add_permissionhas_change_permissionhas_delete_permissionhas_view_permission)r<   r   r   r7   r9   r;   r:   r   r   r   r   s              r,   r?   zInlineAdminFormSet.__init__6  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)r:   view_on_site_urlrg   )r   r;   r   r7   zipr   initial_formsget_querysetr   get_view_on_site_urlInlineAdminFormr9   extra_formsr   
empty_form)r<   readonly_fields_for_editingr6   originalr   s        r,   rK   zInlineAdminFormSet.__iter__S  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   rl   )rI   r   r    r   r   )r   r   r   r   r   r   rv   r   r7   rI   r   r;   rS   getr    rl   r   r   r   r   r   r   r   )
r<   r   r   meta_labelsmeta_help_textsry   r=   
form_fieldwidget_is_hiddenr   s
             r,   rS   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)rI   rJ   )r   r   jsondumpsr   r   r   r   )r<   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 rM   )r   r   rD   s    r,   r   zInlineAdminFormSet.forms  s    ||!!!r+   c                 6    | j                   j                         S rM   )r   non_form_errorsrD   s    r,   r   z"InlineAdminFormSet.non_form_errors  s    ||++--r+   c                 .    | j                   j                  S rM   )r   rU   rD   s    r,   rU   zInlineAdminFormSet.is_bound  s    ||$$$r+   c                 .    | j                   j                  S rM   )r   total_form_countrD   s    r,   r   z#InlineAdminFormSet.total_form_count  s    ||,,,r+   c                     | j                   j                  | j                  j                  z   }| D ]  }||j                  z  } |S rM   )r   rW   r   rX   s      r,   rW   zInlineAdminFormSet.media  s@    		$,,"4"44 	BRXXE	r+   )NNNTTTT)r!   r"   r#   __doc__r?   rK   rS   r   r[   r   r   rU   r   rW   r*   r+   r,   r   r   1  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 rM   )r   r:   r   show_urlabsolute_urlsuperr?   )
r<   r   r6   r7   r9   r   r;   r:   r   rC   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)Nr:   )r7   InlineFieldsetr   r6   r;   r:   rH   s      r,   rK   zInlineAdminForm.__iter__  s^     !^^ 	MD' 		$$	
 !,,  	s   AAc                    | j                   j                  j                  j                  j                  xs | j                   j                  j                  j                  j                  j
                   xsH 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rM   )r   
auto_fieldr   r   editable)rm   parents     r,   rn   z:InlineAdminForm.needs_explicit_pk_field.<locals>.<genexpr>  sI       ''Sv||/A/A/G/G/J/J/S/S+SSs   AA)r6   r   r   r   r   r   anyget_parent_listrD   s    r,   needs_explicit_pk_fieldz'InlineAdminForm.needs_explicit_pk_field  s     IIOO!!''22 	99??((..11:::	  "iioo3399IIK 	
r+   c                 l    t        | j                  | j                  j                  j                  d      S r.   )rx   r6   r   	_pk_fieldrI   rD   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   rx   r6   rI   )r<   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   rx   r6   )r<   r   s     r,   deletion_fieldzInlineAdminForm.deletion_field  s    =$))%8%@@r+   )NNN)r!   r"   r#   r   r?   rK   r   r   r   r   __classcell__rC   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 rM   )r   r   r?   )r<   r   r   kwargsrC   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   rg   )r   r   rS   rI   rh   r6   r;   r:   )r<   r   r4   s      r,   rK   zInlineFieldset.__iter__  s_     T\\4.[[ 	EE)IIud&:&:HXHX 	s
   8A-2A-)r!   r"   r#   r?   rK   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 rM   )r   r?   rU   extendrN   valuesr   )r<   r6   inline_formsetsinline_formseterrors_in_inline_formrC   s        r,   r?   zAdminErrorList.__init__#  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.htmlr   r   django.utils.safestringr   django.utils.translationr   r   r%   ACTION_CHECKBOX_NAMEFormr   r   checkboxr2   rG   rh   rx   rw   r   r   r   utils	ErrorListr  r*   r+   r,   <module>r     s       6 
 ' A / = - , 6)   59;NO9 9x > 
  
F4 4<h/ h/V[ [|@Ai @AFX @U[[** @r+   