
    Bh6                        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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& d dl'm(Z( d dl)m*Z* d dl+m,Z, d dl-m.Z. d dl/m0Z0 d dl1m2Z2m3Z3 d dl4m5Z5m6Z6m7Z7m8Z8 d dl9m:Z:m;Z; d dl<m=Z= d dl>m?Z? d dl@mAZA d dlBmCZCmDZDmEZEmFZFmGZGmHZH d dlImJZJ d dlKmLZLmMZM d ZNd  ZOe(d!        Zd" ZPd# ZQd$ ZRd% ZSd& ZTy')(    )quote)apps)settings)REDIRECT_FIELD_NAMElogin)redirect_to_login)ContentType)ObjectDoesNotExist)Http404HttpResponseHttpResponseBadRequestHttpResponseRedirect)render)title)TemplateResponse)Resolver404resolvereverse)patch_cache_control)url_has_allowed_host_and_scheme)now)activate)require_POST)apphook_pool)get_page_cache)LanguageError)CMSToolbarLoginForm)PagePageContent)_handle_no_apphook_handle_no_page_render_welcome_pagerender_pagecontent)get_object_preview_urlget_toolbar_from_request)get_current_site)get_cms_setting)is_editable_model)get_default_language_for_siteget_fallback_languagesget_language_listget_public_languagesget_redirect_on_fallback is_language_prefix_patterns_used)get_page_from_request)!get_declared_placeholders_for_objget_placeholder_confc                     | r>t               r4| d   dk(  r,| j                  d| d      sd| d| j                  d       } | S )Nr   /)r.   
startswithlstrip)redirect_urllanguages     9/home/dcms/DCMS/lib/python3.12/site-packages/cms/views.py_clean_redirect_urlr9   4   sW    9;QSV@V_k_v_vzO` 8*Al&9&9#&>%?@    c                 
   | j                   j                  }t               }t        d      rt	        | d      r.| j
                  j                  sr| j
                  j                  s\|sZt        |       }|M|\  }}}t        |      }d|_
        ||_        t        ||z
  j                         dz         }	t        ||	       |S t               }
t!        | |      }|s:|s8t"        j$                  j'                  |
      j)                         st+        |       S |svt        d      rk|j-                         |k7  rXt/        d	d
|j-                         i      }t        d      r%| j0                  j3                  d      }|r|d|z   z  }t5        |      S |st7        |       S || _        t	        | d      r-| j                   j:                  rt=        |
j>                        }ntA        |
j>                        }d}t	        | d      r| jB                  }|stE        |
j>                        }|jF                  s||vrt7        |       S |jI                  ddd       tK        |jL                  jO                               }|D cg c]  }||v r|
 }}| jQ                  | jR                        d| jR                  z  | jR                  g}	 tU        ||
j>                        }||vr3tE        |
j>                        }tY        ||
j>                        }|g|z   }ntY        ||
j>                        }|D cg c]  }||k7  r||v r| }}||v}t[        t]        |xs g       d      }|r|st7        |       S |r|r|j_                  |d      }n|j_                  |      }|ja                  |      xs |jc                  |      }|r+||k7  r&| jR                  dte        |       |k7  rt5        |      S |jg                  |d      xs d}ti        ||      }|r?||vr;t        d      r%| j0                  j3                  d      }|r|d|z   z  }t5        |      S |jj                  rG| j                   j                  s1tm        to        | jq                               tr        jt                        S |}|r|}tw        |       |jy                  |      }||_=        t	        | d      r| j
                  j}                  |       t        | |      S c c}w # tV        $ r d}Y 3w xY wc c}w )z\
    The main view of the Django-CMS! Takes a request and a slug, renders the
    page.
    
PAGE_CACHEtoolbarNTg      ?)max_age)use_pathREDIRECT_TO_LOWERCASE_SLUGzpages-details-by-slugslug)kwargsREDIRECT_PRESERVE_QUERY_PARAMSQUERY_STRING?user)site_idLANGUAGE_CODE)fallbackforce_reloadz/%sF)rI    )r7   )@rF   is_authenticatedr   r'   hasattrr=   edit_mode_activeshow_toolbarr   r   xframe_options_exemptheadersinttotal_secondsr   r&   r/   r   objectson_siteexistsr"   lowerr   METAgetr   r!   current_pageis_staffr+   pkr,   rH   r)   is_home_get_page_content_cachelistpage_content_cachekeysbuild_absolute_uripathr-   r   r*   nextiterget_absolute_urlget_pathget_sluglenget_redirectr9   login_requiredr   r   get_full_pathr   	LOGIN_URLr   get_content_objpage
set_objectr#   )requestrA   rL   response_timestampcache_contentcontentrQ   expires_datetimeresponser>   sitero   r6   query_stringuser_languagesrequest_languagepagecontent_languagesr7   available_languagesown_urlsredirect_on_fallbackdefault_language	fallbacksfallback_languageslanguage_is_unavailablefirst_fallback_language	page_path	page_slugcontent_languages                                r8   detailsr   =   s   
 ||44|$GY'009U9U^n 'w/$1>.GW.#G,H-1H*&H!$66EEG#MOG':O D 48DT\\%9%9$%?%F%F%H $G,,O$@A::<4"#:FDJJLCYZL?@&||//? C,$66L'55 w''GwGLL$9$9*477;-dgg>w("008A<<,NB w'' 	  4 H !8!8!=!=!?@!/,, 	  	""7<<0H%78HRVRYRYZ ~- 9A*+;TWWM	%&2	*+;TWWM	 "+''H8K,K 	  /6II"4(:(@b#A4H'9 w''	 %9 ,,#e - 5 ))*:;	MM"23Vt}}EU7V	DI%',,I*G9*T (	22(()9E(JPb*<9IJx'?@&||//? C,$66L'55 7<<#@#@ w'<'<'>!?ASASTT'
 3 	!""",<"=GGLw	"""7+gw//m  %$%s   5S1:S6 #T6TTc                    | j                   j                  t              }t        || j	                               st        d      }nt        |      }| j                  j                  rt        |      S t        | | j                        }|j                         r!t        | |j                         t        |      S |dz  }t        |      S )N)urlallowed_hostsz
pages-root)rq   dataz?cms_toolbar_login_error=1)GETrY   r   r   get_hostr   r   rF   rL   r   r   POSTis_valid
auth_login
user_cache)rq   redirect_toforms      r8   r   r      s    ++//"56K*{'JZJZJ\]l+K(||$$#K00wW\\BD}}7DOO,  ,, 	33,,r:   c                 
   	 t         j                  j                  |      }	 t        |j                         t              rAt        j                  j                  d      j                  |      }|j                  | _        n|j                  |      }|| j                  d}t!        |       }|j#                  |       t%        | d|      S # t         j                  $ r}t        |d }~ww xY w# t        $ r}t        |d }~ww xY w)Nro   r\   )objectcms_toolbarzcms/toolbar/structure.html)r	   rT   
get_for_idDoesNotExistr   
issubclassmodel_classr   _base_managerselect_relatedrY   ro   rZ   get_object_for_this_typer
   r=   r%   rp   r   )rq   content_type_id	object_idcontent_typeerrcontent_type_objcontextr=   s           r8   render_object_structurer      s    "**55oFl..0+>*88GGOSSW`Sa#3#8#8G +DD	DR
 #G 'w/G'('7AA% ## 3  3s/   C A1C- C*C%%C*-	D6C==Dc                 F    d t        |      D        |d<   t        | d|      S )Nc           	   3      K   | ]F  }|j                   t        d |j                   t        |j                               |j                  f H yw)name)defaultN)slotr1   r   inherit).0placeholders     r8   	<genexpr>z-render_placeholder_content.<locals>.<genexpr>  sK      ( 	  )9)95IYIYCZ[	
(s   AAcms_placeholder_slotszcms/headless/placeholder.html)r0   r   )rq   objr   s      r8   render_placeholder_contentr     s0    ( =SA(G#$ G%DgNNr:   c                    	 t         j                  j                  |      }|j                         }|rt        |      st        d      S 	 t        |t              r|j                  j                  d      j                  |      }|j                  | _        |j                  j                  r|j                  j                  t!        t#        j$                               v r\	 |j'                         }ddlm}	  |	| |      | _        t/        |      \  }
}}|
t0        ur |
| g|i |S n|j7                  |      }t;        j<                  d      j>                  }||j@                  vrt        d      S tC        |       }|jE                  |       tG        |dd       }tI        |tJ              r||_&        |r$|jO                         stQ        tS        |            S |j@                  |   } || |      S # t         j                  $ r}t
        |d }~ww xY w# t2        $ r t5        |       cY S w xY w# t8        $ r}t
        |d }~ww xY w)	Nz4Requested object does not support frontend renderingro   r   r   )
CMSToolbar)request_pathcmsredirect)*r	   rT   r   r   r   r   r(   r   r   r   admin_managerr   rY   ro   rZ   application_urlsdictr   get_apphooksrf   cms.toolbar.toolbarr   r=   r   r   r   r    r   r
   r   get_app_configcms_extensiontoolbar_enabled_modelsr%   rp   getattr
isinstancestrr6   object_is_editabler   r$   )rq   r   r   require_editabler   modelr   r   absolute_urlr   	view_funcargsrB   	extensionr=   r   render_funcs                    r8   render_object_endpointr     s&   +"**55oF ((* 1% 8%&\]]e[)$22AA&IMMQZM[#3#8#8G  %%66 %%66$|?X?X?Z:[[7 $4#D#D#FL>&0|&TGO.5l.C+ItV /(B4B6BB 0  ,DD	DR ##E*88II444%&\]]&w/G'('T:H(C ' : : <#$:;K$LMM2259Kw 011i ## 36 # 7-g667
  3sU   G1 
BH-  AH (H- 1HHHH*'H- )H**H- -	I6H==Ic                      t        | ||d      S )NTr   r   rq   r   r   s      r8   render_object_editr   U  s    !'?IX\]]r:   c                      t        | ||d      S )NFr   r   r   s      r8   render_object_previewr   Y  s    !'?IX]^^r:   N)Uurllib.parser   django.appsr   django.confr   django.contrib.authr   r   r   django.contrib.auth.viewsr   "django.contrib.contenttypes.modelsr	   django.core.exceptionsr
   django.httpr   r   r   r   django.shortcutsr   django.template.defaultfiltersr   django.template.responser   django.urlsr   r   r   django.utils.cacher   django.utils.httpr   django.utils.timezoner   django.utils.translationr   django.views.decorators.httpr   cms.apphook_poolr   cms.cache.pager   cms.exceptionsr   cms.forms.loginr   
cms.modelsr   r   cms.page_renderingr    r!   r"   r#   cms.toolbar.utilsr$   r%   	cms.utilsr&   cms.utils.confr'   cms.utils.helpersr(   cms.utils.i18nr)   r*   r+   r,   r-   r.   cms.utils.pager/   cms.utils.placeholderr0   r1   r9   r   r   r   r   r   r    r:   r8   <module>r      s        H 7 : 5  $ 0 5 5 5 2 = % - 5 ) ) ( / (  O & * /  1 Yb0J - -(B0	O72t^_r:   