a
    JcòfG  ã                   @   sj  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„ dej"ƒZ#e $ddidd„ ¡Z%G dd„ dƒZ&G dd„ dƒZ'G dd„ dƒZ(G dd„ dƒZ)G dd„ dƒZ*G dd„ dƒZ+G d d!„ d!e&ƒZ,G d"d#„ d#e'ƒZ-G d$d%„ d%ej.j/ƒZ0dS )&é    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_lazyZ_selected_actionc                   @   s8   e Zd Zejedƒd�Zejddde ddi¡d�Z	d	S )
Ú
ActionFormzAction:)ÚlabelÚ Fr   Úclasszselect-across)r   ÚrequiredÚinitialÚwidgetN)
Ú__name__Ú
__module__Ú__qualname__r   ZChoiceFieldÚ_ÚactionZBooleanFieldZHiddenInputZselect_across© r#   r#   úY/home/httpd/docs/test/DocsMgr/lib/python3.9/site-packages/django/contrib/admin/helpers.pyr      s   ür   r   zaction-selectc                 C   s   dS ©NFr#   )Úvaluer#   r#   r$   Ú<lambda>'   ó    r'   c                   @   sb   e Zd Zddd„Zdd„ Zdd„ Zedd	„ ƒZed
d„ ƒZedd„ ƒZ	edd„ ƒZ
edd„ ƒZdS )Ú	AdminFormNc                    sB   ˆ | | _ | _‡ fdd„| ¡ D ƒ| _|| _|d u r8d}|| _d S )Nc                    s,   g | ]$\}}ˆ | ‡ fd d„|D ƒdœ‘qS )c                    s   g | ]}ˆ | ‘qS r#   r#   ©Ú.0Úf©Úformr#   r$   Ú
<listcomp>5   r(   z1AdminForm.__init__.<locals>.<listcomp>.<listcomp>)ÚfieldÚdependenciesr#   )r+   Ú
field_namer1   r-   r#   r$   r/   4   s   ÿz&AdminForm.__init__.<locals>.<listcomp>r#   )r.   Ú	fieldsetsÚitemsÚprepopulated_fieldsÚmodel_adminÚreadonly_fields)Úselfr.   r3   r5   r7   r6   r#   r-   r$   Ú__init__+   s    
þzAdminForm.__init__c                 C   s$   d| j j› d| jj j› d| j›d�S )Nú<z: form=z fieldsets=ú>)Ú	__class__r    r.   r3   ©r8   r#   r#   r$   Ú__repr__=   s    ÿþÿzAdminForm.__repr__c                 c   s4   | j D ](\}}t| j|f| j| jdœ|¤ŽV  qd S )N)r7   r6   )r3   ÚFieldsetr.   r7   r6   ©r8   ÚnameÚoptionsr#   r#   r$   Ú__iter__D   s    þüûzAdminForm.__iter__c                 C   s   | j jS ©N)r.   Úerrorsr=   r#   r#   r$   rE   N   s    zAdminForm.errorsc                 C   s   | j jS rD   )r.   Únon_field_errorsr=   r#   r#   r$   rF   R   s    zAdminForm.non_field_errorsc                 C   s   | j jS rD   )r.   Úfieldsr=   r#   r#   r$   rG   V   s    zAdminForm.fieldsc                 C   s   | j jS rD   )r.   Úis_boundr=   r#   r#   r$   rH   Z   s    zAdminForm.is_boundc                 C   s    | j j}| D ]}||j7 }q|S rD   )r.   Úmedia©r8   rI   Úfsr#   r#   r$   rI   ^   s    zAdminForm.media)NN)r   r   r    r9   r>   rC   ÚpropertyrE   rF   rG   rH   rI   r#   r#   r#   r$   r)   *   s     ú





r)   c                   @   s*   e Zd Zd	dd„Zedd„ ƒZdd„ ZdS )
r?   Nr#   c                 C   s6   || _ || | _| _d |¡| _|| _|| _|| _d S )Nú )r.   rA   rG   ÚjoinÚclassesÚdescriptionr6   r7   )r8   r.   rA   r7   rG   rO   rP   r6   r#   r#   r$   r9   g   s    
zFieldset.__init__c                 C   s    d| j v rtjdgd�S t ¡ S )NZcollapsezadmin/js/collapse.js)Újs)rO   r   ZMediar=   r#   r#   r$   rI   x   s    
zFieldset.mediac                 c   s(   | j D ]}t| j|| j| jd�V  qd S )N©r6   )rG   Ú	Fieldliner.   r7   r6   )r8   r0   r#   r#   r$   rC   ~   s    
ÿzFieldset.__iter__)Nr#   r#   r#   NN)r   r   r    r9   rL   rI   rC   r#   r#   r#   r$   r?   f   s         ø

r?   c                   @   s&   e Zd Zddd„Zdd„ Zdd„ ZdS )	rS   Nc                    sb   |ˆ _ t|dƒrt|tƒr$|gˆ _n|ˆ _t‡ fdd„ˆ jD ƒƒ ˆ _|ˆ _|d u rXd}|ˆ _d S )NrC   c                 3   s*   | ]"}|ˆ j jv o ˆ j j| jjV  qd S rD   )r.   rG   r   Ú	is_hidden)r+   r0   r=   r#   r$   Ú	<genexpr>Œ   s   ÿz%Fieldline.__init__.<locals>.<genexpr>r#   )	r.   ÚhasattrÚ
isinstanceÚstrrG   ÚallZhas_visible_fieldr6   r7   )r8   r.   r0   r7   r6   r#   r=   r$   r9   †   s    
þzFieldline.__init__c                 c   sT   t | jƒD ]D\}}|| jv r8t| j||dk| jd�V  q
t| j||dkd�V  q
d S )Nr   )Úis_firstr6   )rZ   )Ú	enumeraterG   r7   ÚAdminReadonlyFieldr.   r6   Ú
AdminField)r8   Úir0   r#   r#   r$   rC   •   s    
ÿ
zFieldline.__iter__c                    s$   t d ‡ fdd„ˆ jD ƒ¡ d¡ƒS )NÚ
c                 3   s(   | ] }|ˆ j vrˆ j| j ¡ V  qd S rD   )r7   r.   rE   Úas_ulr*   r=   r#   r$   rU       s   
þz#Fieldline.errors.<locals>.<genexpr>)r   rN   rG   Ústripr=   r#   r=   r$   rE   ž   s    þüÿzFieldline.errors)NN)r   r   r    r9   rC   rE   r#   r#   r#   r$   rS   …   s   
	rS   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )r]   c                 C   s.   || | _ || _t| j j jtjƒ| _d| _d S r%   )r0   rZ   rW   r   r   ÚCheckboxInputÚis_checkboxÚis_readonly)r8   r.   r0   rZ   r#   r#   r$   r9   ©   s    
zAdminField.__init__c                 C   sz   g }t | jjƒ}| jr | d¡ | jjjr4| d¡ | jsD| d¡ |rVdd |¡ini }| jjt	|ƒ|| jrrdnd d�S )NZvCheckboxLabelr   Úinliner   rM   r   )ÚcontentsÚattrsÚlabel_suffix)
r   r0   r   rc   Úappendr   rZ   rN   Ú	label_tagr   )r8   rO   rf   rg   r#   r#   r$   rj   ¯   s    



ýzAdminField.label_tagc                 C   s   t | jj ¡ ƒS rD   )r   r0   rE   r`   r=   r#   r#   r$   rE   Â   s    zAdminField.errorsN)r   r   r    r9   rj   rE   r#   r#   r#   r$   r]   ¨   s   r]   c                   @   s.   e Zd Zd
dd„Zdd„ Zdd„ Zdd	„ ZdS )r\   Nc           	      C   sä   t |ƒr|jdkr|jnd}n|}|jjrD||jjv rD|jj| }nt||jj||d�}|jjrz||jjv rz|jj| }nt||jjƒ}||jv r¢|j| j	j
}nd}|||||dœ| _|| _|| _|| _d| _d| _| ¡ | _d S )Nr'   r   r-   F)rA   r   Ú	help_textr0   rT   T)Úcallabler   Ú_metaÚlabelsr   ÚmodelÚ
help_textsr   rG   r   rT   r0   r.   r6   rZ   rc   rd   Zget_empty_value_displayÚempty_value_display)	r8   r.   r0   rZ   r6   Ú
class_namer   rk   rT   r#   r#   r$   r9   Ç   s0    
ûzAdminReadonlyField.__init__c                 C   s6   i }| j sd|d< | jd }tdt|ƒt|ƒ| jjƒS )Nre   r   r   z<label{}>{}{}</label>)rZ   r0   r   r   r   r.   rh   )r8   rg   r   r#   r#   r$   rj   í   s    
üzAdminReadonlyField.label_tagc                 C   sb   d|j jj|j jjf }z*t|t|jƒg| jjj	d�}t
d||ƒW S  ty\   t|ƒ Y S 0 d S )Nzadmin:%s_%s_change)ÚargsZcurrent_appz<a href="{}">{}</a>)ro   rm   Z	app_labelZ
model_namer   r   Úpkr6   Z
admin_siterA   r   r   rX   )r8   Úremote_fieldZ
remote_objZurl_nameÚurlr#   r#   r$   Úget_admin_urlù   s    þ
ýz AdminReadonlyField.get_admin_urlc           
   
   C   s<  ddl m} | jd | jj| j  }}}zt|||ƒ\}}}W n ttt	fy\   | j
}Y nØ0 || jjv r�| j| jj}	t|	ddƒr�|	 ||¡S |d u rÈt|ddƒr®||ƒ}nt|dƒr¾|}nt|ƒ}nlt|jtƒrò|d uròd tt| ¡ ƒ¡}n:t|jttfƒ�r|d u�r|  |j|¡}nt||| j
ƒ}t|ƒ}t|ƒS )	Nr   )Ú_boolean_iconr0   Z	read_onlyFÚbooleanZ__html__z, )Z,django.contrib.admin.templatetags.admin_listrx   r0   r.   Úinstancer6   r   ÚAttributeErrorÚ
ValueErrorr	   rq   rG   r   ÚgetattrÚrenderrV   r   rW   ru   r   rN   ÚmaprX   rY   r
   r   rw   r   r   )
r8   rx   r0   Úobjr6   r,   Úattrr&   Zresult_reprr   r#   r#   r$   rf     s:    ý



ÿþzAdminReadonlyField.contents)N)r   r   r    r9   rj   rw   rf   r#   r#   r#   r$   r\   Æ   s   
&r\   c                   @   sj   e Zd ZdZddd„Zdd„ Zdd	„ Zd
d„ Ze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.
    NTc                 C   sp   || _ || _|| _|| _|d u r$d}|| _|d u r6i }|| _|jrNd |j¡nd| _|| _|| _	|	| _
|
| _d S )Nr#   rM   r   )ÚoptsÚformsetr3   r6   r7   r5   rO   rN   Úhas_add_permissionÚhas_change_permissionÚhas_delete_permissionÚhas_view_permission)r8   re   r„   r3   r5   r7   r6   r…   r†   r‡   rˆ   r#   r#   r$   r9   6  s    zInlineAdminFormSet.__init__c                 c   sÊ   | j r| j}n| jt| jƒ }t| jj| j ¡ ƒD ]6\}}| j 	|¡}t
| j|| j| j||| j|d�V  q2| jjD ]&}t
| j|| j| jd | j| jd�V  qr| jrÆt
| j| jj| j| jd | j| jd�V  d S )N)r6   Úview_on_site_urlrR   )r†   r7   r   r3   Úzipr„   Zinitial_formsZget_querysetrƒ   Zget_view_on_site_urlÚInlineAdminFormr5   Zextra_formsr…   Ú
empty_form)r8   Zreadonly_fields_for_editingr.   Úoriginalr‰   r#   r#   r$   rC   S  sN    ÿÿø

ù
	ùzInlineAdminFormSet.__iter__c           
      c   s  t | jdd ƒ}| jj}|jjp i }|jjp,i }tt| jƒƒD ]Ö\}}|rT|j	|krTq<| j
rd|| jv rÌ|j |¡}d}|d ur„|jj}|| |¡p¤t|| jj| j|d�d|id| |¡pÂt|| jjƒdœV  q<|j| }|j}	|	d u rút|| jj| j|d�}	||	|j|j|jdœV  q<d S )NÚfkFr-   rT   )rA   r   r   r   rk   )r}   r„   rŒ   rm   rn   rp   r[   r   r3   rA   r†   r7   rG   Úgetr   rT   r   rƒ   ro   r   r   r   rk   )
r8   rŽ   rŒ   Zmeta_labelsZmeta_help_textsr^   r2   Z
form_fieldZwidget_is_hiddenr   r#   r#   r$   rG   ~  sJ    
ü
ô

ÿûzInlineAdminFormSet.fieldsc                 C   s@   | j j}t d| jj | jjtdƒdt|ƒi tdƒdœdœ¡S )Nz#%szAdd another %(verbose_name)sÚverbose_nameZRemove)ÚprefixZaddTextZ
deleteText)rA   rB   )rƒ   r�   ÚjsonÚdumpsr„   r‘   r   r   )r8   r�   r#   r#   r$   Úinline_formset_data¨  s    
ÿÿúþÿz&InlineAdminFormSet.inline_formset_datac                 C   s   | j jS rD   )r„   r   r=   r#   r#   r$   r   ¸  s    zInlineAdminFormSet.formsc                 C   s
   | j  ¡ S rD   )r„   Únon_form_errorsr=   r#   r#   r$   r•   ¼  s    z"InlineAdminFormSet.non_form_errorsc                 C   s   | j jS rD   )r„   rH   r=   r#   r#   r$   rH   ¿  s    zInlineAdminFormSet.is_boundc                 C   s   | j jS rD   )r„   Útotal_form_countr=   r#   r#   r$   r–   Ã  s    z#InlineAdminFormSet.total_form_countc                 C   s(   | j j| jj }| D ]}||j7 }q|S rD   )rƒ   rI   r„   rJ   r#   r#   r$   rI   Ç  s    zInlineAdminFormSet.media)NNNTTTT)r   r   r    Ú__doc__r9   rC   rG   r”   rL   r   r•   rH   r–   rI   r#   r#   r#   r$   r‚   1  s*   	       õ
+*


r‚   c                       sJ   e Zd ZdZd‡ fdd„	Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	‡  Z
S )r‹   zF
    A wrapper around an inline form for use in the admin system.
    Nc	           	         s>   || _ || _|| _|o|d u| _|| _tƒ  |||||¡ d S rD   )r„   r6   r�   Úshow_urlZabsolute_urlÚsuperr9   )	r8   r„   r.   r3   r5   r�   r7   r6   r‰   ©r<   r#   r$   r9   Ô  s    
ÿzInlineAdminForm.__init__c                 c   s8   | j D ],\}}t| j| j|| jfd| ji|¤ŽV  qd S )Nr6   )r3   ÚInlineFieldsetr„   r.   r7   r6   r@   r#   r#   r$   rC   è  s    üûúzInlineAdminForm.__iter__c                 C   s>   | j jjjjp<| j jjjjj p<tdd„ | j jjj ¡ D ƒƒS )Nc                 s   s&   | ]}|j jp|j jj jj V  qd S rD   )rm   Ú
auto_fieldro   rt   Úeditable)r+   Úparentr#   r#   r$   rU   ü  s   ÿz:InlineAdminForm.needs_explicit_pk_field.<locals>.<genexpr>)r.   rm   ro   rœ   rt   r�   ÚanyZget_parent_listr=   r#   r#   r$   Úneeds_explicit_pk_fieldó  s    ÿþøz'InlineAdminForm.needs_explicit_pk_fieldc                 C   s   t | j| jjjdƒS r%   )r]   r.   r„   Z	_pk_fieldrA   r=   r#   r#   r$   Úpk_field  s    zInlineAdminForm.pk_fieldc                 C   s*   t | jdd ƒ}|r"t| j|jdƒS dS d S )NrŽ   Fr   )r}   r„   r]   r.   rA   )r8   rŽ   r#   r#   r$   Úfk_field  s    zInlineAdminForm.fk_fieldc                 C   s   ddl m} t| j|dƒS )Nr   )ÚDELETION_FIELD_NAMEF)Zdjango.forms.formsetsr£   r]   r.   )r8   r£   r#   r#   r$   Údeletion_field  s    zInlineAdminForm.deletion_field)NNN)r   r   r    r—   r9   rC   r    r¡   r¢   r¤   Ú__classcell__r#   r#   rš   r$   r‹   Ï  s      ÷r‹   c                       s$   e Zd Z‡ fdd„Zdd„ Z‡  ZS )r›   c                    s   || _ tƒ j|i |¤Ž d S rD   )r„   r™   r9   )r8   r„   rs   Úkwargsrš   r#   r$   r9     s    zInlineFieldset.__init__c                 c   sD   t | jdd ƒ}| jD ]*}|r&|j|krt| j|| j| jd�V  qd S )NrŽ   rR   )r}   r„   rG   rA   rS   r.   r7   r6   )r8   rŽ   r0   r#   r#   r$   rC     s    
ÿzInlineFieldset.__iter__)r   r   r    r9   rC   r¥   r#   r#   rš   r$   r›     s   r›   c                       s    e Zd ZdZ‡ fdd„Z‡  ZS )ÚAdminErrorListz9Store errors for the form/formsets in an add/change view.c                    sV   t ƒ  ¡  |jrR|  |j ¡ ¡ |D ],}|  | ¡ ¡ |jD ]}|  | ¡ ¡ q<q$d S rD   )r™   r9   rH   ÚextendrE   Úvaluesr•   )r8   r.   Zinline_formsetsZinline_formsetZerrors_in_inline_formrš   r#   r$   r9   #  s    

zAdminErrorList.__init__)r   r   r    r—   r9   r¥   r#   r#   rš   r$   r§      s   r§   )1r’   Údjangor   Zdjango.contrib.admin.utilsr   r   r   r   r   r   Zdjango.core.exceptionsr	   Zdjango.db.models.fields.relatedr
   r   r   Zdjango.forms.utilsr   Zdjango.template.defaultfiltersr   r   Zdjango.urlsr   r   Zdjango.utils.htmlr   r   Zdjango.utils.safestringr   Zdjango.utils.translationr   r   r!   ZACTION_CHECKBOX_NAMEZFormr   rb   Zcheckboxr)   r?   rS   r]   r\   r‚   r‹   r›   ÚutilsZ	ErrorListr§   r#   r#   r#   r$   Ú<module>   s0    
<#k C