
    sghtL                        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- ZAd0d.ZBd/ ZCy)1    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                   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       b/var/www/enzed_healthcare/enzed_env/lib/python3.12/site-packages/django/contrib/admindocs/views.pyr2   zBaseAdminDocsView.dispatch1   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 )r1   get_context_datar   r/   r0   r4   )r3   r6   r7   s     r8   r<   z"BaseAdminDocsView.get_context_data9   sB    w' 
**))$,,7
 	
r9   )	__name__
__module____qualname____doc__r   r   r2   r<   __classcell__r7   s   @r8   r*   r*   ,   s,     +,: -:
 
r9   r*   c                       e Zd ZdZy)BookmarkletsViewzadmin_doc/bookmarklets.htmlN)r=   r>   r?   r-   r;   r9   r8   rD   rD   B   s    1Mr9   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                  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tagsr;   )r   get_defaultsortedtemplate_librariesitemstemplate_builtinsrR   r	   parse_docstringr@   	parse_rstr$   splitappendr   r1   r<   )r3   r6   rR   engineapp_libslibbuiltin_libsmodule_namerQ   tag_nametag_funcrN   rO   metadatakeytag_libraryr7   s                   r8   r<   z%TemplateTagIndexView.get_context_dataI   s   	'')F
 f77==?@H171I1IJ#RIJLJ(4x(? $W*1,,*<*<*> &Hh,1,A,A(BRBR,S)E4! eoouai(&:'E  VEOOD%6XAU$VD' (-$SM5!F)h2F) #."3"3C"8"<KKK$,%*$($,'2* w'C*BV*BVT*BCC- K $ 		   E- 
E(-	E98E9r=   r>   r?   r-   r<   rA   rB   s   @r8   rF   rF   F   s    7M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                  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)	NrH   filterzfilter:rJ   rK   rL   filtersr;   )r   rS   rT   rU   rV   rW   rl   r	   rX   r@   rY   r$   rZ   r[   r   r1   r<   )r3   r6   rl   r\   r]   r^   r_   r`   rQ   filter_namefilter_funcrN   rO   rc   rd   re   r7   s                   r8   r<   z(TemplateFilterIndexView.get_context_datan   s   	'')F
 f77==?@H171I1IJ#RIJLJ(4x(? $W070E0E0G ,K,1,A,A+BUBU,V)E4! eoox9)C'E   EOOh){(B%D  ( (-$SM8Qy\K5O) #."3"3C"8"<KNN$/%*$($,'2. w'I*HV*HY*HII1 K $ 		rf   rg   rB   s   @r8   ri   ri   k   s    :M!J !Jr9   ri   c                   "     e Zd ZdZ fdZ xZS )ViewIndexViewzadmin_doc/view_index.htmlc           
      t   g }t        t                     }	 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 # t        $ r g }Y w xY w)N:)	full_nameurlurl_name	namespacerM   viewsr;   )r   r   extract_views_from_urlpatternsurl_patternsr   r[   r"   simplify_regexjoinr1   r<   )
r3   r6   rw   url_resolverview_functionsfuncregexrv   rM   r7   s
            r8   r<   zViewIndexView.get_context_data   s    #KM2	 ;L<U<UVN -; 		(D%DLL!.t!4)%0 #)/rdov>SQS)T U!$)/r!: 		 w'E*DV*DWe*DEE $ 	 N	 s   B) )B76B7rg   rB   s   @r8   rp   rp      s    /MF Fr9   rp   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)viewurlconfmodr~   klasss        r8   _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 ||t        |      ||dS )Nr   zview:model)rM   summaryrO   rP   r;   )r6   r   r   r	   rX   r@   rY   r$   r1   r<   r#   )	r3   r6   r   	view_funcrN   rO   rc   rd   r7   s	           r8   r<   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' 
'. 
 	
r9   )r=   r>   r?   r-   staticmethodr   r<   rA   rB   s   @r8   r   r      s&    0MI I 
 
r9   r   c                     t        d|      }t        d|      }| j                  |j                  d|      xs  | j                  |j                  d|      S )z)Based off ModelAdmin.has_view_permission.r   changerJ   )r   has_perm	app_label)useroptscodename_viewcodename_changes       r8   user_has_model_view_permissionr      sQ    +FD9M-h=O==DNNMBC t}}>>?3H r9   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]8  }t        | j                  j                  |j
                        r|j
                  : }}t        |   di i |d|iS c c}w )Nr   r;   )r   
get_modelsr   r4   r   _metar1   r<   )r3   r6   mm_listr7   s       r8   r<   zModelIndexView.get_context_data   sl     __&
-dll.?.?I GG
 

 w'G*FV*FXv*FGG
s   =A,rg   rB   s   @r8   r   r      s    0M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         }	 |j                  |      }|j                  }t        | j                  j                  |      st        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t1        |
      }|
j2                  }|	j5                  |
j6                  ||xs d	|
j8                  d
        |j:                  D ]  }
|
j(                  j*                  j,                  }|
j(                  j*                  j                  j.                  }t        d      ||dz  }|	j5                  d|
j6                  z  dt        j                  t        d      |z  dt        d      |j<                  z         d       |	j5                  d|
j6                  z  dt        j                  t        d      |z  dt        d      |j<                  z         d        g }|j>                  jA                         D ]  \  }}tC        jD                  |      st#        |tF        tH        f      s3	 tJ        D ]  }|jM                  |      stN         	 |j                  }|xr6 t        j                  tQ        |      dt        d      |j<                  z         }t#        |tF        tH        f      r#|	j5                  |tS        |      |xs d	d       tU        |      r:tW        |      s/tY        |      s$|	j5                  |tS        |      |xs d	d       t[        |      }dj]                  |D cg c]*  }dj]                  |d   gt_        t`        |dd              , c}      }|j5                  |||xs d	d        |jb                  D ]  }t        d      |jd                  j                  j.                  |jd                  j                  jf                  dz  }|jh                  }|	j5                  d|z  dt        j                  t        d      |z  dt        d      |j<                  z         d       |	j5                  d|z  dt        j                  t        d      |z  dt        d      |j<                  z         d        tk        |   di i ||jn                  tq        |      ||	|dS # t        $ r" t	        t        d      | j                   z        w xY w# t        $ r" t	        t        d      | j                   z        w xY w# tN        $ r Y #w xY wc c}w )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_typerH   )rM   r   verbose	help_textz/related `%(app_label)s.%(object_name)s` objects)r   object_namez%s.allListzall %s)rM   r   r   z%s.countIntegerznumber of %sz, =r   r!   )rM   	argumentsr   )rM   r   descriptionfieldsmethodsr;   )9r6   r   get_app_configLookupErrorr   r$   	get_modelr   r   r4   r   r   r	   rX   r@   rY   r   
isinstancer   
ForeignKeyremote_fieldr   r=   r   get_readable_field_data_typeverbose_namer[   rM   r   many_to_manyr   __dict__rV   inspect
isfunctionr   propertyMODEL_METHODS_EXCLUDE
startswithStopIterationr   get_return_data_typer   r   r   r   r{   mapreprrelated_objectsrelated_modelr   accessor_namer1   r<   labelr#   )r3   r6   r   
app_configr   r   rN   rO   rc   r   fieldr   r   r   r   	func_namer~   excluder   arg_elprint_argumentsrelaccessorr7   s                          r8   r<   z ModelDetailView.get_context_data   s   [[.
	J,,T[[-EFJ	((4E {{-dll.?.?F"" % 5 5emm DtXS%//%!H+
:RSPgq{Z7OP [[ 	E %!2!23!..44==	!..44::DD	//LM)2)2 hK)+
 9?	,,MM!JJ!*&}"!&	)	< && 	E**0099I**0066@@IIJ&(N G MM$uzz1!'$(g-w(doo8U  MM&3!*$.)G3(doo5 
!	8 $~~335 8	OIt!!$':1,#8 0$//8"//0
 ,,! OO )7AhK$//4Q  d_h$?@MM$-)=i)H'.}" 't,/51$7MM$-)=i)H'.}" !34 8I '+ii +4 &  HHfQi%H#dF12J2G%HI'O NN$-)8'.}"e8	v '' 	CIJ ..44>>"0066BBN G ((HMM$x/!'$(g-w(doo8U  MM&1!*$.)G3(doo5 
	4 w' 	


'.# "	
 		
I  	J!9:T[[HII	J  	GH4;;V 	f % Js4   "W W= X+#X+	/X;
+W:=+X(+	X87X8rg   rB   s   @r8   r   r      s    1Mr
 r
r9   r   c                   "     e Zd ZdZ fdZ xZS )TemplateDetailViewzadmin_doc/template_detail.htmlc                 6   | j                   d   }g }	 t        j                         }t        |j                        }|j
                  D ]:  }t        |d      s|j                         D ]  }||vs|j                  |        < t        |      D ]a  \  }}	t        t        |	|            }
|
j                         r|
j                         }nd}|j                  |
|
j                         ||d       c 	 t        | @  di i |||dS # t        $ r Y !w xY w)Ntemplateget_dirsrH   )fileexistscontentsorder)rM   	templatesr;   )r6   r   rS   listdirstemplate_loadershasattrr   r[   	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*		#//1N
 ~223K(99 56:. & 1 5{2'..t455
 %.k$:  y $Yy(%C D '')(5(?(?(A%(*%   -"/"6"6"8$5!&	 w' 
 &
 	
1 $ 		s   D 	DDrg   rB   s   @r8   r   r     s    4M#
 #
r9   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   rH   )r   endswith)r   s    r8   r   r     s5    F#g&)r9   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    r8   r   r     s     u~~--r9   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 4-tuple:
    (view_func, regex, namespace, name)
    ry   callbackz,%s does not appear to be a urlpattern object)r   ry   r   extendrx   strpatternrv   r[   r   rM   r   	TypeErrorr$   )urlpatternsbaserv   rw   ppatternss         r8   rx   rx     s     E S1n%>> LL.3qyy>)_")F!++)L"M 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        |       } t        |       } t        |       } | 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>/".
    /)r
   r   r   r   r   )r   s    r8   rz   rz     sH     *'2G"7+G$W-G$W-Gc"-Nr9   )rH   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   ri   rp   r   r   r   r   r   r   r   rx   rz   r;   r9   r8   <module>r     s
    #      G *  8 
   ) ? ? & 4 3  2 - . @ 
 
,2( 2"D, "DJ$J/ $JNF% F.&
& &
R	H& 	Hu
' u
p&
* &
\.>r9   