a
    ÛEbH  ã                   @   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 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m.Z. dZ/G dd„ de-ƒZ0G dd„ de0ƒZ1G dd„ de0ƒZ2G dd„ de0ƒZ3G d d!„ d!e0ƒZ4G d"d#„ d#e0ƒZ5G d$d%„ d%e0ƒZ6G d&d'„ d'e0ƒZ7G d(d)„ d)e0ƒZ8d*d+„ Z9d,d-„ Z:d3d/d0„Z;d1d2„ Z<dS )4é    N)Úimport_module)Úcleandoc)ÚPath)Úapps)Úadmin)Ústaff_member_required)Úutils)Ú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__© ú^/home/ja/django-apps/lartica_env/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,   r.   r/   r1   /   s    
ÿþÿz"BaseAdminDocsView.get_context_data)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r'   r1   Ú__classcell__r.   r.   r,   r/   r"   "   s   r"   c                   @   s   e Zd ZdZdS )ÚBookmarkletsViewzadmin_doc/bookmarklets.htmlN)r2   r3   r4   r#   r.   r.   r.   r/   r7   8   s   r7   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 nØ0 t|j ¡ ƒ}dd„ |jD ƒ}|| D ]®\}}|j ¡ D ]š\}}	t 	|	j
¡\}
}}|
oŽt |
dtdƒ| ¡}
|o¨t |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.   ©Ú.0Úlibr.   r.   r/   Ú
<listcomp>H   ó    z9TemplateTagIndexView.get_context_data.<locals>.<listcomp>Útagztag:Ú.éÿÿÿÿ©ÚnameÚtitleÚbodyÚmetaÚlibraryÚtags)r   Úget_defaultr   ÚsortedÚtemplate_librariesÚitemsÚtemplate_builtinsrI   r   Úparse_docstringr5   Ú	parse_rstr   ÚsplitÚappendr&   r1   )r(   r+   rI   ÚengineÚapp_libsÚbuiltin_libsÚmodule_namerH   Ztag_nameZtag_funcrE   rF   ÚmetadataÚkeyÚtag_libraryr,   r.   r/   r1   ?   s8    ÿÿ
ûÿ	z%TemplateTagIndexView.get_context_data©r2   r3   r4   r#   r1   r6   r.   r.   r,   r/   r8   <   s   r8   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 nØ0 t|j ¡ ƒ}dd„ |jD ƒ}|| D ]®\}}|j ¡ D ]š\}}	t 	|	j
¡\}
}}|
oŽt |
dtdƒ| ¡}
|o¨t |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 r9   r.   r;   r.   r.   r/   r>   m   r?   z<TemplateFilterIndexView.get_context_data.<locals>.<listcomp>Úfilterzfilter:rA   rB   rC   Úfilters)r   rJ   r   rK   rL   rM   rN   r]   r   rO   r5   rP   r   rQ   rR   r&   r1   )r(   r+   r]   rS   rT   rU   rV   rH   Zfilter_nameZfilter_funcrE   rF   rW   rX   rY   r,   r.   r/   r1   d   s<    ÿÿÿ
ûÿ	z(TemplateFilterIndexView.get_context_datarZ   r.   r.   r,   r/   r[   a   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Ú	namespacerD   Úviews)r   r   Úextract_views_from_urlpatternsÚurl_patternsr   rR   r   Úsimplify_regexÚjoinr&   r1   )	r(   r+   rb   Zurl_resolverZview_functionsÚfuncÚregexra   rD   r,   r.   r/   r1   ‹   s     

ûÿ	zViewIndexView.get_context_datarZ   r.   r.   r,   r/   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 r0   )r   r   Z_is_callbackr   Úgetattrr   ÚImportError)ÚviewZurlconfÚmodrg   Úklassr.   r.   r/   Ú_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 )Nrl   zview:Úmodel)rD   ÚsummaryrF   rG   )
r+   ro   r   r   rO   r5   rP   r   r&   r1   )r(   r+   rl   Z	view_funcrE   rF   rW   rX   r,   r.   r/   r1   ³   s&    

 
ÿûÿzViewDetailView.get_context_data)r2   r3   r4   r#   Ústaticmethodro   r1   r6   r.   r.   r,   r/   ri   Ÿ   s   
ri   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 r.   )Ú_meta)r<   Úmr.   r.   r/   r>   Ì   r?   z3ModelIndexView.get_context_data.<locals>.<listcomp>r   )r   Z
get_modelsr&   r1   )r(   r+   Zm_listr,   r.   r/   r1   Ë   s    zModelIndexView.get_context_datarZ   r.   r.   r,   r/   rs   È   s   rs   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
¡\}}}|o¨t |dtdƒ| ¡}|oÂt |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ƒ�röz t!D ]}| "|¡�r"t#‚�q"W n t#�yV   Y �qöY n0 |j
}|�o~t t$|ƒdtdƒ|j ¡}t|tt fƒ�r®|	 |t%|ƒ|�p¤d	dœ¡ npt&|ƒ�rêt'|ƒ�sêt(|ƒ�sê|	 |t%|ƒ|�pàd	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)rrp   zmodel:z0the related `%(app_label)s.%(data_type)s` object)rx   Ú	data_typer:   )rD   ry   ÚverboseÚ	help_textz/related `%(app_label)s.%(object_name)s` objects)rx   Úobject_namez%s.allÚListzall %s)rD   ry   rz   z%s.countÚIntegerznumber of %sz, c              
   S   s.   g | ]&}d   |d gtt|dd… ƒ¢¡‘qS )ú=r   r   N)rf   ÚmapÚrepr)r<   Zarg_elr.   r.   r/   r>   R  s   ÿz4ModelDetailView.get_context_data.<locals>.<listcomp>)rD   Ú	argumentsrz   )rD   rq   ÚdescriptionÚfieldsÚmethods)2r+   r   Zget_app_configÚLookupErrorr   r   Z	get_modelrt   r   rO   r5   rP   r„   Ú
isinstancer   Z
ForeignKeyZremote_fieldrp   r2   rx   Úget_readable_field_data_typeZverbose_namerR   rD   r{   Zmany_to_manyrw   Ú__dict__rM   ÚinspectÚ
isfunctionr   ÚpropertyÚMODEL_METHODS_EXCLUDEÚ
startswithÚStopIterationr   Úget_return_data_typer   r   r   r   rf   Zrelated_objectsZrelated_modelr|   Zget_accessor_namer&   r1   Úlabel)r(   r+   rw   Z
app_configrp   ÚoptsrE   rF   rW   r„   Úfieldry   rx   rz   r…   Ú	func_namerg   Úexcluder‚   Úprint_argumentsÚrelÚaccessorr,   r.   r/   r1   Ó   s$   
ÿ


þÿ
÷üÿ


þÿýÿ	
ýýÿÿÿÿýÿÿþýýÿþÿýÿ	
þÿýÿ	
ýýÿ
ÿúÿz ModelDetailView.get_context_datarZ   r.   r.   r,   r/   rv   Ð   s   rv   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)rD   Ú	templates)r+   r   rJ   r   Ú	enumerateÚdirsr   r   rœ   Ú	read_textrR   r&   r1   )	r(   r+   rš   rŸ   Zdefault_engineÚindexÚ	directoryZtemplate_fileZtemplate_contentsr,   r.   r/   r1   ‰  s4    

üÿ
ÿýÿz#TemplateDetailView.get_context_datarZ   r.   r.   r,   r/   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”   r.   r.   r/   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“   r.   r.   r/   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ƒr´z$| |j	|t|jƒ ||j
f¡ W qÄ ty°   Y qY qÄ0 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 two-tuple: (view_func, regex)
    rd   Úcallbackz,%s does not appear to be a urlpattern object)Úhasattrrd   rk   Úextendrc   ÚstrÚpatternra   rR   r¨   rD   r   Ú	TypeErrorr   )ZurlpatternsÚbasera   rb   ÚpÚpatternsr.   r.   r/   rc   Â  s*    


ýÿ
$rc   c                 C   sB   t | ƒ} t| ƒ} |  dd¡ dd¡ dd¡} |  d¡s>d|  } | 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
   ÚreplacerŽ   )r¬   r.   r.   r/   re   à  s    
re   )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
   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"   r7   r8   r[   r^   ri   rs   rv   r™   r�   rˆ   rc   re   r.   r.   r.   r/   Ú<module>   sF   %') 7)
	
