
    /~hF                        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# 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jX                  jZ                        Z.y)"    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     e/var/www/peopleoo.sandbox-dev.co.uk/venv/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)	selfr2   r3   r5   r7   r6   
field_namer1   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#   r2   r3   r8   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)r7   r6   )r3   Fieldsetr2   r7   r6   r8   nameoptionss      r,   __iter__zAdminForm.__iter__A   sW     !^^ 	MD'		 !% 4 4 ,,	
  	s   AAc                 .    | j                   j                  S N)r2   errorsr@   s    r,   rJ   zAdminForm.errorsK       yyr+   c                 .    | j                   j                  S rI   )r2   non_field_errorsr@   s    r,   rM   zAdminForm.non_field_errorsO   s    yy)))r+   c                 .    | j                   j                  S rI   )r2   fieldsr@   s    r,   rO   zAdminForm.fieldsS   rK   r+   c                 .    | j                   j                  S rI   )r2   is_boundr@   s    r,   rQ   zAdminForm.is_boundW   s    yy!!!r+   c                 ^    | j                   j                  }| D ]  }||j                  z  } |S rI   )r2   mediar8   rS   fss      r,   rS   zAdminForm.media[   s1    		 	BRXXE	r+   NN)r!   r"   r#   r;   rA   rG   propertyrJ   rM   rO   rQ   rS   r*   r+   r,   r.   r.   '   s}     /$
     * *     " "  r+   r.   c                   6    e Zd Z	 	 	 	 	 	 ddZed        Zd Zy)rC   Nc                     || _         ||c| _        | _        dj                  |      | _        || _        || _        || _        y )N )r2   rE   rO   joinclassesdescriptionr6   r7   )r8   r2   rE   r7   rO   r\   r]   r6   s           r,   r;   zFieldset.__init__d   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   Mediar@   s    r,   rS   zFieldset.mediau   s-    %;;#9":;;{{}r+   c              #      K   | j                   D ]1  }t        | j                  || j                  | j                         3 y w)Nr6   )rO   	Fieldliner2   r7   r6   )r8   r0   s     r,   rG   zFieldset.__iter__{   s?     [[ 	E		5$"6"6DDTDT 	s   AA)Nr*   r*   r*   NN)r!   r"   r#   r;   rW   rS   rG   r*   r+   r,   rC   rC   c   s4     /"  
r+   rC   c                        e Zd ZddZd Zd Zy)rd   Nc                      | _         t        |d      rt        |t              r	|g _        n| _        t         fd j                  D                _        | _        |d}| _        y )NrG   c              3      K   | ]K  }|j                   j                  v xr- j                   j                  |   j                  j                   M y wrI   )r2   rO   r    	is_hidden).0r0   r8   s     r,   	<genexpr>z%Fieldline.__init__.<locals>.<genexpr>   sK      )
 TYY%%%R$))*:*:5*A*H*H*R*RR)
s   AAr*   )	r2   hasattr
isinstancestrrO   allhas_visible_fieldr6   r7   )r8   r2   r0   r7   r6   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_firstr6   )rq   )	enumeraterO   r7   AdminReadonlyFieldr2   r6   
AdminField)r8   ir0   s      r,   rG   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rI   )r7   r2   rJ   as_ul)ri   r:   r8   s     r,   rj   z#Fieldline.errors.<locals>.<genexpr>   s>      D000 		!##))+s   ?A)r   r[   rO   stripr@   s   `r,   rJ   zFieldline.errors   s8    II   eDk
 	
r+   rV   )r!   r"   r#   r;   rG   rJ   r*   r+   r,   rd   rd      s    /F
r+   rd   c                       e Zd Zd Zd Zd Zy)rt   c                     ||   | _         || _        t        | j                   j                   j                  t        j
                        | _        d| _        y NF)r0   rq   rl   r    r   CheckboxInputis_checkboxis_readonly)r8   r2   r0   rq   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   rZ   r   )contentsattrslabel_suffix)
r   r0   r   r   appendr   rq   r[   	label_tagr   )r8   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 rI   )r   r0   rJ   ry   r@   s    r,   rJ   zAdminField.errors   s     **00233r+   N)r!   r"   r#   r;   r   rJ   r*   r+   r,   rt   rt      s    !
&4r+   rt   c                   &    e Zd ZddZd Zd Zd Zy)rs   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   r2   F)rE   r   	help_textr0   rh   T)callabler!   _metalabelsr   model
help_textsr   rO   r    rh   r0   r2   r6   rq   r   r   get_empty_value_displayempty_value_display)	r8   r2   r0   rq   r6   
class_namer   r   rh   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>)rq   r0   r   r   r   r2   r   )r8   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	   pkr6   
admin_siterE   r   r   rm   )r8   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_iconr0   	read_onlyFboolean__html__z, ),django.contrib.admin.templatetags.admin_listr   r0   r2   instancer6   r   rO   r    getattrrenderrk   r   rl   r   r   r[   maprm   rn   r   r   r   r   r   AttributeError
ValueErrorr
   r   )
r8   r   r0   objr6   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rI   )r!   r"   r#   r;   r   r   r   r*   r+   r,   rs   rs      s    $IL

#&/r+   rs   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*   rZ   r   )optsformsetr3   r6   r7   r5   r\   r[   has_add_permissionhas_change_permissionhas_delete_permissionhas_view_permission)r8   r   r   r3   r5   r7   r6   r   r   r   r   s              r,   r;   zInlineAdminFormSet.__init__3  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)r6   view_on_site_urlrc   )r   r7   r   r3   zipr   initial_formsget_querysetr   get_view_on_site_urlInlineAdminFormr5   extra_formsr   
empty_form)r8   readonly_fields_for_editingr2   originalr   s        r,   rG   zInlineAdminFormSet.__iter__P  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   rh   )rE   r   r    r   r   )r   r   r   r   r   r   rr   r   r3   rE   r   r7   rO   getr    rh   r   r   r   r   r   r   r   )
r8   r   r   meta_labelsmeta_help_textsru   r9   
form_fieldwidget_is_hiddenr   s
             r,   rO   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)rE   rF   )r   r   jsondumpsr   r   r   r   )r8   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 rI   )r   r   r@   s    r,   r   zInlineAdminFormSet.forms  s    ||!!!r+   c                 6    | j                   j                         S rI   )r   non_form_errorsr@   s    r,   r   z"InlineAdminFormSet.non_form_errors  s    ||++--r+   c                 .    | j                   j                  S rI   )r   rQ   r@   s    r,   rQ   zInlineAdminFormSet.is_bound  s    ||$$$r+   c                 .    | j                   j                  S rI   )r   total_form_countr@   s    r,   r   z#InlineAdminFormSet.total_form_count  s    ||,,,r+   c                     | j                   j                  | j                  j                  z   }| D ]  }||j                  z  } |S rI   )r   rS   r   rT   s      r,   rS   zInlineAdminFormSet.media  s@    		$,,"4"44 	BRXXE	r+   )NNNTTTT)r!   r"   r#   __doc__r;   rG   rO   r   rW   r   r   rQ   r   rS   r*   r+   r,   r   r   .  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 rI   )r   r6   r   show_urlabsolute_urlsuperr;   )
r8   r   r2   r3   r5   r   r7   r6   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)Nr6   )r3   InlineFieldsetr   r2   r7   r6   rD   s      r,   rG   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rI   )r   
auto_fieldr   r   editable)ri   parents     r,   rj   z:InlineAdminForm.needs_explicit_pk_field.<locals>.<genexpr>  sI       ''Sv||/A/A/G/G/J/J/S/S+SSs   AA)r2   r   r   r   r   r   anyget_parent_listr@   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}   )rt   r2   r   	_pk_fieldrE   r@   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   rt   r2   rE   )r8   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   rt   r2   )r8   r   s     r,   deletion_fieldzInlineAdminForm.deletion_field	  s    =$))%8%@@r+   )NNN)r!   r"   r#   r   r;   rG   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 rI   )r   r   r;   )r8   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   rc   )r   r   rO   rE   rd   r2   r7   r6   )r8   r   r0   s      r,   rG   zInlineFieldset.__iter__  s_     T\\4.[[ 	EE)IIud&:&:HXHX 	s
   8A-2A-)r!   r"   r#   r;   rG   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 rI   )r   r;   rQ   extendrJ   valuesr   )r8   r2   inline_formsetsinline_formseterrors_in_inline_formr?   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   )/r   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.   rC   rd   rt   rs   r   r   r   utils	ErrorListr   r*   r+   r,   <module>r     s       6 
 ' A / = - , 6)  9 9x > 
  
F4 4<h/ h/V[ [|@Ai @AFX @U[[** @r+   