
    ihtL                     V   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Z5 G d de2          Z6 G d de6          Z7 G d de6          Z8 G d d e6          Z9 G d! d"e6          Z: G d# d$e6          Z;d% Z< G d& d'e6          Z= G d( d)e6          Z> G d* d+e6          Z?d, Z@d- ZAd1d/ZBd0 ZCdS )2    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                   N     e Zd ZdZ ee           fd            Z fdZ xZS )BaseAdminDocsViewz(
    Base view for admindocs views.
    c                     t           j        s9d| _        |                     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__s       U/var/www/histauto/venv/lib/python3.11/site-packages/django/contrib/admindocs/views.pyr2   zBaseAdminDocsView.dispatch1   sb    * 	M!BD**5:+B+B7+K+KLLLuww9$999&999    c                      t                      j        di i |t          j                            | j                  S )N )r1   get_context_datar   r/   r0   r4   )r3   r6   r7   s     r8   r<   z"BaseAdminDocsView.get_context_data9   sO    'uww' 
 
*))$,77
 
 	
r9   )	__name__
__module____qualname____doc__r   r   r2   r<   __classcell__r7   s   @r8   r*   r*   ,   st          +,,: : : : -,:
 
 
 
 
 
 
 
 
r9   r*   c                       e Zd ZdZdS )BookmarkletsViewzadmin_doc/bookmarklets.htmlN)r=   r>   r?   r-   r;   r9   r8   rD   rD   B   s        1MMMr9   rD   c                   "     e Zd ZdZ fdZ xZS )TemplateTagIndexViewz!admin_doc/template_tag_index.htmlc           
          g }	 t          j                    }t          |j                                                  }d |j        D             }||z   D ]\  }}|j                                        D ]\  }}	t          j        |	j	                  \  }
}}|
o%t          j
        |
dt          d          |z             }
|o%t          j
        |dt          d          |z             }|D ]1}t          j
        ||         dt          d          |z             ||<   2|                    d          d         }|                    ||
|||d           ݌n# t          $ r Y nw xY w t                      j        di i |d|iS )	Nc                     g | ]}d |fS  r;   .0libs     r8   
<listcomp>z9TemplateTagIndexView.get_context_data.<locals>.<listcomp>R       JJJ#RIJJJr9   tagztag:.nametitlebodymetalibrarytagsr;   )r   get_defaultsortedtemplate_librariesitemstemplate_builtinsrY   r	   parse_docstringr@   	parse_rstr$   splitappendr   r1   r<   )r3   r6   rY   engineapp_libsbuiltin_libsmodule_namerX   tag_nametag_funcrU   rV   metadatakeytag_libraryr7   s                  r8   r<   z%TemplateTagIndexView.get_context_dataI   s   	'))F
 f7==??@@HJJ1IJJJL(4x(?  $W*1,*<*<*>*>  &Hh,1,A(BR,S,S)E4! eouaii(&:' 'E  VEOD%6XAU$V$VD'  (-$SM5!F))h2F) ) #."3"3C"8"8"<KKK$,%*$($,'2     $ 	 	 	D	6 (uww'CC*BV*BVT*B*BCCC   E 
EEr=   r>   r?   r-   r<   rA   rB   s   @r8   rF   rF   F   sF        7MD D D D D D D D Dr9   rF   c                   "     e Zd ZdZ fdZ xZS )TemplateFilterIndexViewz$admin_doc/template_filter_index.htmlc           
          g }	 t          j                    }t          |j                                                  }d |j        D             }||z   D ]\  }}|j                                        D ]\  }}	t          j        |	j	                  \  }
}}|
o%t          j
        |
dt          d          |z             }
|o%t          j
        |dt          d          |z             }|D ]1}t          j
        ||         dt          d          |z             ||<   2|                    d          d         }|                    ||
|||d           ݌n# t          $ r Y nw xY w t                      j        di i |d|iS )	Nc                     g | ]}d |fS rI   r;   rK   s     r8   rN   z<TemplateFilterIndexView.get_context_data.<locals>.<listcomp>w   rO   r9   filterzfilter:rQ   rR   rS   filtersr;   )r   rZ   r[   r\   r]   r^   rs   r	   r_   r@   r`   r$   ra   rb   r   r1   r<   )r3   r6   rs   rc   rd   re   rf   rX   filter_namefilter_funcrU   rV   ri   rj   rk   r7   s                  r8   r<   z(TemplateFilterIndexView.get_context_datan   s   	'))F
 f7==??@@HJJ1IJJJL(4x(?  $W070E0E0G0G  ,K,1,A+BU,V,V)E4! eox9)C' 'E   EOh){(B% %D  (  (-$SM8Qy\\K5O) ) #."3"3C"8"8"<KNN$/%*$($,'2     $ 	 	 	D	: (uww'II*HV*HY*H*HIIIrl   rm   rB   s   @r8   ro   ro   k   sF        :M!J !J !J !J !J !J !J !J !Jr9   ro   c                   "     e Zd ZdZ fdZ xZS )ViewIndexViewzadmin_doc/view_index.htmlc           	         g }t          t                                }	 t          |j                  }n# t          $ r g }Y nw xY w|D ]n\  }}}}|                    t          |          t          |          d                    |pg |r|gpg z             d                    |pg           |d           o t                      j
        di i |d|iS )N:)	full_nameurlurl_name	namespacerT   viewsr;   )r   r   extract_views_from_urlpatternsurl_patternsr   rb   r"   simplify_regexjoinr1   r<   )
r3   r6   r~   url_resolverview_functionsfuncregexr}   rT   r7   s
            r8   r<   zViewIndexView.get_context_data   s   #KMM22	 ;L<UVVNN# 	  	  	 NNN	 ,: 		 		(D%DLL!.t!4!4)%00 #)/rdov>SQS)T U U!$)/r!:!:      (uww'EE*DV*DWe*D*DEEEs   5 AArm   rB   s   @r8   rw   rw      sF        /MF F F F F F F F Fr9   rw   c                   8     e Zd ZdZed             Z fdZ xZS )ViewDetailViewzadmin_doc/view_detail.htmlc                 `   t                      }t          |                              |           r}t          |           \  }}	 t	          t          |          |          S # t          $ r@ t          |          \  }}t	          t	          t          |          |          |          cY S w xY wd S )N)r   r   _is_callbackr   getattrr   ImportError)viewurlconfmodr   klasss        r8   _get_view_funczViewDetailView._get_view_func   s    --  --d33 	I$T**IC
I }S114888 I I I
 *#..
Uw}S'9'95AA4HHHHHI	I 	Is   A! !AB+*B+c           
         | j         d         }|                     |          }|t          t          j        |j                  \  }}}|o%t          j        |dt          d          |z             }|o%t          j        |dt          d          |z             }|D ]1}t          j        ||         dt          d          |z             ||<   2 t                      j	        di i ||t          |          ||dS )Nr   zview:model)rT   summaryrV   rW   r;   )r6   r   r   r	   r_   r@   r`   r$   r1   r<   r#   )	r3   r6   r   	view_funcrU   rV   ri   rj   r7   s	           r8   r<   zViewDetailView.get_context_data   s   {6"''--	M % 5i6G H HtXK%/%7d9JKKHfajj46GHH 	W 	WC!OHSM7AgJJQUDUVVHSMM'uww' 
 
'..   
 
 	
r9   )r=   r>   r?   r-   staticmethodr   r<   rA   rB   s   @r8   r   r      sY        0MI I \I 
 
 
 
 
 
 
 
 
r9   r   c                     t          d|          }t          d|          }|                     |j        d|          p|                     |j        d|          S )z)Based off ModelAdmin.has_view_permission.r   changerQ   )r   has_perm	app_label)useroptscodename_viewcodename_changes       r8   user_has_model_view_permissionr      sh    +FD99M-h==O==DNNNMMBCC t}}>>>??3H H r9   c                   "     e Zd ZdZ fdZ xZS )ModelIndexViewzadmin_doc/model_index.htmlc                       fdt          j                    D             } t                      j        di i |d|iS )Nc                 \    g | ](}t          j        j        |j                  !|j        )S r;   )r   r4   r   _meta)rL   mr3   s     r8   rN   z3ModelIndexView.get_context_data.<locals>.<listcomp>   sB     
 
 
-dl.?II
G
 
 
r9   r   r;   )r   
get_modelsr1   r<   )r3   r6   m_listr7   s   `  r8   r<   zModelIndexView.get_context_data   sc    
 
 
 
_&&
 
 

 (uww'GG*FV*FXv*F*FGGGr9   rm   rB   s   @r8   r   r      sF        0MH H H H H H H H Hr9   r   c                   "     e Zd ZdZ fdZ xZS )ModelDetailViewzadmin_doc/model_detail.htmlc                    | j         d         }	 t          j        | j         d                   }n2# t          $ r% t	          t          d          | j         z            w xY w	 |                    |          }n2# t          $ r% t	          t          d          | j         z            w xY w|j        }t          | j	        j
        |          st          t          j        |j                  \  }}}|o%t          j        |dt          d          |z             }|o%t          j        |dt          d          |z             }g }	|j        D ]}
t#          |
t$          j                  ra|
j        j        j        }|
j        j        j        j        }t          j        t          d          ||dz  dt          d          |z             }nt1          |
          }|
j        }|	                    |
j        ||pd	|
j        d
           |j        D ]}
|
j        j        j        }|
j        j        j        j        }t          d          ||dz  }|	                    d|
j        z  dt          j        t          d          |z  dt          d          |j        z             d           |	                    d|
j        z  dt          j        t          d          |z  dt          d          |j        z             d           g }|j                                         D ]\  }}tC          j"        |          st#          |tF          tH          f          r^	 tJ          D ]}|&                    |          rtN          n# tN          $ r Y kw xY w|j        }|o7t          j        tQ          |          dt          d          |j        z             }t#          |tF          tH          f          r)|	                    |tS          |          |pd	d           tU          |          rHtW          |          s9tY          |          s*|	                    |tS          |          |pd	d           Lt[          |          }d.                    d |D                       }|                    |||pd	d           |j/        D ]}t          d          |j0        j        j        |j0        j        j1        dz  }|j2        }|	                    d|z  dt          j        t          d          |z  dt          d          |j        z             d           |	                    d|z  dt          j        t          d          |z  dt          d          |j        z             d            tg                      j4        di i ||j5        tm          |          ||	|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_typerJ   )rT   r   verbose	help_textz/related `%(app_label)s.%(object_name)s` objects)r   object_namez%s.allListzall %s)rT   r   r   z%s.countIntegerznumber of %sz, c                     g | ];}d                      |d         gt          t          |dd                             <S )=r   r!   N)r   maprepr)rL   arg_els     r8   rN   z4ModelDetailView.get_context_data.<locals>.<listcomp>k  sR        &  HHfQi%H#dF122J2G2G%HII  r9   )rT   	argumentsr   )rT   r   descriptionfieldsmethodsr;   )7r6   r   get_app_configLookupErrorr   r$   	get_modelr   r   r4   r   r   r	   r_   r@   r`   r   
isinstancer   
ForeignKeyremote_fieldr   r=   r   get_readable_field_data_typeverbose_namerb   rT   r   many_to_manyr   __dict__r]   inspect
isfunctionr   propertyMODEL_METHODS_EXCLUDE
startswithStopIterationr   get_return_data_typer   r   r   r   r   related_objectsrelated_modelr   accessor_namer1   r<   labelr#   )r3   r6   r   
app_configr   r   rU   rV   ri   r   fieldr   r   r   r   	func_namer   excluder   print_argumentsrelaccessorr7   s                         r8   r<   z ModelDetailView.get_context_data   s   [.
	J,T[-EFFJJ 	J 	J 	J!9::T[HIII	J	((44EE 	 	 	GHH4;V  	
 {-dl.?FF 	#"" % 5em D DtXS%/%!H++
:RSSPgq{{Z7OPP [ 	 	E %!233 -!.4=	!.4:D	/LMM)2)2  hKK)+
 
 9??	,MM!J!*&}"!&	     & 	 	E*09I*06@IIJJ&(N N G MM$uz1!'$(g-w(do8U       MM&3!*$.))G3(do5    
 
 
 
 $~3355 8	 8	OIt!$'' 7:1, , 7#8 0 0$//88 0"//00 %   H,! O ))7AhKK$/4Q   d_h$?@@ %MM$-)=i)H)H'.}"     't,,/55 2$77
 MM$-)=i)H)H'.}"     !34 8 8I '+ii *3  ' 'O NN$-)8'.}"    ' 	 	CIJJ .4>"06BN N G (HMM$x/!'$(g-w(do8U       MM&1!*$.))G3(do5    
 
 
 
 (uww' 	
 	

'..# "  	
 	
 		
s'   0 /A#A9 9/B(&M77
NNrm   rB   s   @r8   r   r      sF        1Mr
 r
 r
 r
 r
 r
 r
 r
 r
r9   r   c                   "     e Zd ZdZ fdZ xZS )TemplateDetailViewzadmin_doc/template_detail.htmlc                 z   | j         d         }g }	 t          j                    }t          |j                  }|j        D ]B}t          |d          r0|                                D ]}||vr|                    |           Ct          |          D ]y\  }}	t          t          |	|                    }
|
                                r|
                                }nd}|                    |
|
                                ||d           zn# t          $ r Y nw xY w t                      j        di i |||dS )Ntemplateget_dirsrJ   )fileexistscontentsorder)rT   	templatesr;   )r6   r   rZ   listdirstemplate_loadershasattrr   rb   	enumerater   r   r   	read_textr   r1   r<   )r3   r6   r   r   default_enginedirectoriesloaderdir_index	directorytemplate_filetemplate_contentsr7   s               r8   r<   z#TemplateDetailView.get_context_data  s   ;z*		#/11N
 ~233K(9 5 56:.. 5 & 1 1 5 5{22'..t444$-k$:$:   y $Yy(%C%C D D '')) +(5(?(?(A(A%%(*%   -"/"6"6"8"8$5!&	     $ 	 	 	D	0 (uww' 
 
 &  
 
 	
s   D 
DDrm   rB   s   @r8   r   r     s=        4M#
 #
 #
 #
 #
 #
 #
 #
 #
r9   r   c                     |                      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   rJ   )r   endswith)r   s    r8   r   r     sS    F## g&& 	6)) 	92r9   c                      | j         | j        z  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   s    r8   r   r     s     u~--r9   rJ   c           
         g }| D ]}t          |d          rg	 |j        }n# t          $ r Y 'w xY w|                    t	          ||t          |j                  z   |pg |j        r|j        gpg z                        yt          |d          rJ	 |                    |j	        |t          |j                  z   ||j
        f           # t          $ r Y w xY wt          t          d          |z            |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)
    r   callbackz,%s does not appear to be a urlpattern object)r   r   r   extendr   strpatternr}   rb   r   rT   r   	TypeErrorr$   )urlpatternsbaser}   r~   ppatternss         r8   r   r     s?    E S S1n%% 	S>   LL.3qy>>)_")F!+)L"M     Q
## 	Saj$QY*?AFSTTTT#    ALMMPQQRRRLs    
--8C
CCc                     t          |           } t          |           } t          |           } t          |           } |                     d          sd| z   } | 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   s    r8   r   r     s\     *'22G"7++G$W--G$W--Gc""  -Nr9   )rJ   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*   rD   rF   ro   rw   r   r   r   r   r   r   r   r   r   r;   r9   r8   <module>r     s&    # # # # # #                               G G G G G G * * * * * *            8 7 7 7 7 7         
             ) ) ) ) ) ) ? ? ? ? ? ? ? ? ? ? & & & & & & 4 4 4 4 4 4 3 3 3 3 3 3            2 1 1 1 1 1 - - - - - - . . . . . . . . @ 
 
 
 
 
 
 
 
,2 2 2 2 2( 2 2 2"D "D "D "D "D, "D "D "DJ$J $J $J $J $J/ $J $J $JNF F F F F% F F F.&
 &
 &
 &
 &
& &
 &
 &
R  	H 	H 	H 	H 	H& 	H 	H 	Hu
 u
 u
 u
 u
' u
 u
 u
p&
 &
 &
 &
 &
* &
 &
 &
\  . . .   >    r9   