
    69hF                     Z   d dl 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 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 dl!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/m0Z0m1Z1m2Z2m3Z3  G d de      Z4y# e($ r dedefdZ'Y 7w xY w)    N)
HTTPStatus)AnyCallableOptionalUnion)parse_qsurlparse)	AdminSite)REDIRECT_FIELD_NAME)EMPTY_VALUES)HttpRequestHttpResponse)TemplateResponse)
URLPatternpathreversereverse_lazy)method_decorator)lazy)import_string)never_cache)DropdownItemFavicon)login_not_requiredfuncreturnc                     | S N )r   s    G/var/www/html/backend/venv/lib/python3.12/site-packages/unfold/sites.pyr   r      s        )
get_config)
hex_to_rgb)BUTTON_CLASSESCHECKBOX_CLASSESFILE_CLASSESINPUT_CLASSESRADIO_CLASSESSWITCH_CLASSESc            
       (    e Zd ZdZdZd)deddf fdZdee   f fdZ	de
deeef   f fd	Z	 d*de
d
eeeef      defdZ	 d*de
d
eeeef      defdZ	 d*de
d
eeeef      def fdZ ee      e	 d*de
d
eeeef      def fd              Z	 d*de
d
eeeef      defdZde
deeeef      fdZ	 d*de
dee   dee   defdZde
deeeef      fdZde
deeeef      fdZdeeedf   de
defdZ dedede
fdZ!	 d+de
deeef   dedefdZ"de
dee   dedefdZ#dedefd Z$ded!edeeeef   edf   fd"Z%dedeeeeef   f   fd#Z&dedee   fd$Z'dedee(   fd%Z)dedeeeef      fd&Z*d'eeee+df   d!edee   fd(Z, xZ-S ),UnfoldAdminSitezunfold.admin.UnfoldAdminSiteUNFOLDnamer   Nc                 X    ddl m} t        |   |       | j                  || _        y y )Nr   )AuthenticationForm)unfold.formsr/   super__init__
login_form)selfr-   r/   	__class__s      r    r2   zUnfoldAdminSite.__init__+   s)    3??"0DO #r!   c                 .   g }t        | d      r%t        | j                        r| j                         }t        d| j	                  | j
                        d      t        d| j	                  | j                        d      g|z   t        | !         z   }|S )N
extra_urlszsearch/search)r-   ztoggle-sidebar/toggle_sidebar)	hasattrcallabler7   r   
admin_viewr8   r9   r1   get_urls)r4   r7   urlpatternsr5   s      r    r=   zUnfoldAdminSite.get_urls3   s    
4&8DOO+D*J Y <8L%OOD$7$78)  g 	! 	 r!   requestc                    t         |   |      }| j                  d|      }i ddj                  t              dj                  t
              dj                  t              dj                  t              dj                  t              dj                  t              dd| j                  d|      d| j                  d|      d	| j                  d
|      d| j                  d|      d| j                  d|      d| j                  d|      d| j                  d|      d| j                  d|      d| j                  d|      d| j                  d|      d| j                  d|      d| j                  d|      d| j                  d|      d| j                  d |      d!| j                  d"|      d#| j                  d$|      | j                  d%|      | j                  d&|      | j                  | j                  d'|      j                  d(      |      | j                  | j                  d'|      j                  d)      |      | j!                  |      | j#                  |      | j%                  d*|      | j%                  d+|      | j                  |j                  d,      |      | j                  |j                  d-      |      | j'                  |      r| j)                  |      ng d.}|j+                  |       t-        | d/      r't/        | j0                        r| j1                  ||      S |S )0NSIDEBARform_classes )
text_inputcheckboxbuttonradioswitchfile
site_title
SITE_TITLEsite_headerSITE_HEADERsite_urlSITE_URLsite_subheaderSITE_SUBHEADERsite_dropdownSITE_DROPDOWN	site_logo	SITE_LOGO	site_icon	SITE_ICONsite_symbolSITE_SYMBOLsite_faviconsSITE_FAVICONSshow_historySHOW_HISTORYshow_view_on_siteSHOW_VIEW_ON_SITEshow_languagesSHOW_LANGUAGESshow_back_buttonSHOW_BACK_BUTTONthemeTHEMEborder_radiusBORDER_RADIUScolorsCOLORSENVIRONMENTENVIRONMENT_TITLE_PREFIX	LANGUAGES
navigationactionSTYLESSCRIPTSshow_all_applicationsshow_search)environmentenvironment_title_prefixlanguages_listlanguages_actionaccount_linkstab_liststylesscriptssidebar_show_all_applicationssidebar_show_searchsidebar_navigationextra_context)r1   each_context_get_configjoinr'   r%   r$   r(   r)   r&   _get_site_dropdown_items_get_theme_images_get_favicons_get_colors
_get_valueget_get_account_linksget_tabs_list	_get_listhas_permissionget_sidebar_listupdater:   r;   r~   )r4   r?   contextsidebar_configdatar5   s        r    r   zUnfoldAdminSite.each_contextH   sl   '&w/)))W=0
!hh}5HH%56((>2-0((>2.0
 $**<A0
 4++M7C0
 ((W=0
 d../?I0
 T::?GT0
 //WE0
 //WE0
  4++M7C!0
" T//I#0
$ D,,^WE%0
&  !1!12Ew!O'0
( d../?I)0
*  0 01CW M+0
, T%%gw7-0
. T--owG/0
0 d&&x910
2  ++M7C(,(8(8*G) #oo  g6::<H' !%  g6::8Dg! "44W=**73nnXw7~~i9-1__""#:;W. $(??""=17$ ""7+ #'"7"7"@_0
d 	t4)ht7I7I.J%%gw77r!   r~   c                 D   | j                  |      }i | j                  |      | j                  d |dd|xs i }t        | j                        d   }t        |t              r t        |      ||      }| j                  |_	        t        || j                  xs d|      S )NT)titlesubtitleapp_listindexDASHBOARD_CALLBACKzadmin/index.html)get_app_listr   index_titler"   settings_name
isinstancestrr   r-   current_appr   index_template)r4   r?   r~   r   r   dashboard_callbacks         r    r   zUnfoldAdminSite.index   s     $$W-
(
%% 
 "
 ((:(:;<PQ(#.7m$67IG"iiT((>,>
 	
r!   c                     d|j                   vrd|j                   d<   n|j                   d    |j                   d<   t        t        j                        S )Nr9   T)status)sessionr   r   OK)r4   r?   r~   s      r    r9   zUnfoldAdminSite.toggle_sidebar   sJ     7??204GOO,-4;OODT4U0UGOO,-:==11r!   c                    |j                   j                  d      j                         }t        	|   |      }g }|t
        v r
t               S |D ]  }||d   j                         v r|j                  |       *g }|d   D ])  }||d   j                         v s|j                  |       + t        |      dkD  sl||d<   |j                  |        t        |dd|i      S )Nsr-   modelsr   z"unfold/helpers/search_results.htmlresults)templater   )
GETr   lowerr1   r   r   r   appendlenr   )
r4   r?   r~   queryr   r   appr   modelr5   s
            r    r8   zUnfoldAdminSite.search   s     $**,7'0L >! 	$CF))++s#FX )E&M//11MM%() 6{Q &Hs#	$  97
 	
r!   c                    |i n|}| j                  t        | j                        d   j                  d      |      }| j                  t        | j                        d   j                  d      |      }|t        vr|j                  d|i       |t        vr|j                  t        |i       t        | !  ||      S )NLOGINimageredirect_after)	r   r"   r   r   r   r   r   r1   login)r4   r?   r~   r   redirect_field_namer5   s        r    r   zUnfoldAdminSite.login   s    
 ,3t))*7377@'
 #oot))*73778HI7
 $  U l2  "57J!KLw}Wm44r!   c                 $   ddl m} ddlm} t	        | j
                   d| j
                        }||i | j                  |      |xs i d}| j                  | j                  |d<   | j
                  |_          |j                  d	i ||      S )
Nr   )PasswordChangeView   )AdminOwnPasswordChangeFormz:password_change_done)r   )
form_classsuccess_urlr~   template_namer   )
django.contrib.auth.viewsr   formsr   r   r-   r   password_change_templater   as_view)r4   r?   r~   r   r   urldefaultss          r    password_changezUnfoldAdminSite.password_change   s     	A5#89tyyQ4T 1 1' :T}?RPRT

 ((4(,(E(EH_%"ii5)!))5H5g>>r!   c                 @   | j                  | j                  d|      j                  d      |      }| j                  | j                  d|      |      xs g }g }t        j                  |      D ],  }| j                  ||d   |      |d<   |j                  |       . |S )NrA   rm   TABSitems)r   r   r   copydeepcopy_get_navigation_itemsr   )r4   r?   rm   tabsr   groups         r    r   z UnfoldAdminSite.get_sidebar_list   s    __Y044\BG

 t//@'JPb]]:. 	"E!77wQUVE'NNN5!	" r!   r   r   c                    g }|D ]&  }|j                  d      }d|v r| j                  |d   |      |d<   n(| j                  ||j                  d      xs |      |d<   |r| j                  |||      x}r|rd|d<   t	        |t
              r t        |      |      |d<   | j                  |j                  d      |      |d<   d|v r6t	        |d   t              r#	 t        |d         } t        |      |      |d<   d	|v r| j                  ||d	         |d	<   |j                  |       ) |S # t        $ r Y =w xY w)
Nlinkactivelink_callbackT
permissionr   badgebadge_callbackr   )r   r   _get_is_active_get_is_tab_activer   r   r   _call_permission_callbackr   r   ImportErrorr   r   )	r4   r?   r   r   allowed_itemsitemr   	is_activecallbacks	            r    r   z%UnfoldAdminSite._get_navigation_items  sm     '	'D88F#D4!%h!IX!%!4!4TXXo6>$"X "&"9"9'4"NNYN!%X $)(2T
7(;_% &*%C%C&&D!"
 $:d7mS#A,T'];H-;T(^G-DD)*
 $ $ : :7DM RW  &O'	'R  # s   "D11	D=<D=c                     g }| j                  t        | j                        d   j                  d      |      }|D ]<  }|j	                  | j                  |d   |      | j                  |d   |      d       > |S )NACCOUNTrm   r   r   )r   r   )r   r"   r   r   r   )r4   r?   linksrm   r   s        r    r   z"UnfoldAdminSite._get_account_links2  s    __t))*9599,G

  	DLL!__T']GD OODL'B	 r!   c                    t        j                  | j                  d|            }|sg S |D ]  }g }|d   D ]  }| j                  |j	                  d      |      |d<   t        |d   t              r t        |d         |      |d<   d|vr-| j                  ||j	                  d      xs |d   d      |d<   n| j                  |d   |      |d<   |j                  |        ||d<    |S )	Nr   r   r   r   r   r   r   T)r   r   r   r   r   r   r   r   r   r   r   )r4   r?   r   tabr   r   s         r    r   zUnfoldAdminSite.get_tabs_listC  s	   }}T--fg>?I 	)CMG +)-)G)GHH\*G*%& d6lH5,>Df,>w,GD)4'%)%8%8/!:!Jd6lD&DN &*__T(^W%MDN$$T*+" )CL)	), r!   r   c                     |yt        |t              r	 t        |      }t        |t              st        |t              r t        |      |      dk(  ryy# t        $ r Y Aw xY w)NTF)r   r   r   r   r   r   )r4   r   r?   s      r    r   z)UnfoldAdminSite._call_permission_callbacka  sh     h$(2 h$
8X(FtH~g&$.  s   A 	A"!A"targetsourcec                     |j                         D ],  }||   t        ||         r ||   |      ||<   %||   ||<   . |S r   )keysr;   )r4   r   r   r?   keys        r    _replace_valueszUnfoldAdminSite._replace_valuest  sT    ;;= 	*Cc{&8F3K+@)fSk'2s$Sks		* r!   r   is_tabc                    t        |t              st        |      }t        | j                   d      }t	        |      j
                  }||j
                  cxk(  r|k(  ry |dk7  rz||j
                  v rl||k7  rgt        t	        |      j                        }t        |j                  j                               |r#t        fd|j                         D              syyy)Nz:indexT c              3   L   K   | ]  \  }}j                  |      |k(    y wr   )r   ).0kvrequest_paramss      r    	<genexpr>z1UnfoldAdminSite._get_is_active.<locals>.<genexpr>  s*      "/3q!""1%*"s   !$F)r   r   r   r-   r	   r   r   r   r   	urlencodeallr   )r4   r?   r   r   
index_path	link_pathquery_paramsr   s          @r    r   zUnfoldAdminSite._get_is_active}  s     $$t9D!TYYKv"67
TN''	 2
2 3 ?yGLL8Y*=T#HTN$8$89L%gkk&;&;&=>N c "7C7I7I7K"  r!   c                     |D ]N  }d}d}|d   D ]9  }||d   k(  rd}| j                  ||j                  d      xs |d         s7d} n |sK|sN y y)NFr   r   Tr   )r   r   )r4   r?   r   r   r   has_primary_linkhas_tab_link_activetab_items           r    r   z"UnfoldAdminSite._get_is_tab_active  s      	C$"'L 	8F++'+$&&X\\/:Nhv>N +/'	  $7!	$ r!   r   c                 n    t        | j                        }||v r||   r | j                  ||   g| S y y r   )r"   r   r   )r4   r   argsconfigs       r    r   zUnfoldAdminSite._get_config  s@    D../&=VC["4??6#;666 )=r!   r   c                      | j                   |g| }t        |t              r6d|v r1d|v r- | j                  |d   g|  | j                  |d   g| dS y |S )Nlightdark)r   r   )r   r   dictr   )r4   r   r   imagess       r    r   z!UnfoldAdminSite._get_theme_images  sv     "!!#--fd#& Vv%5,T__VG_DtD+DOOF6NBTB 
 r!   c                     | j                   |g| }dt        dt        fd}dt        dt        fd}|j                         D ]  \  }} | j                  |g| }|||<   |j                         D ]  \  }}	|	d   dk(  r ||	      ||   |<   nv|	j	                  d      r ||	      ||   |<   nVt        |	t              rFt        d |	j                         D              r&d	j                  |	j                  d
            ||   |<     |S )Nvaluer   c           
          dj                  t        t        t        j                  | j                  d      j                  d      j                  d                        S )N, zrgb(),)r   listmapr   stripremoveprefixremovesuffixsplitr  s    r    rgb_to_valuesz2UnfoldAdminSite._get_colors.<locals>.rgb_to_values  sN    99		**62??DJJ3O r!   c                 D    dj                  d t        |       D              S )Nr  c              3   2   K   | ]  }t        |        y wr   )r   )r   r   s     r    r   zEUnfoldAdminSite._get_colors.<locals>.hex_to_values.<locals>.<genexpr>  s     E4SYEs   )r   r#   r  s    r    hex_to_valuesz2UnfoldAdminSite._get_colors.<locals>.hex_to_values  s    99E:e3DEEEr!   r   #rgbc              3   <   K   | ]  }|j                           y wr   )isdigit)r   parts     r    r   z.UnfoldAdminSite._get_colors.<locals>.<genexpr>  s      4'+DLLN4s   r  rC   )	r   r   r   r   
startswithr   r   r  r   )
r4   r   r   rh   r  r  r-   weightsweightr  s
             r    r   zUnfoldAdminSite._get_colors  s#   !!!#--	 	 		F 	F 	F $\\^ 	MD'%doog55G"F4L!( 	8s?+8+?F4L(%%e,+8+?F4L(s+ 4/4{{}4 1 ,099U[[5E+FF4L(			 r!   c                     t        | j                        |   }t        |t              r!|D cg c]  } | j                  |g|  c}S g S c c}w r   )r"   r   r   r  r   r4   r   r   r   r   s        r    r   zUnfoldAdminSite._get_list  sM    4--.s3eT"=BCTODOOD040CC	 Ds   Ac                      | j                   |g| }|sg S |D cg c]R  }t         | j                  |d   g| |j                  d      |j                  d      |j                  d            T c}S c c}w )Nhrefrelsizestype)r  r  r  r  )r   r   r   r   )r4   r   r   faviconsr   s        r    r   zUnfoldAdminSite._get_favicons  s    #4##C/$/I !
  $T__T&\9D9HHUOhhw'XXf%	
 	
 
s   AA6c           
           | j                   |g| }|sg S |D cg c]B  }t        |j                  d       | j                  |d   g| |j                  d            D c}S c c}w )Nr   r   icon)r   r   r"  )r   r   r   r   r  s        r    r   z(UnfoldAdminSite._get_site_dropdown_items  sy       ,t,I 
  hhw'$T__T&\9D9XXf%
 	
 
s   AA&r  c                     |y t        |t              r	 t        |      } || S t        |t              r || S |S # t        $ r Y |S w xY wr   )r   r   r   r   r   )r4   r  r   r   s       r    r   zUnfoldAdminSite._get_value  sc     =eS!(/& eX&$<  Ls   < 	A	A	)adminr   )F).__name__
__module____qualname__default_siter   r   r2   r  r   r=   r   r   r   r   r   r   r   r   r9   r8   r   r   r   r   r   r   r   r   r   r   r   boolr   r   r   r   r   r   r   r   r   r   r   r   r   __classcell__)r5   s   @r    r+   r+   '   sx   1LM1S 1t 1$z* *;K ;DcN ;| OS
"
3;DcN3K
	
4 OS2"23;DcN3K2	2 OS
"
3;DcN3K
	
B k"NR5"53;DcN3K5	5  #52 OS?"?3;DcN3K?	?$ T#s(^8L  KO.".+/:.=A$Z.	.`+ $tCH~:N "[ T$sCx.5I <c8T12=H	&d D ;  PU"*/X*>HL	6"*.t*<?	.7s 7c 7"	tCH~sD(	) s d3S#X3F.G BS DI 
 
W 
 
C 
4S#X;O 
3$45>A	#r!   r+   )5r   httpr   typingr   r   r   r   urllib.parser   r	   django.contrib.adminr
   django.contrib.authr   django.core.validatorsr   django.httpr   r   django.template.responser   django.urlsr   r   r   r   django.utils.decoratorsr   django.utils.functionalr   django.utils.module_loadingr   django.views.decorators.cacher   unfold.dataclassesr   r   django.contrib.auth.decoratorsr   r   unfold.settingsr"   unfold.utilsr#   unfold.widgetsr$   r%   r&   r'   r(   r)   r+   r   r!   r    <module>r=     s      1 1 + * 3 / 1 5 ? ? 4 ( 5 5 4A ' # xi x%   h s   ,B B*)B*