o
    þÞhtL  ã                   @   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 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" 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/Z0 d dl1m2Z2 ddlm3Z3m4Z4 dZ5G dd„ de2ƒZ6G dd„ de6ƒZ7G dd„ de6ƒZ8G dd „ d e6ƒZ9G d!d"„ d"e6ƒZ:G d#d$„ d$e6ƒZ;d%d&„ Z<G d'd(„ d(e6ƒZ=G d)d*„ d*e6ƒZ>G d+d,„ d,e6ƒZ?d-d.„ Z@d/d0„ ZAd6d2d3„ZBd4d5„ ZCdS )7é    N)Úimport_module)Úcleandoc)ÚPath)Úapps)Úadmin)Ústaff_member_required)Úutils)Úremove_non_capturing_groupsÚreplace_metacharactersÚreplace_named_groupsÚreplace_unnamed_groups)Úget_permission_codename)ÚImproperlyConfiguredÚPermissionDeniedÚ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Ústrip_p_tags)Ú_Ú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   Údocutils_is_availableÚtemplate_nameÚrender_to_responser   ÚsiteÚeach_contextÚsuperÚdispatch)ÚselfÚrequestÚargsÚkwargs©Ú	__class__© ú^/var/www/html/premium_crap/venv/lib/python3.10/site-packages/django/contrib/admindocs/views.pyr/   1   s   zBaseAdminDocsView.dispatchc                    s$   t ƒ jdi i |¥tj | j¡¥¤ŽS )Nr6   )r.   Úget_context_datar   r,   r-   r1   )r0   r3   r4   r6   r7   r8   9   s   
ÿþÿz"BaseAdminDocsView.get_context_data)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r/   r8   Ú__classcell__r6   r6   r4   r7   r(   ,   s
    r(   c                   @   s   e Zd ZdZdS )ÚBookmarkletsViewzadmin_doc/bookmarklets.htmlN)r9   r:   r;   r*   r6   r6   r6   r7   r>   B   s    r>   c                       ó    e Zd ZdZ‡ fdd„Z‡  ZS )ÚTemplateTagIndexViewz!admin_doc/template_tag_index.htmlc              
      ó  g }zt  ¡ }W n	 ty   Y nlw t|j ¡ ƒ}dd„ |jD ƒ}|| D ]W\}}|j ¡ D ]M\}}	t 	|	j
¡\}
}}|
oGt |
dtdƒ| ¡}
|oTt |dtdƒ| ¡}|D ]}t || dtdƒ| ¡||< qW| d¡d }| ||
|||dœ¡ q.q%tƒ jd	i i |¥d|i¥¤ŽS )
Nc                 S   ó   g | ]}d |f‘qS ©Ú r6   ©Ú.0Úlibr6   r6   r7   Ú
<listcomp>R   ó    z9TemplateTagIndexView.get_context_data.<locals>.<listcomp>Útagztag:Ú.éÿÿÿÿ©ÚnameÚtitleÚbodyÚmetaÚlibraryÚtagsr6   )r   Úget_defaultr   ÚsortedÚtemplate_librariesÚitemsÚtemplate_builtinsrS   r   Úparse_docstringr<   Ú	parse_rstr#   ÚsplitÚappendr.   r8   )r0   r3   rS   ÚengineÚapp_libsÚbuiltin_libsÚmodule_namerR   Útag_nameÚtag_funcrO   rP   ÚmetadataÚkeyÚtag_libraryr4   r6   r7   r8   I   s<   þÿ
ÿûÿõz%TemplateTagIndexView.get_context_data©r9   r:   r;   r*   r8   r=   r6   r6   r4   r7   r@   F   ó    r@   c                       r?   )ÚTemplateFilterIndexViewz$admin_doc/template_filter_index.htmlc              
      rA   )
Nc                 S   rB   rC   r6   rE   r6   r6   r7   rH   w   rI   z<TemplateFilterIndexView.get_context_data.<locals>.<listcomp>Úfilterzfilter:rK   rL   rM   Úfiltersr6   )r   rT   r   rU   rV   rW   rX   rj   r   rY   r<   rZ   r#   r[   r\   r.   r8   )r0   r3   rj   r]   r^   r_   r`   rR   Úfilter_nameÚfilter_funcrO   rP   rc   rd   re   r4   r6   r7   r8   n   s@   þÿÿ
ÿûÿóz(TemplateFilterIndexView.get_context_datarf   r6   r6   r4   r7   rh   k   rg   rh   c                       r?   )ÚViewIndexViewzadmin_doc/view_index.htmlc           	   	      s¤   g }t tƒ ƒ}zt|jƒ}W n ty   g }Y nw |D ]&\}}}}| t|ƒt|ƒd |p/g |r4|gp5g  ¡d |p<g ¡|dœ¡ qt	ƒ j
di i |¥d|i¥¤ŽS )Nú:)Ú	full_nameÚurlÚurl_nameÚ	namespacerN   Úviewsr6   )r   r   Úextract_views_from_urlpatternsÚurl_patternsr   r\   r!   Úsimplify_regexÚjoinr.   r8   )	r0   r3   rs   Úurl_resolverÚview_functionsÚfuncÚregexrr   rN   r4   r6   r7   r8   •   s"   
ÿûÿ	zViewIndexView.get_context_datarf   r6   r6   r4   r7   rm   ’   rg   rm   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|ƒ | ¡r2t| ƒ\}}ztt|ƒ|ƒW S  ty1   t|ƒ\}}ttt|ƒ|ƒ|ƒ Y S w d S )N)r   r   Ú_is_callbackr   Úgetattrr   ÚImportError)ÚviewÚurlconfÚmodrz   Úklassr6   r6   r7   Ú_get_view_func¬   s   úúzViewDetailView._get_view_funcc              	      s¶   | j d }|  |¡}|d u rt‚t |j¡\}}}|o%t |dtdƒ| ¡}|o2t |dtdƒ| ¡}|D ]}t || dtdƒ| ¡||< q5tƒ j	di i |¥|t
|ƒ||dœ¥¤ŽS )Nr€   zview:Úmodel)rN   ÚsummaryrP   rQ   r6   )r3   r„   r   r   rY   r<   rZ   r#   r.   r8   r"   )r0   r3   r€   Ú	view_funcrO   rP   rc   rd   r4   r6   r7   r8   ½   s&   

 
ÿûÿzViewDetailView.get_context_data)r9   r:   r;   r*   Ústaticmethodr„   r8   r=   r6   r6   r4   r7   r|   ©   s
    
r|   c                 C   s<   t d|ƒ}t d|ƒ}|  d|j|f ¡p|  d|j|f ¡S )z)Based off ModelAdmin.has_view_permission.r€   Úchangez%s.%s)r   Úhas_permÚ	app_label)ÚuserÚoptsÚcodename_viewÚcodename_changer6   r6   r7   Úuser_has_model_view_permissionÒ   s
   

ÿr�   c                       r?   )ÚModelIndexViewzadmin_doc/model_index.htmlc                    s4   ‡ fdd„t  ¡ D ƒ}tƒ jdi i |¥d|i¥¤ŽS )Nc                    s"   g | ]}t ˆ jj|jƒr|j‘qS r6   )r�   r1   rŒ   Ú_meta)rF   Úm©r0   r6   r7   rH   ß   s    ýÿz3ModelIndexView.get_context_data.<locals>.<listcomp>r   r6   )r   Ú
get_modelsr.   r8   )r0   r3   Úm_listr4   r”   r7   r8   Þ   s   
þzModelIndexView.get_context_datarf   r6   r6   r4   r7   r‘   Û   rg   r‘   c                       r?   )ÚModelDetailViewzadmin_doc/model_detail.htmlc                    sÞ  | j d }z
t | j d ¡}W n ty   ttdƒ| j  ƒ‚w z| |¡}W n ty7   ttdƒ| j  ƒ‚w |j}t| j	j
|ƒsDt‚t |j¡\}}}|oYt |dtdƒ| ¡}|oft |dtdƒ| ¡}g }	|jD ];}
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
œ¡ ql|jD ]J}
|
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œ¡ q«g }|j  ¡ D ]�\}}t! "|¡�st|t#t$fƒ�r�zt%D ]}| &|¡�rt'‚�qW n
 t'�y)   Y qýw |j}|�o=t t(|ƒdtdƒ|j ¡}t|t#t$fƒ�rU|	 |t)|ƒ|�pPd	dœ¡ qýt*|ƒ�rst+|ƒ�sst,|ƒ�ss|	 |t)|ƒ|�pnd	dœ¡ qýt-|ƒ}d .dd„ |D ƒ¡}| |||�p‰d	dœ¡ qý|j/D ]G}tdƒ|j0jj|j0jj1dœ }|j2}|	 d| dt tdƒ| dtdƒ|j ¡dœ¡ |	 d| dt tdƒ| dtdƒ|j ¡dœ¡ �q‘t3ƒ j4di i |¥|j5t6|ƒ||	|dœ¥¤ŽS )NÚ
model_namer‹   zApp %(app_label)r not foundz3Model %(model_name)r not found in app %(app_label)rr…   zmodel:z0the related `%(app_label)s.%(data_type)s` object)r‹   Ú	data_typerD   )rN   r™   ÚverboseÚ	help_textz/related `%(app_label)s.%(object_name)s` objects)r‹   Úobject_namez%s.allÚListzall %s)rN   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)rw   ÚmapÚrepr)rF   Úarg_elr6   r6   r7   rH   k  s     ÿÿz4ModelDetailView.get_context_data.<locals>.<listcomp>)rN   Ú	argumentsrš   )rN   r†   ÚdescriptionÚfieldsÚmethodsr6   )7r3   r   Úget_app_configÚLookupErrorr   r#   Ú	get_modelr’   r�   r1   rŒ   r   r   rY   r<   rZ   r¥   Ú
isinstancer   Ú
ForeignKeyÚremote_fieldr…   r9   r‹   Úget_readable_field_data_typeÚverbose_namer\   rN   r›   Úmany_to_manyr˜   Ú__dict__rW   ÚinspectÚ
isfunctionr   ÚpropertyÚMODEL_METHODS_EXCLUDEÚ
startswithÚStopIterationr   Úget_return_data_typer   r   r   r   rw   Úrelated_objectsÚrelated_modelrœ   Úaccessor_namer.   r8   Úlabelr"   )r0   r3   r˜   Ú
app_configr…   r�   rO   rP   rc   r¥   Úfieldr™   r‹   rš   r¦   Ú	func_namerz   Úexcluder£   Úprint_argumentsÚrelÚaccessorr4   r6   r7   r8   ê   s4  
ÿÿÿ

þÿ
÷üÿ


þÿýÿ	
ýýÿÿÿÿÿÿÿýÿÿþýýÿþÿýÿ€
	þÿýÿ	
ýýÿ
ÿúÿz ModelDetailView.get_context_datarf   r6   r6   r4   r7   r—   ç   rg   r—   c                       r?   )ÚTemplateDetailViewzadmin_doc/template_detail.htmlc                    sÜ   | j d }g }zt ¡ }W n	 ty   Y nHw t|jƒ}|jD ]}t|dƒr6| ¡ D ]}||vr5| 	|¡ q*qt
|ƒD ]"\}}	tt|	|ƒƒ}
|
 ¡ rO|
 ¡ }nd}| 	|
|
 ¡ ||dœ¡ q;tƒ jdi i |¥||dœ¥¤ŽS )NÚtemplateÚget_dirsrD   )ÚfileÚexistsÚcontentsÚorder)rN   Ú	templatesr6   )r3   r   rT   r   ÚlistÚdirsÚtemplate_loadersÚhasattrrÅ   r\   Ú	enumerater   r   rÇ   Ú	read_textr.   r8   )r0   r3   rÄ   rÊ   Údefault_engineÚdirectoriesÚloaderÚdir_ÚindexÚ	directoryÚtemplate_fileÚtemplate_contentsr4   r6   r7   r8   ¢  sD   
þ



€
üÿ
ÿýÿz#TemplateDetailView.get_context_datarf   r6   r6   r4   r7   rÃ   Ÿ  rg   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_Ú_listr�   Ú_countrž   rD   )rµ   Úendswith)r¾   r6   r6   r7   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½   r6   r6   r7   r­   ×  s   r­   rD   c              	   C   s¾   g }| D ]X}t |dƒr4z|j}W n	 ty   Y qw | t||t|jƒ |p'g |jr.|jgp/g  ƒ¡ qt |dƒrUz| |j	|t|jƒ ||j
f¡ W q tyT   Y qw ttdƒ| ƒ‚|S )z˜
    Return a list of views from a list of urlpatterns.

    Each object in the returned list is a 4-tuple:
    (view_func, regex, namespace, name)
    ru   Úcallbackz,%s does not appear to be a urlpattern object)rÎ   ru   r   Úextendrt   ÚstrÚpatternrr   r\   rÝ   rN   r   Ú	TypeErrorr#   )ÚurlpatternsÚbaserr   rs   ÚpÚpatternsr6   r6   r7   rt   à  s.   

ÿýÿ
$ÿrt   c                 C   s6   t | ƒ} t| ƒ} t| ƒ} t| ƒ} |  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   r
   rµ   )rà   r6   r6   r7   rv   ÿ  s   
rv   )rD   N)Dr±   Ú	importlibr   r   Úpathlibr   Údjango.appsr   Údjango.contribr   Ú%django.contrib.admin.views.decoratorsr   Údjango.contrib.admindocsr   Údjango.contrib.admindocs.utilsr	   r
   r   r   Údjango.contrib.authr   Údjango.core.exceptionsr   r   r   Ú	django.dbr   Údjango.httpr   Údjango.template.enginer   Údjango.urlsr   r   r   Údjango.utils._osr   Údjango.utils.decoratorsr   Údjango.utils.functionalr   Údjango.utils.inspectr   r   r   r   Údjango.utils.translationr   r#   Údjango.views.genericr   r!   r"   r´   r(   r>   r@   rh   rm   r|   r�   r‘   r—   rÃ   r·   r­   rt   rv   r6   r6   r6   r7   Ú<module>   sL    %')	 9.

	