
    Bh*                        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mZ dd	gZ G d
 d      Zd Zd Zi dddej&                  dddi ddd ed      ffdddddddg dg ddd d!d"d#d$d%d&d'd(dd)di d*dd+d,e d-d.g d/g d0dd1g d2d3d4d5dd6d7d8d9d:d;d<d=d>dd?dd@g dAdBdCej(                  dDdEdddddFddddGdddddHZdI Z edJ      dK        Z edL      dM        Z edN      dO        Z edP      dQ        Z edR      dS        ZdT ZdU ZdV ZdW ZdX Z eeeeeee eeedY
Z!dZ Z"d[ Z#y)\    Nupdate_wrapper)urljoin)settings)ImproperlyConfigured)gettext_lazy)__version__	constantsget_cms_settingget_site_idc                       e Zd Zy)VERIFIEDN)__name__
__module____qualname__     >/home/dcms/DCMS/lib/python3.12/site-packages/cms/utils/conf.pyr   r      s    r   r   c                 H    ddl m} d}| r |d|       j                         }|S )z@
    Load a python module from its absolute filesystem path
    r   )SourceFileLoaderNmod)importlib.machineryr   load_module)module_pathr   importeds      r   _load_from_filer      s)     5H#E;7CCEOr   c                       fd}|S )Nc                 .      fd}t        |         S )Nc                  R    t        t               rt        t               S         S N)hasattrr   getattr)namewrappeds   r   wrapperz+default.<locals>.decorator.<locals>.wrapper#   s"    x&x..9r   r   )r$   r%   r#   s   ` r   	decoratorzdefault.<locals>.decorator"   s    	
 	w(r   r   )r#   r&   s   ` r   defaultr'   !   s     r   TEMPLATE_INHERITANCETDEFAULT_X_FRAME_OPTIONSTOOLBAR_SIMPLE_STRUCTURE_MODEPLACEHOLDER_CONFPLACEHOLDERS )contentzSingle placeholder
PERMISSIONFRAW_ID_USERS
PUBLIC_FORallAPPHOOKSTOOLBARSSITE_CHOICES_CACHE_KEYzCMS:site_choicesPAGE_CHOICES_CACHE_KEYzCMS:page_choices
MEDIA_PATHzcms/PAGE_MEDIA_PATHzcms_page_media/TITLE_CHARACTER+
PAGE_CACHEPLACEHOLDER_CACHEPLUGIN_CACHECACHE_PREFIXcms__PLUGIN_PROCESSORSPLUGIN_CONTEXT_PROCESSORSUNIHANDECODE_VERSIONUNIHANDECODE_DECODERS)jazhkrvn	diacriticUNIHANDECODE_DEFAULT_DECODERrI   TOOLBAR_ANONYMOUS_ONTOOLBAR_URL__PERSISTpersistTOOLBAR_URL__DISABLEtoolbar_offTOOLBAR_URL__ENABLE
toolbar_onADMIN_NAMESPACEadminAPP_NAMETOOLBAR_HIDEINTERNAL_IPSREQUEST_IP_RESOLVERz:cms.utils.request_ip_resolvers.default_request_ip_resolverPAGE_WIZARD_DEFAULT_TEMPLATE
TextPluginbodyzlive-urlauto)PAGE_WIZARD_CONTENT_PLUGINPAGE_WIZARD_CONTENT_PLUGIN_BODYPAGE_WIZARD_CONTENT_PLACEHOLDERSIDEFRAME_ENABLEDCONFIRM_VERSION4+ENDPOINT_LIVE_URL_QUERYSTRING_PARAM_ENABLED#ENDPOINT_LIVE_URL_QUERYSTRING_PARAMREDIRECT_PRESERVE_QUERY_PARAMSREDIRECT_TO_LOWERCASE_SLUGHIDE_LEGACY_FEATURESCOLOR_SCHEMECOLOR_SCHEME_TOGGLECATCH_PLUGIN_500_EXCEPTIONDEFAULT_IN_NAVIGATIONALWAYS_REFRESH_CONTENTc                  ,    t        t        ddddd      S )zC
    Returns the setting: CMS_CACHE_DURATIONS or the defaults.
    CMS_CACHE_DURATIONSi  <   )menusr.   permissions)r"   r   r   r   r   get_cache_durationsrp   d   s$     825  r   CMS_MEDIA_ROOTc                  p    t         j                  j                  t        j                  t        d            S Nr7   )ospathjoinr   
MEDIA_ROOTr   r   r   r   get_media_rootrx   o   s"    77<<++_\-JKKr   CMS_MEDIA_URLc                  H    t        t        j                  t        d            S rs   )r   r   	MEDIA_URLr   r   r   r   get_media_urlr|   t   s    8%%|'DEEr   CMS_TOOLBAR_URL__PERSISTc                      t        d      S )NrL   r   r   r   r   get_toolbar_url__persistr   y       122r   CMS_TOOLBAR_URL__DISABLEc                      t        d      S )NrN   r   r   r   r   get_toolbar_url__disabler   ~   r   r   CMS_TOOLBAR_URL__ENABLEc                      t        d      S )NrP   r   r   r   r   get_toolbar_url__enabler      s    011r   c                    	 t        t        dd      rt        t        dd      } t        | t              r| t        j                     } d	t        j
                  D cg c]
  }|d   d    }}|D ];  }| j                  |      dk(  s| j                  |t        j                  z   d      	 n 	sQ| j                  t        j                        }	 t        j                  j                  ||j                  d      dz   d   	t        j                  j                  | d      }t        j                  j!                  |      rgt#        |      }|j
                  j%                         D cg c]8  }t        j                  j                  	|d   j'                               |d   f: }}nBt)        	fd	t        j*                  |       D              }nt)        t        t        d
g             }t-        d      r,|r*|j/                  t0        j2                  t5        d      f       |S c c}w # t        $ r# t        j                  j                  |       	Y Qw xY wc c}w )NCMS_TEMPLATES_DIRFr-   DIRSr   	templates   z__init__.pyc              3   b   K   | ]&  }t         j                  j                  |      |f ( y wr    )rt   ru   rv   ).0tplprefixs     r   	<genexpr>z get_templates.<locals>.<genexpr>   s%     \#bggll637=\s   ,/CMS_TEMPLATESr(   z,Inherit the template of the nearest ancestor)r"   r   
isinstancedictSITE_ID	TEMPLATESfindreplacert   sepsplitru   rv   index
ValueErrorbasenameisfiler   itemsstriplistlistdirr   appendr
   TEMPLATE_INHERITANCE_MAGICr@   )
tpldirtemplateru   basedir
componentsconfig_pathtemplate_moduledatar   r   s
            @r   get_templatesr      s   x,e4#6> fd#H,,-F  5=4F4FG #GG 	G{{7#q("&&(8"=	
 bff-J2z*2B2B;2ORS2S2T'UV
 ggll6=9 77>>+&-k:OM\MfMfMlMlMnEIfd1gmmo6Q@I  \TZI[\\I?B?@	-.9)>>Bp@qrs; H  2 ))&12s   H!1H& &=I&(IIc                      t        t        dd      rt        j                  S t        t        dd      st        t        dd      ryt        d   S )NCMS_PLACEHOLDERSFr   r   r   r,   )r"   r   r   DEFAULTSr   r   r   get_placeholdersr      sB    x+U3(((x%0GHFY[`4aN##r   c                    g d}ddg}g d}t        | t              st        d      | j                  di       }|j	                  d      }g }|D ]  }||vst        d|z         |D ]  }||vsd	||<    | j                         D ]  \  }}	|t        |      k7  rt        d
|z        |	D ]u  }
|D ]  }||
vst        dd|       |
d   }|
D ]  }||vst        d|d|d|       d|
vr|r||
d<   n|j                  ||
f       |D ]  }||
vs||   |
|<    w  i }|D ]G  \  }}
||vr| |   D cg c]  }|d   s	|d    c}||<   ||   D cg c]  }||
d   k7  s| c}|
d<   I || d<   d	| t        <   | S c c}w c c}w )N)coder#   	fallbackshide_untranslatedredirect_on_fallbackpublicr   r#   )r   r   r   z`CMS_LANGUAGES must be a dictionary with site IDs and 'default' as keys. Please check the format.r'   r   zCCMS_LANGUAGES has an invalid property in the default properties: %sTzrCMS_LANGUAGES can only be filled with integers (site IDs) and 'default' for default values. %s is not a valid key.z?CMS_LANGUAGES has a language which is missing the required key z	 in site zCMS_LANGUAGES has invalid key z in language r   )	r   r   r   popgetr   hashr   r   )	languagesvalid_language_keysrequired_language_keyssimple_defaultsdefaultsdefault_fallbacksneeds_fallbackskeysitelanguage_listlanguage_objectrequired_keylanguage_codesite_fallbackslang	lang_codes                   r   _ensure_languages_settingsr      sh   n$f-MOi&"12 	2 }}Y+H [1O t))&'lor'rsst  !h HSM!  )0 9m4:&>@DEF F  - 	9O 6 K6.?BD0J K KK ,F3M& 11.8}]L]]fgkfno  /1$3DOK0#**D/+BC& 9o-+3C=OC(9#	996 N!0 
o~%=Ft_#_TPTU]P^DL#_N4 '5d';(
#yO\bLc?cI(
$
 $IiIh $`(
s   :
FFF'Fc                  ^   t         j                  t        t         j                        k7  rt        d      t         j                  s;t        t         j                  t         j                  t         j                  dgi      S t         j                  t        t         j                        vrt        dt         j                  z        t        t         dt         j                  t         j                  D  cg c]  \  } }| t        |      d c}} i      }t        |v r|S t        |      S c c}} w )NzSITE_ID must be an integer)r   r#   z:LANGUAGE_CODE "%s" must have a matching entry in LANGUAGESCMS_LANGUAGES)r   r   r   r   USE_I18Nr   LANGUAGE_CODEr   	LANGUAGESr"   r@   r   )r   r#   r   s      r   get_languagesr      s    4 0 011"(
 	
 ))?)?I_I_ `abd 	dT(*<*<%=="H8KaKaa
 	
 /XM_M_`ztTD!D':`4 I 9%i00	 as   3D)c                  \    t        t        dd       } | s| S | j                  d      r| S | dz   S )NCMS_UNIHANDECODE_HOST/)r"   r   endswith)hosts    r   get_unihandecode_hostr     s4    84d;D}}Sczr   )
CACHE_DURATIONSrw   r{   r   r,   r   UNIHANDECODE_HOSTr}   r   r   c                 b    | t         v rt        |           S t        t        d| z  t        |          S )NzCMS_%s)COMPLEXr"   r   r   )r#   s    r   r   r   )  s,    wt}8X_htn==r   c                     ddl m} t        | |      r| j                  S 	 t	        |       S # t
        t        f$ r Y t        j                  S w xY w)Nr   )Site)	django.contrib.sites.modelsr   r   idint	TypeErrorr   r   r   )r   r   s     r   r   r   /  sJ    0$ww4yz" s   
+ AA)$rt   	functoolsr   urllib.parser   django.confr   django.core.exceptionsr   django.utils.translationr   r@   cmsr	   r
   __all__r   r   r'   X_FRAME_OPTIONS_INHERITr   r   rp   rx   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>r      s   	 $     7 6 & 	 		
3D3y@@3 $T3 	3
 b,*>(?@B3 %3 E3 %3 3 3 03 03 &3 (3  s!3" $#3$ %3& D'3( d;-q))3* +3,  -3. D/30 B132 #K334 D536 I738 M93: <;3< w=3> ?3@ EA3B BC3D WE3F #I$H$HG3H #/'-'+38+5&+"' "&!#e3l 		L L 	F F 		#$3 %3 		#$3 %3 		"#2 $2*Z$<~1( + $. 8 86>r   