a
    ¦Q•h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   ÚChoiceFieldÚ_ÚactionÚBooleanFieldÚHiddenInputÚselect_across© r'   r'   úU/var/www/sistema_ama/venv/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_namer5   r1   r'   r(   r3   4   s   ÿz&AdminForm.__init__.<locals>.<listcomp>r'   )r2   Ú	fieldsetsÚitemsÚprepopulated_fieldsÚmodel_adminÚreadonly_fields)Úselfr2   r7   r9   r;   r:   r'   r1   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    r2   r7   ©r<   r'   r'   r(   Ú__repr__=   s    ÿþÿzAdminForm.__repr__c                 c   s4   | j D ](\}}t| j|f| j| jdœ|¤ŽV  qd S )N)r;   r:   )r7   ÚFieldsetr2   r;   r:   ©r<   ÚnameÚoptionsr'   r'   r(   Ú__iter__D   s    þüûzAdminForm.__iter__c                 C   s   | j jS ©N)r2   ÚerrorsrA   r'   r'   r(   rI   N   s    zAdminForm.errorsc                 C   s   | j jS rH   )r2   Únon_field_errorsrA   r'   r'   r(   rJ   R   s    zAdminForm.non_field_errorsc                 C   s   | j jS rH   )r2   ÚfieldsrA   r'   r'   r(   rK   V   s    zAdminForm.fieldsc                 C   s   | j jS rH   )r2   Úis_boundrA   r'   r'   r(   rL   Z   s    zAdminForm.is_boundc                 C   s    | j j}| D ]}||j7 }q|S rH   )r2   Úmedia©r<   rM   Úfsr'   r'   r(   rM   ^   s    zAdminForm.media)NN)r   r   r    r=   rB   rG   ÚpropertyrI   rJ   rK   rL   rM   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 )
rC   Nr'   c                 C   s6   || _ || | _| _d |¡| _|| _|| _|| _d S )Nú )r2   rE   rK   ÚjoinÚclassesÚdescriptionr:   r;   )r<   r2   rE   r;   rK   rS   rT   r:   r'   r'   r(   r=   g   s    
zFieldset.__init__c                 C   s    d| j v rtjdgd�S t ¡ S )NÚcollapsezadmin/js/collapse.js)Újs)rS   r   ÚMediarA   r'   r'   r(   rM   x   s    
zFieldset.mediac                 c   s(   | j D ]}t| j|| j| jd�V  qd S )N©r:   )rK   Ú	Fieldliner2   r;   r:   )r<   r4   r'   r'   r(   rG   ~   s    
ÿzFieldset.__iter__)Nr'   r'   r'   NN)r   r   r    r=   rP   rM   rG   r'   r'   r'   r(   rC   f   s         ø

rC   c                   @   s&   e Zd Zddd„Zdd„ Zdd„ ZdS )	rY   Nc                    sb   |ˆ _ t|dƒrt|tƒr$|gˆ _n|ˆ _t‡ fdd„ˆ jD ƒƒ ˆ _|ˆ _|d u rXd}|ˆ _d S )NrG   c                 3   s*   | ]"}|ˆ j jv o ˆ j j| jjV  qd S rH   )r2   rK   r   Ú	is_hidden)r/   r4   rA   r'   r(   Ú	<genexpr>Œ   s   ÿz%Fieldline.__init__.<locals>.<genexpr>r'   )	r2   ÚhasattrÚ
isinstanceÚstrrK   ÚallZhas_visible_fieldr:   r;   )r<   r2   r4   r;   r:   r'   rA   r(   r=   †   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_firstr:   )r`   )Ú	enumeraterK   r;   ÚAdminReadonlyFieldr2   r:   Ú
AdminField)r<   Úir4   r'   r'   r(   rG   •   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 rH   )r;   r2   rI   Úas_ulr.   rA   r'   r(   r[       s   
þz#Fieldline.errors.<locals>.<genexpr>)r   rR   rK   ÚstriprA   r'   rA   r(   rI   ž   s    þüÿzFieldline.errors)NN)r   r   r    r=   rG   rI   r'   r'   r'   r(   rY   …   s   
	rY   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )rc   c                 C   s.   || | _ || _t| j j jtjƒ| _d| _d S r)   )r4   r`   r]   r   r   ÚCheckboxInputÚis_checkboxÚis_readonly)r<   r2   r4   r`   r'   r'   r(   r=   ©   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   rQ   r   )ÚcontentsÚattrsÚlabel_suffix)
r   r4   r   ri   Úappendr   r`   rR   Ú	label_tagr   )r<   rS   rl   rm   r'   r'   r(   rp   ¯   s    



ýzAdminField.label_tagc                 C   s   t | jj ¡ ƒS rH   )r   r4   rI   rf   rA   r'   r'   r(   rI   Â   s    zAdminField.errorsN)r   r   r    r=   rp   rI   r'   r'   r'   r(   rc   ¨   s   rc   c                   @   s.   e Zd Zd
dd„Zdd„ Zdd„ Zdd	„ ZdS )rb   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   r1   F)rE   r   Ú	help_textr4   rZ   T)Úcallabler   Ú_metaÚlabelsr   ÚmodelÚ
help_textsr   rK   r   rZ   r4   r2   r:   r`   ri   rj   Úget_empty_value_displayÚempty_value_display)	r<   r2   r4   r`   r:   Ú
class_namer   rq   rZ   r'   r'   r(   r=   Ç   s0    
ûzAdminReadonlyField.__init__c                 C   s6   i }| j sd|d< | jd }tdt|ƒt|ƒ| jjƒS )Nrk   r   r   z<label{}>{}{}</label>)r`   r4   r   r   r   r2   rn   )r<   rm   r   r'   r'   r(   rp   í   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)ÚargsÚcurrent_appz<a href="{}">{}</a>)ru   rs   Ú	app_labelÚ
model_namer   r   Úpkr:   Ú
admin_siterE   r   r   r^   )r<   Úremote_fieldZ
remote_objÚ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_iconr4   Z	read_onlyFÚbooleanÚ__html__z, )Z,django.contrib.admin.templatetags.admin_listr„   r4   r2   Úinstancer:   r   ÚAttributeErrorÚ
ValueErrorr	   rx   rK   r   ÚgetattrÚrenderr\   r   r]   r€   r   rR   Úmapr^   r_   r
   r   rƒ   r   r   )
r<   r„   r4   Úobjr:   r0   Úattrr*   Zresult_reprr   r'   r'   r(   rl     s:    ý



ÿþzAdminReadonlyField.contents)N)r   r   r    r=   rp   rƒ   rl   r'   r'   r'   r(   rb   Æ   s   
&rb   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'   rQ   r   )ÚoptsÚformsetr7   r:   r;   r9   rS   rR   Úhas_add_permissionÚhas_change_permissionÚhas_delete_permissionÚhas_view_permission)r<   rk   r‘   r7   r9   r;   r:   r’   r“   r”   r•   r'   r'   r(   r=   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)r:   Úview_on_site_urlrX   )r“   r;   r   r7   Úzipr‘   Úinitial_formsÚget_querysetr�   Úget_view_on_site_urlÚInlineAdminFormr9   Úextra_formsr’   Ú
empty_form)r<   Zreadonly_fields_for_editingr2   Úoriginalr–   r'   r'   r(   rG   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ÚfkFr1   rZ   )rE   r   r   r   rq   )rŠ   r‘   r�   rs   rt   rv   ra   r   r7   rE   r“   r;   rK   Úgetr   rZ   r   r�   ru   r   r   r   rq   )
r<   rŸ   r�   Zmeta_labelsZmeta_help_textsrd   r6   Ú
form_fieldZwidget_is_hiddenr   r'   r'   r(   rK   ~  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)rE   rF   )r�   r¢   ÚjsonÚdumpsr‘   r£   r   r   )r<   r¢   r'   r'   r(   Úinline_formset_data¨  s    
ÿÿúþÿz&InlineAdminFormSet.inline_formset_datac                 C   s   | j jS rH   )r‘   r   rA   r'   r'   r(   r   ¸  s    zInlineAdminFormSet.formsc                 C   s
   | j  ¡ S rH   )r‘   Únon_form_errorsrA   r'   r'   r(   r§   ¼  s    z"InlineAdminFormSet.non_form_errorsc                 C   s   | j jS rH   )r‘   rL   rA   r'   r'   r(   rL   ¿  s    zInlineAdminFormSet.is_boundc                 C   s   | j jS rH   )r‘   Útotal_form_countrA   r'   r'   r(   r¨   Ã  s    z#InlineAdminFormSet.total_form_countc                 C   s(   | j j| jj }| D ]}||j7 }q|S rH   )r�   rM   r‘   rN   r'   r'   r(   rM   Ç  s    zInlineAdminFormSet.media)NNNTTTT)r   r   r    Ú__doc__r=   rG   rK   r¦   rP   r   r§   rL   r¨   rM   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 rH   )r‘   r:   rž   Zshow_urlÚabsolute_urlÚsuperr=   )	r<   r‘   r2   r7   r9   rž   r;   r:   r–   ©r@   r'   r(   r=   Ô  s    
ÿzInlineAdminForm.__init__c                 c   s8   | j D ],\}}t| j| j|| jfd| ji|¤ŽV  qd S )Nr:   )r7   ÚInlineFieldsetr‘   r2   r;   r:   rD   r'   r'   r(   rG   è  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 rH   )rs   Ú
auto_fieldru   r~   Úeditable)r/   Úparentr'   r'   r(   r[   ü  s   ÿz:InlineAdminForm.needs_explicit_pk_field.<locals>.<genexpr>)r2   rs   ru   r®   r~   r¯   ÚanyÚget_parent_listrA   r'   r'   r(   Úneeds_explicit_pk_fieldó  s    ÿþøz'InlineAdminForm.needs_explicit_pk_fieldc                 C   s   t | j| jjjdƒS r)   )rc   r2   r‘   Ú	_pk_fieldrE   rA   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‘   rc   r2   rE   )r<   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)Údjango.forms.formsetsr·   rc   r2   )r<   r·   r'   r'   r(   Údeletion_field  s    zInlineAdminForm.deletion_field)NNN)r   r   r    r©   r=   rG   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 rH   )r‘   r«   r=   )r<   r‘   rz   Úkwargsr¬   r'   r(   r=     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Ÿ   rX   )rŠ   r‘   rK   rE   rY   r2   r;   r:   )r<   rŸ   r4   r'   r'   r(   rG     s    
ÿzInlineFieldset.__iter__)r   r   r    r=   rG   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 rH   )r«   r=   rL   ÚextendrI   Úvaluesr§   )r<   r2   Úinline_formsetsÚinline_formsetZerrors_in_inline_formr¬   r'   r(   r=   #  s    

zAdminErrorList.__init__)r   r   r    r©   r=   rº   r'   r'   r¬   r(   r¼      s   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   rh   Úcheckboxr-   rC   rY   rc   rb   r�   r›   r­   ÚutilsÚ	ErrorListr¼   r'   r'   r'   r(   Ú<module>   s0    
<#k C