a
    5XhH                     @   s  d dl Z d dlmZ d dl mZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d d	lmZmZ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 dlmZmZmZ d dl m!Z! d dl"m#Z# d dl$m%Z% d dl&m'Z'm(Z(m)Z)m*Z* d dl+m,Z- d dl.m/Z/ ddlm0Z0 dZ1G dd de/Z2G dd de2Z3G dd de2Z4G dd de2Z5G d d! d!e2Z6G d"d# d#e2Z7G d$d% d%e2Z8G d&d' d'e2Z9G d(d) d)e2Z:d*d+ Z;d,d- Z<d3d/d0Z=d1d2 Z>dS )4    N)import_module)cleandoc)Path)apps)admin)staff_member_required)utils)remove_non_capturing_groupsreplace_metacharactersreplace_named_groupsreplace_unnamed_groups)ImproperlyConfiguredViewDoesNotExist)models)Http404)Engine)get_mod_funcget_resolverget_urlconf)	safe_join)method_decorator)cached_property)func_accepts_kwargsfunc_accepts_var_argsget_func_full_argsmethod_has_no_args)gettext)TemplateView   )get_view_name)_Zadd_deletesaveset_c                       s4   e Zd ZdZee fddZ fddZ  ZS )BaseAdminDocsViewz(
    Base view for admindocs views.
    c                    s8   t jsd| _| tj|S t j|g|R i |S )Nzadmin_doc/missing_docutils.html)	r   Zdocutils_is_availabletemplate_nameZrender_to_responser   siteeach_contextsuperdispatch)selfrequestargskwargs	__class__ c/var/www/viveiro_mudafortebrasil/venv/lib/python3.9/site-packages/django/contrib/admindocs/views.pyr)   ,   s    zBaseAdminDocsView.dispatchc                    s$   t  jf i i |tj| jS N)r(   get_context_datar   r&   r'   r+   )r*   r-   r.   r0   r1   r3   4   s    
z"BaseAdminDocsView.get_context_data)	__name__
__module____qualname____doc__r   r   r)   r3   __classcell__r0   r0   r.   r1   r$   '   s   r$   c                   @   s   e Zd ZdZdS )BookmarkletsViewzadmin_doc/bookmarklets.htmlN)r4   r5   r6   r%   r0   r0   r0   r1   r9   =   s   r9   c                       s    e Zd ZdZ fddZ  ZS )TemplateTagIndexViewz!admin_doc/template_tag_index.htmlc              
      s  g }zt  }W n ty"   Y n0 t|j }dd |jD }|| D ]\}}|j D ]\}}	t	|	j
\}
}}|
ot|
dtd| }
|ot|dtd| }|D ]"}t|| dtd| ||< q|dd }|||
|||d q\qJt jf i i |d|iS )	Nc                 S   s   g | ]}d |fqS  r0   .0libr0   r0   r1   
<listcomp>M       z9TemplateTagIndexView.get_context_data.<locals>.<listcomp>tagztag:.nametitlebodymetalibrarytags)r   get_defaultr   sortedtemplate_librariesitemstemplate_builtinsrK   r   parse_docstringr7   	parse_rstr    splitappendr(   r3   )r*   r-   rK   engineapp_libsbuiltin_libsmodule_namerJ   Ztag_nameZtag_funcrG   rH   metadatakeytag_libraryr.   r0   r1   r3   D   s8    
	z%TemplateTagIndexView.get_context_datar4   r5   r6   r%   r3   r8   r0   r0   r.   r1   r:   A   s   r:   c                       s    e Zd ZdZ fddZ  ZS )TemplateFilterIndexViewz$admin_doc/template_filter_index.htmlc              
      s  g }zt  }W n ty"   Y n0 t|j }dd |jD }|| D ]\}}|j D ]\}}	t	|	j
\}
}}|
ot|
dtd| }
|ot|dtd| }|D ]"}t|| dtd| ||< q|dd }|||
|||d q\qJt jf i i |d|iS )	Nc                 S   s   g | ]}d |fqS r;   r0   r=   r0   r0   r1   r@   r   rA   z<TemplateFilterIndexView.get_context_data.<locals>.<listcomp>filterzfilter:rC   rD   rE   filters)r   rL   r   rM   rN   rO   rP   r_   r   rQ   r7   rR   r    rS   rT   r(   r3   )r*   r-   r_   rU   rV   rW   rX   rJ   Zfilter_nameZfilter_funcrG   rH   rY   rZ   r[   r.   r0   r1   r3   i   s<    
	z(TemplateFilterIndexView.get_context_datar\   r0   r0   r.   r1   r]   f   s   r]   c                       s    e Zd ZdZ fddZ  ZS )ViewIndexViewzadmin_doc/view_index.htmlc           	   	      s   g }t t }zt|j}W n ty2   g }Y n0 |D ]L\}}}}|t|t|d|p^g |rh|gpjg  d|pxg |d q8t	 j
f i i |d|iS )N:)Z	full_nameurlZurl_name	namespacerF   views)r   r   extract_views_from_urlpatternsurl_patternsr   rT   r   simplify_regexjoinr(   r3   )	r*   r-   rd   Zurl_resolverZview_functionsfuncregexrc   rF   r.   r0   r1   r3      s     

	zViewIndexView.get_context_datar\   r0   r0   r.   r1   r`      s   r`   c                       s,   e Zd ZdZedd Z fddZ  ZS )ViewDetailViewzadmin_doc/view_detail.htmlc                 C   sh   t  }t|| rdt| \}}ztt||W S  tyb   t|\}}ttt||| Y S 0 d S r2   )r   r   Z_is_callbackr   getattrr   ImportError)viewZurlconfmodri   klassr0   r0   r1   _get_view_func   s    zViewDetailView._get_view_funcc              	      s   | j d }| |}|d u r tt|j\}}}|oJt|dtd| }|odt|dtd| }|D ]"}t|| dtd| ||< qjt j	f i i |||||dS )Nrn   zview:model)rF   summaryrH   rI   )
r-   rq   r   r   rQ   r7   rR   r    r(   r3   )r*   r-   rn   Z	view_funcrG   rH   rY   rZ   r.   r0   r1   r3      s&    

 
zViewDetailView.get_context_data)r4   r5   r6   r%   staticmethodrq   r3   r8   r0   r0   r.   r1   rk      s   
rk   c                       s    e Zd ZdZ fddZ  ZS )ModelIndexViewzadmin_doc/model_index.htmlc                    s0   dd t  D }t jf i i |d|iS )Nc                 S   s   g | ]
}|j qS r0   )_meta)r>   mr0   r0   r1   r@      rA   z3ModelIndexView.get_context_data.<locals>.<listcomp>r   )r   Z
get_modelsr(   r3   )r*   r-   Zm_listr.   r0   r1   r3      s    zModelIndexView.get_context_datar\   r0   r0   r.   r1   ru      s   ru   c                       s    e Zd ZdZ fddZ  ZS )ModelDetailViewzadmin_doc/model_detail.htmlc                    s  | j d }zt| j d }W n$ tyB   ttd| j  Y n0 z||}W n$ tyv   ttd| j  Y n0 |j}t	|j
\}}}|ot|dtd| }|ot|dtd| }g }	|jD ]z}
t|
tjr|
jjj}|
jjjj}ttd||d dtd| }nt|
}|
j}|	|
j||p<d	|
jd
 q|jD ]}
|
jjj}|
jjjj}td||d }|	d|
j dttd| dtd|j d |	d|
j dttd| dtd|j d qPg }|j D ](\}}t|st|tt frz t!D ]}|"|r"t#q"W n t#yV   Y qY n0 |j
}|o~tt$|dtd|j }t|tt fr|	|t%||pd	d npt&|rt'|st(|s|	|t%||pd	d n4t)|}d*dd |D }||||pd	d q|j+D ]}td|j,jj|j,jj-d }|. }|	d| dttd| dtd|j d |	d| dttd| dtd|j d q(t/ j0f i i ||j1|||	|dS )N
model_name	app_labelzApp %(app_label)r not foundz3Model %(model_name)r not found in app %(app_label)rrr   zmodel:z0the related `%(app_label)s.%(data_type)s` object)rz   	data_typer<   )rF   r{   verbose	help_textz/related `%(app_label)s.%(object_name)s` objects)rz   object_namez%s.allListzall %s)rF   r{   r|   z%s.countIntegerznumber of %sz, c              
   S   s.   g | ]&}d  |d gtt|dd qS )=r   r   N)rh   maprepr)r>   Zarg_elr0   r0   r1   r@   W  s   z4ModelDetailView.get_context_data.<locals>.<listcomp>)rF   	argumentsr|   )rF   rs   descriptionfieldsmethods)2r-   r   Zget_app_configLookupErrorr   r    Z	get_modelrv   r   rQ   r7   rR   r   
isinstancer   Z
ForeignKeyZremote_fieldrr   r4   rz   get_readable_field_data_typeZverbose_namerT   rF   r}   Zmany_to_manyry   __dict__rO   inspect
isfunctionr   propertyMODEL_METHODS_EXCLUDE
startswithStopIterationr   get_return_data_typer   r   r   r   rh   Zrelated_objectsZrelated_modelr~   Zget_accessor_namer(   r3   label)r*   r-   ry   Z
app_configrr   optsrG   rH   rY   r   fieldr{   rz   r|   r   	func_nameri   excluder   print_argumentsrelaccessorr.   r0   r1   r3      s$   







	
	
	

z ModelDetailView.get_context_datar\   r0   r0   r.   r1   rx      s   rx   c                       s    e Zd ZdZ fddZ  ZS )TemplateDetailViewzadmin_doc/template_detail.htmlc           	         s   | j d }g }zt }W n ty,   Y nR0 t|jD ]D\}}tt||}| r`|	 }nd}|
|| ||d q8t jf i i |||dS )Ntemplater<   )fileexistscontentsorder)rF   	templates)r-   r   rL   r   	enumeratedirsr   r   r   	read_textrT   r(   r3   )	r*   r-   r   r   Zdefault_engineindex	directoryZtemplate_fileZtemplate_contentsr.   r0   r1   r3     s4    


z#TemplateDetailView.get_context_datar\   r0   r0   r.   r1   r     s   r   c                 C   s*   |  dr&| drdS | dr&dS dS )z9Return a somewhat-helpful data type given a function nameget_Z_listr   _countr   r<   )r   endswith)r   r0   r0   r1   r     s    


r   c                 C   s   | j | j S )z
    Return the description for a given field type, if it exists. Fields'
    descriptions can contain format strings, which will be interpolated with
    the values of field.__dict__ before being output.
    )r   r   )r   r0   r0   r1   r     s    r   r<   c              	   C   s   g }| D ]}t |drlz
|j}W n ty6   Y qY n0 |t||t|j |pRg |jr`|jgpbg   qt |drz$||j	|t|j ||j
f W q ty   Y qY q0 qttd| q|S )z
    Return a list of views from a list of urlpatterns.

    Each object in the returned list is a four-tuple:
    (view_func, regex, namespace, name)
    rf   callbackz,%s does not appear to be a urlpattern object)hasattrrf   rm   extendre   strpatternrc   rT   r   rF   r   	TypeErrorr    )Zurlpatternsbaserc   rd   ppatternsr0   r0   r1   re     s*    



$re   c                 C   s6   t | } t| } t| } t| } | ds2d|  } | S )z
    Clean up urlpattern regexes into something more readable by humans. For
    example, turn "^(?P<sport_slug>\w+)/athletes/(?P<athlete_slug>\w+)/$"
    into "/<sport_slug>/athletes/<athlete_slug>/".
    /)r	   r   r   r
   r   )r   r0   r0   r1   rg     s    
rg   )r<   N)?r   	importlibr   r   pathlibr   Zdjango.appsr   Zdjango.contribr   Z%django.contrib.admin.views.decoratorsr   Zdjango.contrib.admindocsr   Zdjango.contrib.admindocs.utilsr	   r
   r   r   Zdjango.core.exceptionsr   r   Z	django.dbr   Zdjango.httpr   Zdjango.template.enginer   Zdjango.urlsr   r   r   Zdjango.utils._osr   Zdjango.utils.decoratorsr   Zdjango.utils.functionalr   Zdjango.utils.inspectr   r   r   r   Zdjango.utils.translationr   r    Zdjango.views.genericr   r   r   r$   r9   r:   r]   r`   rk   ru   rx   r   r   r   re   rg   r0   r0   r0   r1   <module>   sF   %') 7)
	
