
    Bh6                         d dl 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 d d	lmZ d d
lmZmZ d dlmZ dZddZddZ eeefddg       G d de             Zy)    N)Site)override_settings)reverse)
add_plugincreate_pagecreate_page_content)LanguageError)update_site_and_page_choices)EmptyPageContentPageContent)CMSTestCase)get_cms_settingget_languages)	menu_poolztests/rendering/base.htmlc                     | xs t         j                  j                         } t               | j                     d   d   S )z6Fetch the first language of the current site settings.r   coder   objectsget_currentr   idcurrent_sites    K/home/dcms/DCMS/lib/python3.12/site-packages/cms/tests/test_multilingual.pyget_primary_languager      4    =4<<#;#;#=L?<??+A.v66    c                     | xs t         j                  j                         } t               | j                     d   d   S )z6Fetch the other language of the current site settings.   r   r   r   s    r   get_secondary_languager      r   r   )extra_context.htmlr    )nav_playground.htmlr!   )CMS_TEMPLATESc                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)MultilingualTestCasec           	      N   t         j                  j                         }t        |      }| j	                  ||      }t        di |}|j                         }| j                  t        |             | j                  |j                         |d          | j                  |j                  |      |d          | j                  |j                  |      j                         d       | j                         }| j                  |      5  | j!                  |      }| j"                  j%                  | j'                  ||      |       t)        |      }|j+                         }d|d<   d|d<   |j,                  |d<   ||d	<   | j                  t/        |j                  |d
      t0                     | j"                  j%                  | j3                  ||      |       |j5                         }|j7                          | j                  |j                  |      |d          | j                  |j                  |      |d          | j                  |j                  |      |d          | j                  |j                  |d
      |d          ddd       y# 1 sw Y   yxY w)z~
        Test that a page can be created
        and that a new language can be created afterwards in the admin pages
        r   )sitelanguagetitleslug   z	ein Titelzein-slugcms_pager'   F)r'   fallbackr'   N )r   r   r   r   get_new_page_data_dbfieldsr   get_content_obj
assertTrueboolassertEqual	get_titleget_slugget_placeholderscountget_superuserlogin_user_contextget_pagedata_from_dbfieldsclientpostget_page_change_urir   copypk
isinstancer   get_page_add_urireload_clear_internal_cache)	selfr   TESTLANG	page_datapagecontent	superuser	TESTLANG2
page_data2s	            r   test_create_pagez%MultilingualTestCase.test_create_page'   s]    ||//1'\B33 4 
	
 'Y'&&( 	W& 	)9W+=>x0)F2CD..x8>>@!D &&(	$$Y/ 	d77	BIKKT55hEyQ
 /LII")J"-Jw!+Jv%)WWJz"%.Jz" OOJt';';YY^';'_aqrs KKT229dCZP;;=D &&(T^^Y^?GATUT]]I]>
6@RS T]]84i6GHT^^X^NPYZaPbc?	d 	d 	ds   
FJJ$c                 .   t               }t               }t        dd|      }t        ||j	                         ||j                  |             |j                  |       | j                  |      }|j                  |      d   }|j                  |      d   }t        |d|d       t        |d|d       | j                  |j                  |      j                         d	       | j                  |j                  |      j                         d	       y )
Nmlpager!   r)   r   
TextPlugintestbodyr-   r   )r   r   r   r   r4   r5   rescan_placeholdersrB   r6   r   r3   get_pluginsr7   )rD   rE   rJ   rG   page_placeholder_lang_1page_placeholder_lang_2s         r   test_multilingual_pagez+MultilingualTestCase.test_multilingual_pagef   s    ')*,	8%:HEIt~~'7DMMRZD[\  *{{4 "&"7"7"A!"D"&"7"7	"B1"E*L(P*L)&Q0<<h<OUUWYZ[0<<i<PVVXZ[\r   c                 8   t               }t               }t        d|z  d|      }t        |d|z  ||j	                  |             t        d|z  d||       t        j                  t        d            }| j                  d|z  |      }| j                  d|z  |      }t        j                  |      }t        j                  |      }d|d	   d	   d
<   | j                  |      5  |j                  d      j                  |      }	|j                  d      j                  |      }
|	D cg c]  }|j                   }}|
D cg c]  }|j                   }}| j                  ||       | j                  t!        |      d       d d d        d|d	   d	   d
<   | j                  |      5  |j                  d      j                  |      }	|j                  d      j                  |      }
|	D cg c]  }|j                   }}|
D cg c]  }|j                   }}| j#                  ||       | j                  t!        |      d	       | j                  t!        |      d       d d d        y c c}w c c}w # 1 sw Y   xY wc c}w c c}w # 1 sw Y   y xY w)Nz	mlpage-%sr!   rO   zmlpage-2-%s)parent	LANGUAGESz/%s/Fr   hide_untranslatedCMS_LANGUAGESCMSMenur*   T)r   r   r   r   r5   r>   deepcopyr   get_requestr   get_renderersettingsget_menu	get_nodesr   r3   lenassertNotEqual)rD   rE   rJ   rG   lang_settings	request_1	request_2request_1_menu_rendererrequest_2_menu_rendererrequest_1_nodesrequest_2_nodesnodelist_1list_2s                 r   test_hide_untranslatedz+MultilingualTestCase.test_hide_untranslatedt   si   ')*,	;13H(SI{Y'>4==YaKbcMH,.CXVZ[ok&BC$$Vh%6A	$$Vi%7C	"+"8"8"C"+"8"8"C38a/0]]]7 	-5>>yISST]^O5>>yISST]^O*9:$dgg:F:*9:$dgg:F:VV,S[!,	- 48a/0]]]7 	-5>>yISST]^O5>>yISST]^O*9:$dgg:F:*9:$dgg:F:/S[!,S[!,	- 	- ;:		- 	- ;:		- 	-sW   'AI:,I0?I:I5/I:,AJ1JJ
JA
J0
I::J
JJc           	         | j                         }t        j                  t        d            }d|d   d   d<   | j	                  |d      5  t        dd	d      }t        d
|j                         ||j                  d             t        dd	d      }t        d
|j                         ||j                  d             t        dd	d      }t        d
|j                         ||j                  d             t        dd	d
       |j                          | j                  j                  d      }| j                  |d       | j                  |      5  | j                  j                  d      }| j                  |j                  d       d d d        | j                  j                  d      }| j                  |j                  d       | j                  j                  d      }| j                  |j                  d       | j                  j                  d      }| j                  |j                  d       | j                  | j                               5  | j                  j                  d      }| j                  |j                  d       | j                  j                  d      }| j                  |j                  d       d d d        | j                  j!                          | j                  j                  d      }| j                  |j                  d       d d d        y # 1 sw Y   xY w# 1 sw Y   pxY w# 1 sw Y   y xY w)Nr[   Fr   r   publicen)r^   LANGUAGE_CODEpage1r!   derO   page2page4/en//de/   z
/en/page2/  
/de/page2/z
/en/page4/.  )r8   r>   r`   r   rc   r   r   r4   r5   set_as_homepager;   getassertRedirectsr9   r3   status_codelogout)rD   rI   rh   rG   ry   page3responses          r   test_frontend_langz'MultilingualTestCase.test_frontend_lang   s   &&(	ok&BC(-aH%]]d]K '	8w(=tDDdnn&64==QUCVW)>EEeoo&7U^^TXEYZ)>EEeoo&7U^^TXEYZ!6=  "
 {{v.H  62
 ((3 <;;??62  !5!5s;< {{|4HX1137{{v.HX1137{{|4HX1137 ((););)=> <;;??<8  !5!5s;;;??<8  !5!5s;	<
 KK {{|4HX1137O'	8 '	8(< << <A'	8 '	8s@   DM8L)CMA/L6AM)L3	.M6L?	;MMc                    t         j                  j                  ddd      }| j                  ddd|       t	        ddd|      }| j                  dd	      5  | j                  j                  d
      }| j                  |j                  d       | j                  j                  d|j                  d      z        }| j                  |j                  d       d d d        y # 1 sw Y   y xY wNr*   zexample-2.com)r   namedomainrG   r!   rx   )templater'   r&   ru   )SITE_IDrv   r{   r}   z/en/%s/r~   )r   r   createcreate_homepager   rc   r;   r   r3   r   get_path)rD   site_2page_2r   s       r   -test_page_with_invalid_language_for_anon_userzBMultilingualTestCase.test_page_with_invalid_language_for_anon_user   s    $$$X*	 	 	
 *	
 ]]1D]9 	8 {{v.HX1137{{y6??43H'HIHX1137	8 	8 	8s   BC$$C-c                 L   t         j                  j                  ddd      }| j                         }| j	                  ddd|       t        ddd|      }| j                  dd	      5  | j                  |      5  | j                  j                  d
      }| j                  |j                  d       | j                  j                  d|j                  d      z        }| j                  |j                  d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wr   )r   r   r   r8   r   r   rc   r9   r;   r   r3   r   r   )rD   r   rI   r   r   s        r   -test_page_with_invalid_language_for_auth_userzBMultilingualTestCase.test_page_with_invalid_language_for_auth_user   s   $$$X&&(	*	 	 	
 *	
 ]]1D]9 		<((3 <
  ;;??62  !5!5s;;;??9vt7L+LM  !5!5s;<		< 		<< <		< 		<s%   *D<BD=DD	DD#c                 l   ddl m} t        ddd      }|j                          | j	                  dd      } |||j                  d            }| j                  |j                  d       | j                  |d	   d
       t        j                  t        d            }g |d   d   d<   g |d   d   d<   | j                  |      5  | j                  j                  d      }| j                  |j                  d       | j                  |j                  t        d             ddd       | j                  |      5  t        dddd       | j                  j                  d      }| j                  |j                  d       ddd       t        j                  t        d            }d|d   d   d<   d|d   d   d<   | j                  |      5  | j                  j                  d      }| j                  |j                  d       ddd       y# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   yxY w)z9
        Test language fallbacks in details view
        r   )detailsrG   r!   ru   r|   rx   r   Locationr{   r[   r   	fallbacksr]   z admin:cms_pagecontent_changelistNry   rO   r   r~   Fredirect_on_fallbackr}   )	cms.viewsr   r   r   ra   r   r3   r   r>   r`   r   rc   r;   r   urlr   )rD   r   p1requestr   rh   s         r   test_language_fallbackz+MultilingualTestCase.test_language_fallback   s	    	&!6=

 ""6407BKK$56--s3*-v6 ok&BC+-aK(+-aK(]]]7 	X{{v.HX1137X\\73U+VW		X ]]]7 	8!67K{{|4HX1137		8 ok&BC6;a236;a23]]]7 	8{{v.H X1137		8 	8)	X 	X	8 	8	8 	8s&   AH<AH8H*HH'*H3c           	          | j                  g ddddg dgi      5  	 t        d       d d d        y # t        $ r | j                  d	       Y %w xY w# 1 sw Y   y xY w)
Nr   rx   GermanT)r   r   rt   r   )TEMPLATE_CONTEXT_PROCESSORSr^   zen-usr-   zLanguageError raised)rc   r
   r	   fail)rD   s    r   test_no_english_definedz,MultilingualTestCase.test_no_english_defined%  su    ]](*!8tRTU  
 
	22,g>
	2 
	2 ! 2		012
	2 
	2s&   A3AAAAAc                    t        ddd      }|j                  d      j                  d      }t        |ddd       t	        dd	|
      }|j                          t        |dd	d       |j                         }| j                         }| j                  |      5  | j                  j                  |      }| j                  |j                  d       d d d        y # 1 sw Y   y xY w)NrG   r!   ru   rS   )slotrP   zI'm the firstrR   ru)r(   r'   rG   zI'm the secondr}   )r   r6   r   r   r   saveget_absolute_urlr8   r9   r;   r3   r   )rD   rG   ph_enr(   endpointrI   r   s          r   test_wrong_plugin_languagez/MultilingualTestCase.test_wrong_plugin_language2  s    6#8$?%%d+//V/<5,?C&4dC

5,3CD((*&&(	$$Y/ 	8{{x0HX1137	8 	8 	8s   8CC&N)__name__
__module____qualname__rL   rX   rr   r   r   r   r   r   r   r.   r   r   r$   r$      s5    =d~] -D+8Z8.<6.8`28r   r$   )N)r>   django.contrib.sites.modelsr   django.test.utilsr   django.urlsr   cms.apir   r   r   cms.exceptionsr	   cms.forms.utilsr
   
cms.modelsr   r   cms.test_utils.testcasesr   cms.utils.confr   r   menus.menu_poolr   TEMPLATE_NAMEr   r   r$   r.   r   r   <module>r      sn     , /  @ @ ( 8 4 0 9 %+77 	&46Y8; Y8Y8r   