
    h@                        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 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%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e-      Z0 G d de0      Z1 G d de0      Z2 G d de0      Z3 G d  d!e0      Z4 G d" d#e0      Z5 G d$ d%e0      Z6 G d& d'e0      Z7 G d( d)e0      Z8d* Z9d+ Z:d.d,Z;d- Z<y)/    N)import_module)cleandoc)Path)apps)settings)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)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                   B     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                  s5d| _        | j                  t        j
                  j                  |            S t        |    |g|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       a/var/www/html/ranktracker/api/venv/lib/python3.12/site-packages/django/contrib/admindocs/views.pyr-   zBaseAdminDocsView.dispatch&   sN    **!BD**5::+B+B7+KLLw9$9&99    c                 x    t        |   di i |t        j                  j	                  | j
                        S )N )r,   get_context_datar   r*   r+   r/   )r.   r1   r2   s     r3   r7   z"BaseAdminDocsView.get_context_data.   sB    w'  +
+
jj%%dll3+
  	r4   )	__name__
__module____qualname____doc__r   r	   r-   r7   __classcell__r2   s   @r3   r%   r%   "   s,     +,: -: r4   r%   c                       e Zd ZdZy)BookmarkletsViewzadmin_doc/bookmarklets.htmlN)r8   r9   r:   r(   r6   r4   r3   r?   r?   5   s    1Mr4   r?   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                  j	                               }|j
                  D cg c]  }d|f }}||z   D ]  \  }}|j                  j	                         D ]  \  }	}
t        j                  |
j                        \  }}}|xr# t        j                  |dt        d      |	z         }|xr# t        j                  |dt        d      |	z         }|D ]+  }t        j                  ||   dt        d      |	z         ||<   - |j                  d      d   }|j                  |	||||d         	 t        | @  di i |d|iS c c}w # t        $ r Y %w xY w)	N tagztag:.nametitlebodymetalibrarytagsr6   )r   get_defaultsortedtemplate_librariesitemstemplate_builtinsrM   r
   parse_docstringr;   	parse_rstr   splitappendr   r,   r7   )r.   r1   rM   engineapp_libslibbuiltin_libsmodule_namerL   tag_nametag_funcrI   rJ   metadatakeytag_libraryr2   s                   r3   r7   z%TemplateTagIndexView.get_context_data<   s   	'')F
 f77==?@H171I1IJ#RIJLJ(4x(? $W*1,,*<*<*> &Hh,1,A,A(BRBR,S)E4!YeooeUAfIPXDX&YEVEOOD%6XAU$VD' d(-uaPViZbNb(cd"-"3"3C"8"<KKK (!& $ (#.!  w'C*BV*BVT*BCC! K $ 		   E- 
E(-	E98E9r8   r9   r:   r(   r7   r<   r=   s   @r3   rA   rA   9   s    7MD Dr4   rA   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                  j	                               }|j
                  D cg c]  }d|f }}||z   D ]  \  }}|j                  j	                         D ]  \  }	}
t        j                  |
j                        \  }}}|xr# t        j                  |dt        d      |	z         }|xr# t        j                  |dt        d      |	z         }|D ]+  }t        j                  ||   dt        d      |	z         ||<   - |j                  d      d   }|j                  |	||||d         	 t        | @  di i |d|iS c c}w # t        $ r Y %w xY w)	NrC   filterzfilter:rE   rF   rG   filtersr6   )r   rN   rO   rP   rQ   rR   rg   r
   rS   r;   rT   r   rU   rV   r   r,   r7   )r.   r1   rg   rW   rX   rY   rZ   r[   rL   filter_namefilter_funcrI   rJ   r^   r_   r`   r2   s                   r3   r7   z(TemplateFilterIndexView.get_context_data[   s   	'')F
 f77==?@H171I1IJ#RIJLJ(4x(? $W070E0E0G ,K,1,A,A+BUBU,V)E4!beooeXq|VaGa&bE_EOOD(AiLS^D^$_D' m(-xQRS\Q]`kQk(lm"-"3"3C"8"<KNN +!& $ (#.$  w'I*HV*HY*HII! K $ 		ra   rb   r=   s   @r3   rd   rd   X   s    :MJ Jr4   rd   c                   "     e Zd ZdZ fdZ xZS )ViewIndexViewzadmin_doc/view_index.htmlc           
      \   g }t        t        j                        }t        |j                        }|D ]b  \  }}}}|j                  t        |      t        |      dj                  |xs g |xr |gxs g z         dj                  |xs g       |d       d t        	| (  di i |d|iS )N:)	full_nameurlurl_name	namespacerH   viewsr6   )r   r   ROOT_URLCONFextract_views_from_urlpatternsurlpatternsrV   r   simplify_regexjoinr,   r7   )
r.   r1   rr   urlconfview_functionsfuncregexrq   rH   r2   s
            r3   r7   zViewIndexView.get_context_dataz   s     5 5678K8KL.< 	*T5)TLL*40%e,HHio2$/D6:OR%PQ XXio26 	 w'E*DV*DWe*DEEr4   rb   r=   s   @r3   rk   rk   w   s    /MF Fr4   rk   c                   2     e Zd ZdZed        Z fdZ xZS )ViewDetailViewzadmin_doc/view_detail.htmlc                    t               }t        |      j                  |       r$t        |       \  }}	 t	        t        |      |      S y # t        $ r0 t        |      \  }}t	        t	        t        |      |      |      cY S w xY w)N)r   r   _is_callbackr   getattrr   ImportError)viewrx   modrz   klasss        r3   _get_view_funczViewDetailView._get_view_func   s    - --d3$T*IC
I }S1488 4  I
 *#.
Uw}S'95A4HHIs   A
 
6BBc           
         | j                   d   }| j                  |      }|t        t        j                  |j
                        \  }}}|xr# t        j                  |dt        d      |z         }|xr# t        j                  |dt        d      |z         }|D ]+  }t        j                  ||   dt        d      |z         ||<   - t        | $  di i |||||dS )Nr   zview:model)rH   summaryrJ   rK   r6   )
r1   r   r   r
   rS   r;   rT   r   r,   r7   )	r.   r1   r   	view_funcrI   rJ   r^   r_   r2   s	           r3   r7   zViewDetailView.get_context_data   s    {{6"''-	M % 5 5i6G6G HtXK%//%7d9JKHfaj46GH 	WC!OOHSM7AgJQUDUVHSM	Ww'  +
+
+
  	r4   )r8   r9   r:   r(   staticmethodr   r7   r<   r=   s   @r3   r}   r}      s&    0MI I  r4   r}   c                   "     e Zd ZdZ fdZ xZS )ModelIndexViewzadmin_doc/model_index.htmlc                     t        j                         D cg c]  }|j                   }}t        |   di i |d|iS c c}w )Nr   r6   )r   
get_models_metar,   r7   )r.   r1   mm_listr2   s       r3   r7   zModelIndexView.get_context_data   sF    #'??#45a!''55w'G*FV*FXv*FGG 6s   Arb   r=   s   @r3   r   r      s    0MH Hr4   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         }	 |j                  |      }|j                  }t        j                  |j                        \  }}}|xr# t        j                  |dt        d      |z         }|xr# t        j                  |dt        d      |z         }g }	|j                  D ]  }
t        |
t        j                        r}|
j                   j"                  j$                  }|
j                   j"                  j                  j&                  }t        j                  t        d      ||dz  dt        d      |z         }nt)        |
      }|
j*                  }|	j-                  |
j.                  ||xs d	|
j0                  d
        |j2                  D ]  }
|
j                   j"                  j$                  }|
j                   j"                  j                  j&                  }t        d      ||dz  }|	j-                  d|
j.                  z  dt        j                  t        d      |z  dt        d      |j4                  z         d       |	j-                  d|
j.                  z  dt        j                  t        d      |z  dt        d      |j4                  z         d        g }|j6                  j9                         D ]w  \  }}t;        j<                  |      st        |t>              s-	 t@        D ]  }|jC                  |      stD         	 |j                  }|xr6 t        j                  tG        |      dt        d      |j4                  z         }t        |t>              r#|	j-                  |tI        |      |xs d	d       tK        |      r:tM        |      s/tO        |      s$|	j-                  |tI        |      |xs d	d       tQ        |      }djS                  |D cg c]*  }djS                  |d   gtU        tV        |dd              , c}      }|j-                  |||xs d	d       z |jX                  D ]  }t        d      |jZ                  j                  j&                  |jZ                  j                  j\                  dz  }|j_                         }|	j-                  d|z  dt        j                  t        d      |z  dt        d      |j4                  z         d       |	j-                  d|z  dt        j                  t        d      |z  dt        d      |j4                  z         d        ta        |   di i ||jd                  |||	|dS # t        $ r" t	        t        d      | j                   z        w xY w# t        $ r" t	        t        d      | j                   z        w xY w# tD        $ r Y w xY wc c}w )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_typerC   )rH   r   verbose	help_textz/related `%(app_label)s.%(object_name)s` objects)r   object_namez%s.allListzall %s)rH   r   r   z%s.countIntegerznumber of %sz, =r   r   )rH   	argumentsr   )rH   r   descriptionfieldsmethodsr6   )3r1   r   get_app_configLookupErrorr   r   	get_modelr   r
   rS   r;   rT   r   
isinstancer   
ForeignKeyremote_fieldr   r8   r   get_readable_field_data_typeverbose_namerV   rH   r   many_to_manyr   __dict__rQ   inspect
isfunctionpropertyMODEL_METHODS_EXCLUDE
startswithStopIterationr   get_return_data_typer   r   r   r   rw   mapreprrelated_objectsrelated_modelr   get_accessor_namer,   r7   label)r.   r1   r   
app_configr   optsrI   rJ   r^   r   fieldr   r   r   r   	func_namerz   excluder   arg_elprint_argumentsrelaccessorr2   s                          r3   r7   z ModelDetailView.get_context_data   s   [[.
	J,,T[[-EFJ	b((4E {{ % 5 5emm DtXS%//%!H+
:RSPgq{Z7OP [[ 	E %!2!23!..44==	!..44::DD	//IJ%.YN  hK)+ 9?	,,MM

&"=b"__	 !	0 && 	E**0099I**0066@@IIJ&(N G MM 5::-# ??1X;+@'1X;Y]YhYhKhi 
 MM"UZZ/& ??1^+<w+FQRS[Q\_c_n_nQno 	$ $~~335 '	OIt!!$':dH+E#8 0$//8"//0
 ,,! OOHW$5w(doo@]^ 
 dH-MM )%9)%D#*=b# 
 (-6I$6OXmnrXsMM )%9)%D#*=b#  !34 8I '+ii&/1" &)!Dc$qr
.C!DE1 'O NN )%4#*=b$ G'	T '' 	CIJ ..44>>"0066BBN G ,,.HMM 8+# ??1X;+@'1X;Y]YhYhKhi 
 MM"X-& ??1^+<w+FQRS[Q\_c_n_nQno 	  w'  +
+
JJ+
  	k  	J!9:T[[HII	J  	b!QRUYU`U``aa	bz % 21s4   "V W W47W4/X
+W+W14	X Xrb   r=   s   @r3   r   r      s    1MA Ar4   r   c                   "     e Zd ZdZ fdZ xZS )TemplateDetailViewzadmin_doc/template_detail.htmlc                    | j                   d   }g }	 t        j                         }t        |j                        D ]a  \  }}t        t        ||            }|j                         r|j                         }nd}|j                  ||j                         ||d       c 	 t        	| 0  di i |||dS # t        $ r Y !w xY w)NtemplaterC   )fileexistscontentsorder)rH   	templatesr6   )r1   r   rN   	enumeratedirsr   r   r   	read_textrV   r   r,   r7   )
r.   r1   r   r   default_engineindex	directorytemplate_filetemplate_contentsr2   s
            r3   r7   z#TemplateDetailView.get_context_dataB  s    ;;z*		#//1N %.n.A.A$B  y $Yy(%C D '')(5(?(?(A%(*%  )+224 1"	"  w'  +
+
"+
  	# $ 		s   B8 8	CCrb   r=   s   @r3   r   r   ?  s    4M r4   r   c                 n    | j                  d      r$| j                  d      ry| j                  d      ryy)z9Return a somewhat-helpful data type given a function nameget__listr   _countr   rC   )r   endswith)r   s    r3   r   r   d  s5    F#g&)r4   c                 4    | 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    r3   r   r   n  s     u~~--r4   c           
         g }| D ]  }t        |d      rd	 |j                  }|j                  t	        ||t        |j                        z   |xs g |j                  xr |j                  gxs g z                st        |d      rA	 |j                  |j                  |t        |j                        z   ||j                  f       t        t        d      |z         |S # t        $ r Y w xY w# t        $ r Y w xY w)z
    Return a list of views from a list of urlpatterns.

    Each object in the returned list is a two-tuple: (view_func, regex)
    url_patternscallbackz,%s does not appear to be a urlpattern object)hasattrr   r   extendrt   strpatternrq   rV   r   rH   r   	TypeErrorr   )ru   baserq   rr   ppatternss         r3   rt   rt   w  s     E S1n%>> LL7s199~%bQ[[%Bakk]%HbI 
 Q
#ajj$QYY*?AFFST ALMPQQRR#S$ L   $ s#   C?C.	C+*C+.	C:9C:c                     t        |       } t        |       } | j                  dd      j                  dd      j                  dd      } | j                  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>/".
    ^rC   $?/)r   r   replacer   )r   s    r3   rv   rv     s^     #7+G$W-Gooc2&..sB7??RHGc"-Nr4   )rC   N)=r   	importlibr   r   pathlibr   django.appsr   django.confr   django.contribr   %django.contrib.admin.views.decoratorsr	   django.contrib.admindocsr
   django.contrib.admindocs.utilsr   r   django.core.exceptionsr   r   	django.dbr   django.httpr   django.template.enginer   django.urlsr   r   r   django.utils._osr   django.utils.decoratorsr   django.utils.inspectr   r   r   r   django.utils.translationr   r   django.views.genericr   r   r   r%   r?   rA   rd   rk   r}   r   r   r   r   r   rt   rv   r6   r4   r3   <module>r      s     #        G * J   ) ? ? & 4  2 -   @  &2( 2D, D>J/ J>F% F$$& $NH& HD' DN* J.8r4   