
    DvgI                     <   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Z1 G d de/          Z2 G d de2          Z3 G d de2          Z4 G d de2          Z5 G d  d!e2          Z6 G d" d#e2          Z7 G d$ d%e2          Z8 G d& d'e2          Z9 G d( d)e2          Z:d* Z;d+ Z<d/d-Z=d. Z>dS )0    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)_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       [/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/django/contrib/admindocs/views.pyr/   zBaseAdminDocsView.dispatch,   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 )r.   get_context_datar   r,   r-   r1   )r0   r3   r4   s     r5   r9   z"BaseAdminDocsView.get_context_data4   sO    'uww' 
 
*))$,77
 
 	
r6   )	__name__
__module____qualname____doc__r   r   r/   r9   __classcell__r4   s   @r5   r'   r'   '   st          +,,: : : : -,:
 
 
 
 
 
 
 
 
r6   r'   c                       e Zd ZdZdS )BookmarkletsViewzadmin_doc/bookmarklets.htmlN)r:   r;   r<   r*   r8   r6   r5   rA   rA   =   s        1MMMr6   rA   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  r8   .0libs     r5   
<listcomp>z9TemplateTagIndexView.get_context_data.<locals>.<listcomp>M       JJJ#RIJJJr6   tagztag:.nametitlebodymetalibrarytagsr8   )r   get_defaultsortedtemplate_librariesitemstemplate_builtinsrV   r	   parse_docstringr=   	parse_rstr!   splitappendr   r.   r9   )r0   r3   rV   engineapp_libsbuiltin_libsmodule_namerU   tag_nametag_funcrR   rS   metadatakeytag_libraryr4   s                  r5   r9   z%TemplateTagIndexView.get_context_dataD   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*   r9   r>   r?   s   @r5   rC   rC   A   sF        7MD D D D D D D D Dr6   rC   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 rF   r8   rH   s     r5   rK   z<TemplateFilterIndexView.get_context_data.<locals>.<listcomp>r   rL   r6   filterzfilter:rN   rO   rP   filtersr8   )r   rW   rX   rY   rZ   r[   rp   r	   r\   r=   r]   r!   r^   r_   r   r.   r9   )r0   r3   rp   r`   ra   rb   rc   rU   filter_namefilter_funcrR   rS   rf   rg   rh   r4   s                  r5   r9   z(TemplateFilterIndexView.get_context_datai   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Iri   rj   r?   s   @r5   rl   rl   f   sF        :M!J !J !J !J !J !J !J !J !Jr6   rl   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	namespacerQ   viewsr8   )r   r   extract_views_from_urlpatternsurl_patternsr   r_   r    simplify_regexjoinr.   r9   )
r0   r3   r{   url_resolverview_functionsfuncregexrz   rQ   r4   s
            r5   r9   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rj   r?   s   @r5   rt   rt      sF        /MF F F F F F F F Fr6   rt   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        r5   _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 |||||dS )Nr   zview:model)rQ   summaryrS   rT   r8   )
r3   r   r   r	   r\   r=   r]   r!   r.   r9   )	r0   r3   r   	view_funcrR   rS   rf   rg   r4   s	           r5   r9   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' 
 
    
 
 	
r6   )r:   r;   r<   r*   staticmethodr   r9   r>   r?   s   @r5   r   r      sY        0MI I \I 
 
 
 
 
 
 
 
 
r6   r   c                   "     e Zd ZdZ fdZ xZS )ModelIndexViewzadmin_doc/model_index.htmlc                 |    d t          j                    D             } t                      j        di i |d|iS )Nc                     g | ]	}|j         
S r8   )_meta)rI   ms     r5   rK   z3ModelIndexView.get_context_data.<locals>.<listcomp>   s    555a!'555r6   r   r8   )r   
get_modelsr.   r9   )r0   r3   m_listr4   s      r5   r9   zModelIndexView.get_context_data   sK    554?#4#4555'uww'GG*FV*FXv*F*FGGGr6   rj   r?   s   @r5   r   r      sF        0MH H H H H H H H Hr6   r   c                   "     e Zd ZdZ fdZ xZS )ModelDetailViewzadmin_doc/model_detail.htmlc                 H   | 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
                  \  }}}|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t)          |
          }|
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 ]\  }}t;          j        |          st          |t>          t@          f          r^	 tB          D ]}|"                    |          rtF          n# tF          $ r Y kw xY w|j
        }|o7t          j        tI          |          dt          d          |j        z             }t          |t>          t@          f          r)|	                    |tK          |          |pd	d           tM          |          rHtO          |          s9tQ          |          s*|	                    |tK          |          |pd	d           LtS          |          }d*                    d |D                       }|                    |||pd	d           |j+        D ]}t          d          |j,        j        j        |j,        j        j-        dz  }|j.        }|	                    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            t_                      j0        d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)rr   zmodel:z0the related `%(app_label)s.%(data_type)s` object)r   	data_typerG   )rQ   r   verbose	help_textz/related `%(app_label)s.%(object_name)s` objects)r   object_namez%s.allListzall %s)rQ   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)rI   arg_els     r5   rK   z4ModelDetailView.get_context_data.<locals>.<listcomp>W  sR        &  HHfQi%H#dF122J2G2G%HII  r6   )rQ   	argumentsr   )rQ   r   descriptionfieldsmethodsr8   )2r3   r   get_app_configLookupErrorr   r!   	get_modelr   r	   r\   r=   r]   r   
isinstancer   
ForeignKeyremote_fieldr   r:   r   get_readable_field_data_typeverbose_namer_   rQ   r   many_to_manyr   __dict__rZ   inspect
isfunctionr   propertyMODEL_METHODS_EXCLUDE
startswithStopIterationr   get_return_data_typer   r   r   r   r   related_objectsrelated_modelr   accessor_namer.   r9   label)r0   r3   r   
app_configr   optsrR   rS   rf   r   fieldr   r   r   r   	func_namer   excluder   print_argumentsrelaccessorr4   s                         r5   r9   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  	
 { % 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(/&M
M#"M#rj   r?   s   @r5   r   r      sF        1Mp
 p
 p
 p
 p
 p
 p
 p
 p
r6   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_dirsrG   )fileexistscontentsorder)rQ   	templatesr8   )r3   r   rW   listdirstemplate_loadershasattrr   r_   	enumerater   r   r   	read_textr   r.   r9   )r0   r3   r   r   default_enginedirectoriesloaderdir_index	directorytemplate_filetemplate_contentsr4   s               r5   r9   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rj   r?   s   @r5   r   r     s=        4M#
 #
 #
 #
 #
 #
 #
 #
 #
r6   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   rG   )r   endswith)r   s    r5   r   r     sS    F## g&& 	6)) 	92r6   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    r5   r   r     s     u~--r6   rG   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patternrz   r_   r   rQ   r   	TypeErrorr!   )urlpatternsbaserz   r{   ppatternss         r5   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    r5   r~   r~     s\     *'22G"7++G$W--G$W--Gc""  -Nr6   )rG   N)?r   	importlibr   r   pathlibr   django.appsr   django.contribr   %django.contrib.admin.views.decoratorsr   django.contrib.admindocsr	   django.contrib.admindocs.utilsr
   r   r   r   django.core.exceptionsr   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'   rA   rC   rl   rt   r   r   r   r   r   r   r|   r~   r8   r6   r5   <module>r	     s    # # # # # #                               G G G G G G * * * * * *            J I I I I I I I             ) ) ) ) ) ) ? ? ? ? ? ? ? ? ? ? & & & & & & 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s
 s
 s
 s
 s
' s
 s
 s
l&
 &
 &
 &
 &
* &
 &
 &
\  . . .   >    r6   