
    Bh7                     D   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mZ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 d dlmZ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,m-Z- d dl.m/Z/ d dl0m1Z2 d dl3m4Z4m5Z5m6Z6 d dl7m8Z8m9Z9 d dl:m;Z; d dl<m=Z= d dl>m?Z?  G d de6      Z@ G d de@      ZA G d d e@      ZB G d! d"e6      ZC G d# d$e@      ZD G d% d&e@      ZE G d' d(e6      ZF G d) d*e@      ZG G d+ d,e@      ZH G d- d.e@      ZIy)/    N)adminsite)flatten_fieldsets)get_user_model)
Permission)Site)Http404HttpResponseBadRequestHttpResponseNotFound)override_settings)	force_str	smart_str)
TextPlugin)Text)api)ChangePageForm)
add_plugincreate_pagecreate_page_content)TEMPLATE_INHERITANCE_MAGIC)PageContentPageUrlStaticPlaceholderUserSettings)Page)GlobalPagePermissionPagePermission)Placeholder)	testcases)URL_CMS_PAGE_DELETEURL_CMS_PAGE_PUBLISHEDCMSTestCase)
DJANGO_4_2
DJANGO_5_1)get_cms_setting)get_language_list)admin_reversec                   <    e Zd Zed        Zed        ZddZddZy)AdminTestsBasec                 0    t         j                  t           S Nr   	_registryr   selfs    D/home/dcms/DCMS/lib/python3.12/site-packages/cms/tests/test_admin.pypage_admin_classzAdminTestsBase.page_admin_class$       ~~d##    c                 0    t         j                  t           S r,   )r   r.   r   r/   s    r1   pagecontent_admin_classz&AdminTestsBase.pagecontent_admin_class(   s    ~~k**r4   c                 T    | j                         }|r|S | j                  |      }||fS r,   )get_superuser_get_staff_user)r0   
admin_onlyuse_global_permissions
admin_user
staff_users        r1   	_get_guyszAdminTestsBase._get_guys,   s5    '')
))*@A
:%%r4   c           	      B   d}t               j                  dk(  r&t               j                  j                  |dd      }n%t               j                  j                  |d|      }d|_        d|_        t        j                  j                  g d      }|j                          |j                  j                  |       |r]t        j                  j                  |dddddd      }|j                  j                  t        j                  j                                |S )	Ntestemailtest@test.comT)change_pagechange_titleadd_page	add_titledelete_pagedelete_title)codename__inFuser
can_change
can_deletecan_publishcan_change_advanced_settingscan_change_permissionscan_move_page)r   USERNAME_FIELDobjectscreate_useris_staff	is_activer   filtersaveuser_permissionssetr   createsitesr	   all)r0   r;   USERNAME
normal_guypermsgpps         r1   r9   zAdminTestsBase._get_staff_user4   s    **g5')11==hYhiJ')11==hYabJ"
#
""))p * 
 	##''.!&..55 -2'," 6 C IIMM$,,**,-r4   N)FTT)__name__
__module____qualname__propertyr2   r6   r>   r9    r4   r1   r*   r*   #   s2    $ $ + +&r4   r*   c                       e Zd Zd Z ed      d        Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z eg       d        Zy)AdminTestCasec                 (   | j                         \  }}| j                  |      5  | j                  | j                  d            }t	        j
                  |      }| j                  |d       | j                  |d       d d d        y # 1 sw Y   y xY w)Nenz/mytitleextension/z/mypageextension/)r>   login_user_contextget_requestget_pages_admin_list_urir   indexassertNotContainsr0   r<   staffrequestresponses        r1   test_extension_not_in_adminz)AdminTestCase.test_extension_not_in_adminR   s     NN,
E$$Z0 	B&&t'D'DT'JKGzz'*H""8-AB""8-@A		B 	B 	Bs   ABBFCMS_PERMISSIONc                 &   d}d}d}| j                         \  }}t        j                  j                  d      }t	        |dd||      }t	        |dd||      }||_        d	|_        |j                          ||_        |j                          ||j                  d      |j                  d
d	d}	| j                  |      5  | j                  j                  t        j                  |j                  z  |	      }
| j!                  |
j"                  d       | j!                  t$        j                  j'                  d	      j)                         d       | j                  j                  t        j                  |j                  z  |	      }
| j!                  |
j"                  d       d|	d<   | j                  j                  t        j                  |j                  z  |	      }
| j!                  |
j"                  d       d d d        y # 1 sw Y   y xY w)Nz	Test PagezTest page 2zproject.sampleapp.urls   pknav_playground.htmlrk   r   
created_byspace1	SampleApp)titleslugtemplateapplication_urlsapplication_namespacei.  )r      space2r   )r>   r	   rS   getr   r   r   rX   get_slugr   rl   clientpostbaseURL_CMS_PAGE_ADVANCED_CHANGEr{   assertEqualstatus_coder   rW   count)r0   PAGE1PAGE2APPLICATION_URLSr<   r_   current_sitepagepage2	page_dataresps              r1   "test_2apphooks_with_same_namespacez0AdminTestCase.test_2apphooks_with_same_namespaceZ   s   3!%!1
J||''1'- 5"7L]ghE#8$\^hi 0%-"		!1

 NN4( +%-
	 $$Z0 	4;;##D$E$E$OQZ[DT--s3T\\00x0PVVXZ[\;;##D$E$E$PR[\DT--s319I-.;;##D$E$E$PR[\DT--s3	4 	4 	4s   D=HHc                    | j                         }t        ddd|       t        ddd|      }t        ddd||       |j                  d      j                  d	      }t	        |d
dd       | j                  |      5  ddi}| j                  j                  t        |j                  z  |d      }| j                  || j                  d             d d d        y # 1 sw Y   y xY w)Nhomer|   rk   r~   delete-page
child-pager~   parentbodyslotr   textr   r   yesTfollowr8   r   get_placeholdersr   r   rl   r   r   r!   r{   assertRedirectsrn   r0   r<   r   r   datart   s         r1   test_deletezAdminTestCase.test_delete   s    '')
F14JO=*?R\]L"7*]ab$$T*..F.;4t&9$$Z0 	PE?D{{''(;dgg(EtTX'YH  4+H+H+NO	P 	P 	P    ACC'c                    | j                         }t        ddd|       t        ddd|      }t        ddd||       |j                  d      j                  d	
      }t	        |ddd       | j                  |      5  ddi}| j                  j                  t        |j                  z  |d      }| j                  || j                  d             d d d        y # 1 sw Y   y xY w)Nr   r|   rk   r   r   r   der   r   r   r   r   r   r   r   Tr   r   r   s         r1   test_delete_diff_languagez'AdminTestCase.test_delete_diff_language   s    '')
F14JO=*?R\]L"7*]ab$$T*..F.;4t&9$$Z0 	PE?D{{''(;dgg(EtTX'YH  4+H+H+NO		P 	P 	Pr   c                    | j                         }ddlm} | j                  |      5  |j                  j                         D ]  \  }}|j                  j                  dk7  r |j                  s-t        d|j                  j                  z        }| j                  j                  d|z  d      }|j                  }| j                  |j                  d|        	 d d d        y # 1 sw Y   y xY w)	Nr   r   cmszcms_%s_changelistz%s?q=1Tr   r   )r8   django.contrib.adminr   rl   r.   items_meta	app_labelsearch_fieldsr(   
model_namer   r   contentr   r   )r0   	superuserr   modeladmin_instanceurlrt   errmsgs           r1   test_search_fieldsz AdminTestCase.test_search_fields   s    &&(	-$$Y/ 		D)-)=)=)? D%~;;((E1%33#$7%++:P:P$PQ;;??8c>$?G!))  !5!5sFCD		D 		D 		Ds   B5C''C0c                 2   | j                         }t        ddd|       | j                  |      5  t        d      }| j                  j                  d|z        }|j                  }| j                  |j                  d|       d d d        y # 1 sw Y   y xY w)Nz	root-pager|   rk   r   cms_pagecontent_changelistz&%s?template__exact=nav_playground.htmlr   )	r8   r   rl   r(   r   r   r   r   r   )r0   r   r   rt   r   s        r1   test_pagetree_filteredz$AdminTestCase.test_pagetree_filtered   s    &&(	K!6S$$Y/ 	@ <=C{{'ORU'UVH%%FX113?		@ 	@ 	@s   ABBc                    | j                         }t        ddd|      }| j                  |      5  | j                  j	                  | j                  d|      dd|j                  d      }| j                  || j                  d             | j                  |j                  d      j                  d       d d d        y # 1 sw Y   y xY w)	Ncreate-translationcol_two.htmlr   r   rk   create-translation-enr   r   cms_pager   )r8   r   rl   r   r   get_page_add_urir{   r   rn   r   get_content_objr   )r0   r<   r   rt   s       r1   'test_create_translation_copies_templatez5AdminTestCase.test_create_translation_copies_template   s    '')
/R\]$$Z0 	R{{''%%dD16@Weielelm ( H   4+H+H+NOT11$7@@.Q	R 	R 	Rs   BCCc                    | j                         }t        ddd|      }| j                  |      5  dddd}| j                  j	                  | j                  d|      |	       | j                  j	                  | j                  d
|      dd|j                  d	      }| j                  || j                  d
             | j                  |j                  d
      j                  d       d d d        y # 1 sw Y   y xY w)Nr   r|   rk   r   ztest page 2zpage-test-2r   r   r   r   r   r   create-translation-der   )r8   r   rl   r   r   get_page_change_urir   r{   r   rn   r   r   r   r0   r<   r   r   rt   s        r1   Gtest_create_translation_copies_template_on_default_page_language_updatezUAdminTestCase.test_create_translation_copies_template_on_default_page_language_update   s    '')
/1FYcd$$Z0 	R*M~^DKK((t4   {{''%%dD16@Weielelm ( H   4+H+H+NOT11$7@@.Q	R 	R 	Rs   B;C55C>c                    | j                         }t        ddd|      }| j                  |      5  ddt        d}| j                  j                  | j                  d|      |       | j                  j                  | j                  d	|      d
d
|j                  d      }| j                  || j                  d	             | j                  |j                  d	      j                  t               ddd       y# 1 sw Y   yxY w)zc
        Test that template inheritance flag is properly copied when creating translations
        zinherit-templater|   rk   r   	test page	test-pager   r   r   z
inherit-der   N)r8   r   rl   r   r   r   r   r   r{   r   rn   r   r   r   r   s        r1   8test_create_translation_copies_template_with_inheritancezFAdminTestCase.test_create_translation_copies_template_with_inheritance   s     '')
-/DdWab$$Z0 	^(+KefDKK((t4  
 {{''%%dD1+\twwW ( H   4+H+H+NOT11$7@@B\]	^ 	^ 	^s   CC==Dc                    | j                         }t        ddd|      }| j                  |      5  dd|j                  dd}| j                  j                  | j                  d|      |	      }d
d
|j                  d}| j                  j                  | j                  d|      |	      }| j                  || j                  d             | j                  |j                  d      j                  d       d d d        y # 1 sw Y   y xY w)Nr   r|   frr   r   r   )r   r   r   r   r   r   r   r   rk   )r8   r   rl   r{   r   r   r   r   rn   r   r   r   r   s        r1   ftest_create_translation_always_copies_template_from_default_language_regardless_of_amount_of_languagesztAdminTestCase.test_create_translation_always_copies_template_from_default_language_regardless_of_amount_of_languages   s   '')
/1FYcd$$Z0 	Y0/ GG*	D {{''%%dD1 ( H 5>UcgcjcjkD{{''%%dD1 ( H   4+H+H+NOT11$7@@BWX#	Y 	Y 	Ys   CDDc                    | j                         }t        ddd|      }t        dd|d       t        dd	|d	       d
di}| j                  |      5  | j                  j                  | j                  d|            }| j                  |j                  d       | j                  j                  | j                  d|      |      }| j                  || j                  d             | j                  j                  | j                  d|            }| j                  |j                  d       | j                  |d       | j                  j                  | j                  d|      |      }| j                  || j                  d             d d d        | j                  t        j                  j!                  |d      j#                                | j%                  t        j                  j!                  |d      j#                                | j%                  t        j                  j!                  |d      j#                                | j%                  t&        j                  j!                  |d      j#                                | j%                  t&        j                  j!                  |d      j#                                y # 1 sw Y   AxY w)Nzdelete-page-translationr|   rk   r   r   zdelete-page-translation-2r   zes-mxzdelete-page-translation-esr   r   r   r   zY<p>Are you sure you want to delete the page content "delete-page-translation-es (es-mx)"?r   language)r8   r   r   rl   r   r   get_page_delete_translation_urir   r   r   r   rn   assertContains
assertTruer   rS   rW   existsassertFalser   r   s        r1   test_delete_translationz%AdminTestCase.test_delete_translation   sX   '')
46KT^hiD"=tJefG%A4Njk$$Z0 	S{{t'K'KDRV'WXHX1137{{''(L(LTSW(X_c'dH  4+H+H+NO{{t'K'KGUY'Z[HX1137u {{''(L(LWVZ([bf'gH  4+H+H+QR	S 	++22t2LSSUV,,333MTTVW,,333PWWYZ//TD/IPPRS//TG/LSSUV#	S 	Ss   D=KKc                 p   t        d      d   d   }| j                         | j                         }}| j                  |      5  | j                  j                  | j                  t        dd      d|i      }| j                  |j                  d       d d d        | j                  |      5  | j                  j                  | j                  t        dd      d|i      }| j                  |j                  d       d d d        t        d|d	      }| j                  d	|      }| j                  |      5  | j                  j                  |d|i      }| j                  |j                  d       d d d        | j                  |      5  | j                  j                  |dd
i      }| j                  |j                  d       | j                  j                  |d|i      }| j                  |j                  d       d d d        y # 1 sw Y   uxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)N	TEMPLATESr   change_templatery   r   i    r   rk   doesntexisti  r   )r&   r8   "get_staff_user_with_no_permissionsrl   r   r   get_admin_urlr   r   r   r   get_page_change_template_uri)r0   r   r<   rr   rt   r   endpoints          r1   test_change_templatez"AdminTestCase.test_change_template  s   ";/215!//143Z3Z3\E
$$Z0 	8{{''(:(:;HY[\(]`jlt_uvHX1137	8 $$U+ 	8{{''(:(:;HY[\(]`jlt_uvHX1137	8 ;$744T4@$$U+ 	8{{'':x2HIHX1137	8 $$Z0 	8{{'':}2MNHX1137{{'':x2HIHX1137		8 	8	8 	8	8 	8	8 	8	8 	8s3   AH,AH4;H A5H,HH H),H5c                    | j                         }t        ddd      }t        ddd||      }|j                          t        ddd||      }t        ddd||      }| j                  t        j
                  j                         j                         d       | j                  |      5  | j                  j                  | j                  d            }|j                  d	   d
   }| j                  |d   |       | j                  |d   |       | j                  |d   |       | j                  |d   |       d d d        y # 1 sw Y   y xY w)Nlevel1r|   rk   level21r   level22level3   treer   r   ry         )r8   r   refresh_from_dbr   r   rS   r]   r   rl   r   r   rn   context_data)r0   r<   first_level_pagesecond_level_page_topsecond_level_page_bottomthird_level_pagert   cms_page_nodess           r1   test_changelist_itemsz#AdminTestCase.test_changelist_items+  sQ   '')
&x1FM +,dzRb!
 	((*#.,dzRb$
  '+TjQf
 	))+113Q7$$Z0 	J{{t'D'DT'JKH%226:7CN^A.0@A^A.0EF^A.0@A^A.0HI	J 	J 	Js   +BEEc           	      D   | j                         }t        ddd      }t        ddd||      }t        ddd|| j                  |             t        ddd||       t        ddd|| j                  |             | j                  t        j
                  j                         j                         d	       | j                         }| j                  |      5  | j                  j                  |      }| j                  |j                  d
   d   j                         d	       d d d        | j                  |      5  | j                  j                  |dz         }| j                  |j                  d
   d   j                         d       d d d        | j                  |      5  | j                  j                  |dz         }| j                  |j                  d
   d   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)Nr   r|   rk   r   r   r   r   level23   r   r   z
&q=level23ry   z	&q=level2r   )r8   r   reloadr   r   rS   r]   r   rn   rl   r   r   r   )r0   r<   r   r   r   rt   s         r1   test_changelist_get_resultsz)AdminTestCase.test_changelist_get_resultsB  s    '')
&x1FM +,dzRb!
 	,dzRVR]R]^nRo	
 	H3TjYno,dzRVR]R]^nRo	
 	))+113Q7002$$Z0 	P{{x0HX226:7CIIKQO	P $$Z0 	P{{x,'>?HX226:7CIIKQO	P $$Z0 	P{{x+'=>HX226:7CIIKQO	P 	P	P 	P	P 	P	P 	Ps'   AG>>AH
&AH>H
HHc                 ~   t        ddd      }|j                  d      j                  d      }t        |dd      }t        |dd|       t        |dd|       | j	                  |j                  d      j                         d	       | j                         \  }}| j                  |d
      }| j                  |      5  | j                  j                  |ddi      }d d d        | j	                  j                  d       | j	                  |j                  d      j                         d       y # 1 sw Y   UxY w)NEmptyPlaceholderTestPage (EN)r|   rk   r   r   MultiColumnPluginColumnPlugin)r   r   r   r@   r   r   )r   r   r   r   r   get_pluginsr   r>   get_clear_placeholder_urlrl   r   r   r   )r0   page_enphcolumn_wrapperr<   rr   r   rt   s           r1   *test_empty_placeholder_with_nested_pluginsz8AdminTestCase.test_empty_placeholder_with_nested_plugins^  s!   
 =?TVZ[%%d+//V/<#B(;TB2~tNC2~tNC 	-335q9 NN,
E11"t1D$$Z0 	?{{''61+>H	? 	--s3 	-335q9	? 	?s    D33D<c                    t        ddd      }|j                  d      j                  d      }t        |ddd       t        |ddd	       t	        d
|j                         ||j                  d             t        |dd
d       t        |dd
d       t        |dd
d       | j                  |j                  d      j                         d       | j                  |j                  d
      j                         d       | j                         \  }}| j                  |d
      }| j                  |      5  | j                  j                  |ddi      }ddd       | j                  j                  d       | j                  |j                  d      j                         d       | j                  |j                  d
      j                         d       y# 1 sw Y   xY w)zX
        Test that Cleaning a placeholder only affect current language contents
        r  r|   rk   r   r   r   zHello World EN 1r   zHello World EN 2r   r   zHello World DEzHello World DE 2zHello World DE 3r   r   r
  r@   r   Nr   )r   r   r   r   r   	get_titler   r   r  r   r>   r  rl   r   r   r   )r0   r  r  r<   rr   r   rt   s          r1   *test_empty_placeholder_in_correct_languagez8AdminTestCase.test_empty_placeholder_in_correct_languagey  s   
 =?TVZ[%%d+//V/< 	2|T0BC2|T0BC 	D'"3"3"5wWEUEUVZE[\2|T0@A2|T0BC2|T0BC 	-335q9-335q9 NN,
E11"t1D$$Z0 	?{{''61+>H	? 	--s3 	-335q9-335q9	? 	?s   ;GG&c                    | j                         }t        ddd|      }t        ddd||      }t        ddd||      }| j                  |      5  | j                  j	                  | j                  d|      d	t        i       t        j                  j                  |d
      }| j                  |j                         d       d d d        y # 1 sw Y   y xY w)Ngrandparent-pager|   rk   r   parent-pager   r   r   r   r   )r8   r   rl   r   r   r   r   r   rS   r   r   get_templater0   r<   grandparent_pageparent_page
child_pagechild_page_contents         r1   Utest_template_inheritance_magic_with_three_levels_of_inheritance_inherits_from_parentzcAdminTestCase.test_template_inheritance_magic_with_three_levels_of_inheritance_inherits_from_parent  s    '')
&'9;PRVcmn!-R\euv /DdWajuv
$$Z0 	PKK11$
CjRlEm "-!4!4!8!8jSW!8!X/<<>O	P 	P 	Ps   A4CCc                    | j                         }t        ddd|      }t        dt        d||      }t        ddd||      }| j                  |      5  | j                  j                  | j                  d|      d	t        i       t        j                  j                  |d
      }| j                  |j                         d       d d d        y # 1 sw Y   y xY w)Nr  r|   rk   r   r  r   r   r   r   r   )r8   r   r   rl   r   r   r   r   rS   r   r   r  r  s         r1   Ztest_template_inheritance_magic_with_three_levels_of_inheritance_inherits_from_grandparentzhAdminTestCase.test_template_inheritance_magic_with_three_levels_of_inheritance_inherits_from_grandparent  s    '')
&'9;PRVcmn!5t
[k
 !~tPZcno
$$Z0 	WKK11$
CjRlEm "-!4!4!8!8jSW!8!X/<<>@UV	W 	W 	Ws   A4CC)CMS_TEMPLATESc                     | j                         }t        dt        d|      }t        dt        d||      }|j                  d      j	                         }| j                  |d       y )Nr  rk   r   r  r   )r   )r8   r   r   r   get_placeholder_slotsr   )r0   r<   r  r  child_slotss        r1   ctest_placeholder_slot_inheritance_magic_with_two_levels_of_inheritance_without_configured_templateszqAdminTestCase.test_placeholder_slot_inheritance_magic_with_two_levels_of_inheritance_without_configured_templates  sf    '')
!"46PRVcmn 5t
[f

 !006LLNl3r4   N)rc   rd   re   ru   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r$  rg   r4   r1   ri   ri   Q   s    B e,$4 -$4L
PPD@	RR ^*Y.W282J.P8:6 :DPW R(	4 )	4r4   ri   c                   H    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)
AdminTestsc                 (    t        ddd      | _        y )Ntestpager|   rk   )r   r   r/   s    r1   setUpzAdminTests.setUp  s    
,A4H	r4   c                     t               }t        ddd      }|j                  dk7  rd||j                  <    |di |}|j                  t	        ||j                               |j                          |S )Nadmin@django-cms.orgT)rA   rU   is_superuserrA   r   rg   r   dictrR   set_passwordgetattrrX   r0   Userfieldsusrs       r1   	get_adminzAdminTests.get_admin  sl    2TPTU')*1F4&&'nVnd&9&9:;

r4   c                     t               }t        dd      }|j                  dk7  rd||j                  <    |di |}|j                  t	        ||j                               |j                          |S )Nzpermless@django-cms.orgT)rA   rU   rA   permlessrg   r-  r1  s       r1   get_permlesszAdminTests.get_permless  si    5E')*4F4&&'nVnd&9&9:;

r4   c                     | j                   S r,   )r   r/   s    r1   get_pagezAdminTests.get_page  s    yyr4   c                 h   t        d      }t        d      }t        d      }| j                         }| j                  |      5  | j                  j	                  |      }| j                  |j                  d       d d d        | j                  |       | j                  ||       y # 1 sw Y   .xY w)Nro   cms_page_changelistr   r   )	r(   r5  rl   r   r   r   r   rp   r   )r0   r   endpoint_pageendpoint_page_contentr<   rt   s         r1   test_admin_indexzAdminTests.test_admin_index  s     )%&;< -.J K^^%
$$Z0 	8{{x0HX1137	8 	x7H&;<	8 	8s   8B((B1c                 2   | j                         }| j                  |d      }| j                         }| j                         }| j                  }| j                  |      5  | j                         }|j                  ||j                        }| j                  |j                  d       d d d        | j                  |      5  | j                  ddi      }|j                  ||j                        }| j                  |j                  d       d d d        | j                  |      5  | j                  ddi      }| j                  j                  d       d d d        | j                  |      5  | j                  ddi      }| j                  t        |j                  ||j                  dz          d d d        | j                  |      5  | j                  ddi      }|j                  ||j                        }| j                  |j                  d       d d d        | j                  |      5  | j                  ddi      }|j                         }|j                  ||j                        }| j                  |j                  d       | j                  |      }| j                  ||j                                 d d d        y # 1 sw Y   &xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   @xY w# 1 sw Y   xY w# 1 sw Y   y xY w)	Nrk   i  nor   	post_datar   d      )r:  get_pagecontent_objr8  r5  r6   rl   rm   change_innavigationr{   r   r   assertRaisesr
   get_in_navigationr  )	r0   r   r   r7  r<   pagecontent_adminrs   rt   olds	            r1   test_change_innavigationz#AdminTests.test_change_innavigation  s   }}**46$$&^^%
 88$$X. 	8&&(G(<<WgjjQHX1137	8 $$X. 	8&&$&@G(<<WgjjQHX1137	8 $$X. 	8&&$&@GX1137	8 $$Z0 	i&&$&@Gg'8'L'LgW^WaWadgWgh	i $$X. 	8&&$&@G(<<WgjjQHX1137	8 $$Z0 	@&&$&@G((*C(<<WgjjQHX1137;;t$DSd&<&<&>">?	@ 	@%	8 	8	8 	8	8 	8	i 	i	8 	8	@ 	@sM    A	KAK(1K'2AK4AL5BLKK$'K14K>L
Lc                 Z   | j                   j                  d      d   }t        |ddd      }| j                         }| j	                  |      5  | j                  |      }| j                  j                  |      }| j                  |j                  d       d d d        y # 1 sw Y   y xY w)Nrk   r   r   r@   r   r   )
r   r   r   r5  rl   get_delete_plugin_urir   r   r   r   )r0   r  pluginr<   r   rt   s         r1    test_remove_plugin_requires_postz+AdminTests.test_remove_plugin_requires_post  s    YY''-a0Bd@^^%
$$Z0 	811&9H{{x0HX1137	8 	8 	8s   A	B!!B*c                    ddddiii}| j                         }t        d      }| j                  d|      5  t        dd	d
      }|j	                  d
      j                  d      }t        |dd
d       | j                  |      5  d|j                  d
d}| j                  j                  ||      }| j                  |j                  t        j                         d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   limitsglobalry   cms_placeholder_add_pluginFrw   CMS_PLACEHOLDER_CONFsomepager|   rk   r   r   r   r   )plugin_typeplaceholder_idtarget_languager5  r(   settingsr   r   r   r   rl   r{   r   r   r   r   r   r0   confr<   r   r   r   r   rt   s           r1   test_too_many_plugins_globalz'AdminTests.test_too_many_plugins_global  s   a
 ^^%
89]]%d]K 	[z+@$GD((.222?Dt\4f=((4 [#/&*gg'+
  ;;++C6  !5!57M7Y7YZ[		[ 	[[ [		[ 	[s%   AC:AC.C:.C7	3C::Dc                    ddddiii}| j                         }t        d      }| j                  d|      5  t        dd	d
      }|j	                  d
      j                  d      }t        |dd
d       | j                  |      5  d|j                  d
dd}| j                  j                  ||      }| j                  |j                  t        j                         d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   rR  r   ry   rT  FrU  rW  r|   rk   r   r   r    )rX  rY  rZ  plugin_parentr[  r]  s           r1   test_too_many_plugins_typez%AdminTests.test_too_many_plugins_type4  s    !
 ^^%
89]]%d]K 	[z+@$GD((.222?Dt\4f=((4 [#/&*gg'+%'	  ;;++C6  !5!57M7Y7YZ[		[ 	[[ [		[ 	[s%   AC;AC/C;/C8	4C;;Dc                 D   t        d| j                  j                  df      dz   }| j                  | j	                               5  | j
                  j                  |      }d d d        t        r| j                  d       y | j                  d       y # 1 sw Y   5xY w)Ncms_page_edit_title_fieldsrk   argsz#?language=en&edit_fields=page_titlezH<input type="text" name="page_title" maxlength="255" id="id_page_title">zr<input type="text" name="page_title" maxlength="255" aria-describedby="id_page_title_helptext" id="id_page_title">)	r(   r   r{   rl   r8   r   r   r$   r   )r0   r   rt   s      r1   test_page_edit_field_endpointz(AdminTests.test_page_edit_field_endpointL  s    6diillD=QR34 	 $$T%7%7%9: 	1{{x0H	1*tu E	1 	1s   BBN)rc   rd   re   r)  r5  r8  r:  r?  rL  rP  r_  rc  rh  rg   r4   r1   r&  r&    s9    I=@@8[.[0r4   r&  c                   (    e Zd Zed        Zd Zd Zy)NoDBAdminTestsc                 0    t         j                  t           S r,   r-   r/   s    r1   admin_classzNoDBAdminTests.admin_class]  r3   r4   c                     | j                         }t        r,| j                  | j                  j	                  dd             y | j                  | j                  j	                  dd|             y Nsite__exact1)rs   rm   r%   r   rl  lookup_allowedr0   rs   s     r1   test_lookup_allowed_site__exactz.NoDBAdminTests.test_lookup_allowed_site__exacta  W    ""$OOD,,;;M3OPOOD,,;;M3X_;`ar4   c                     | j                         }t        r,| j                  | j                  j	                  dd             y | j                  | j                  j	                  dd|             y rn  rq  rs  s     r1   test_lookup_allowed_publishedz,NoDBAdminTests.test_lookup_allowed_publishedh  ru  r4   N)rc   rd   re   rf   rl  rt  rw  rg   r4   r1   rj  rj  \  s     $ $bbr4   rj  c                   F    e Zd Zd Zd Zd ZddZd Zd ZddZ	d Z
d	 Zy
)PluginPermissionTestsc                 n    t        ddd      | _        | j                  j                  d      d   | _        y )Nr   r|   rk   r   )r   _pager   _placeholderr/   s    r1   r)  zPluginPermissionTests.setUpq  s/     .CTJ
 JJ77=a@r4   c                     t               }t        ddd      }|j                  dk7  rd||j                  <    |di |}|j                  d       |j	                          |S )Nr+  T)rA   rU   rV   rA   r   rg   )r   r.  rR   r/  rX   )r0   r2  r3  r<   s       r1   
_get_adminz PluginPermissionTests._get_adminu  s`    2TTR')*1F4&&'^F^
(r4   c                 D    t         j                  j                  t           S r,   )r   r   r.   r   r/   s    r1   _get_page_adminz%PluginPermissionTests._get_page_admin  s    zz##D))r4   c                     | d|j                   j                  j                          }|j                  j	                  t
        j                  j                  |             y )N_)codename)r   object_namelowerrY   addr   rS   r   )r0   rK   r   permission_typerX   r  s         r1   _give_permissionz&PluginPermissionTests._give_permission  sO    %&a(?(?(E(E(G'HI!!*"4"4"8"8("8"KLr4   c                     | j                  |t        d       | j                  |t        d       | j                  |t        d       y )Nr  changedelete)r  r   )r0   rK   s     r1   _give_page_permission_rightsz2PluginPermissionTests._give_page_permission_rights  s8    dNE:dNH=dNH=r4   c           	      L    t        dt        f|| j                  d|      d      S )NRequestrk   )rK   path)typeobjectr   )r0   rK   r   s      r1   _get_change_page_requestz.PluginPermissionTests._get_change_page_request  s'    Iy4AYAYZ^`dAe*fggr4   c           	         dD ]'  }t         t        fD ]  }| j                  |||d        ) t        j                  j                  |dddddd      }t        j                  j                         |_        |r|j                          y y )N)r  r  r  FTrJ   )
r   r   r  r   rS   r[   r	   r]   r\   rX   )r0   rK   rX   	perm_typer   ra   s         r1   _give_cms_permissionsz+PluginPermissionTests._give_cms_permissions  s    4 	EI, E%%dE9eDE	E #**11).#( 2 
 LL$$&	IIK r4   c                 4    t        | j                  dd      }|S )Nr   rk   )r   r|  )r0   rO  s     r1   _create_pluginz$PluginPermissionTests._create_plugin  s    D--|TBr4   c                 r   | j                         }| j                         \  }}t               j                  dk(  r| j                  j                  dd       n| j                  j                  dd       | j                  |t        d       dj                  t        d|j                  g      |j                        }|d	z  }| j                  j                  |t                     }| j                  |j                  t        j                         | j!                  d
t#        |j$                        v        y)zEUser tries to edit a plugin using a random url. 404 response returnedrA   rB   )usernamepasswordr@   r  z{}edit-plugin/{}/cms_placeholder_edit_pluginrf  z?cms_path=/en/zPage not foundN)r  r>   r   rR   r   loginr  r   formatr(   idr   r.  r   r   r   r   r   r   )r0   rO  r  r_   r   rt   s         r1   test_plugin_edit_wrong_urlz0PluginPermissionTests.test_plugin_edit_wrong_url  s    $$&(:**g5KKQKKv?j$9&--7vyykJFII
 	$$;;##Hdf5--/C/O/OP(Ih6F6F,GGHr4   Nrb   )rc   rd   re   r)  r~  r  r  r  r  r  r  r  rg   r4   r1   ry  ry  p  s3    A*M>
h"Ir4   ry  c                   l    e Zd Zd Zd Zd Z ed      d        Z ed      d        Zd Z	d	 Z
d
 Zy)AdminFormsTestsc                    | j                         }t        ddd      }ddd|j                  d      d}| j                  d|      }| j	                  |      5  | j
                  j                  ||      }| j                  || j                  d             | j                  |j                  j                  dd      d	g       d
d
d
       y
# 1 sw Y   y
xY w)zW
        A manual path needs to be stripped from leading and trailing slashes.
        r   r|   rk   r   z/overwrite/url/)r   r   overwrite_urlr   r  managed)zoverwrite/urlFN)r8   r   r  r   rl   r   r   r   rn   assertSequenceEqualurlsvalues_list)r0   r   r   r   r   rt   s         r1   test_clean_overwrite_urlz(AdminFormsTests.test_clean_overwrite_url  s     &&(	{,A4H . --d3	
	 ++D(;$$Y/ 	{{'')<H  4+H+H+NO$$))&)<)*	 	 	s   A+CCc                    | j                         }t        j                  j                  ddd      }t	        j
                  dt        d      d   d   d|      }d	d
|j                  d}| j                  |      5  | j                  d      }| j                  j                  ||      }t        rd}nd}| j                  |j                  d       | j                  ||d       d d d        y # 1 sw Y   y xY w)Nr   foo.comr  domainnamer@   r   r   r   r   Titler   r   r   r  rk   U<ul class="errorlist"><li>Site doesn&#39;t match the parent&#39;s page site</li></ul>q<ul class="errorlist" id="id_parent_page_error"><li>Site doesn&#x27;t match the parent&#x27;s page site</li></ul>r   Thtml)r8   r	   rS   r[   r   r   r&   r{   rl   r   r   r   r%   r   r   r   )r0   r   new_siter  new_page_datar   rt   expected_errors           r1   %test_missmatching_site_parent_dotsitez5AdminFormsTests.test_missmatching_site_parent_dotsite  s    &&(	<<&&!II&Noofok.J1.Ma.PRV]ef&>>

 $$Y/ 	E,,T2H{{''-@Hn 
X  X1137.tD	E 	E 	Es   <A)C..C7c                 b   | j                         }t        j                  j                  ddd      }t	        j
                  dt        d      d   d   d|      }d	d
|j                  d}| j                  d      }| j                  |      5  | j                  j                  ||      }t        rd}nd}| j                  |j                  d       | j                  ||d       d d d        d	dd}| j!                  d      5  | j                  |      5  | j                  j                  ||      }t        rd}nd}| j                  |j                  d       | j                  ||d       d d d        d d d        t	        j
                  dt        d      d   d   d      }d	dd}| j                  |      5  | j!                  d      5  | j                  j                  ||      }t        r"dj#                  | j%                  d|            }n!dj#                  | j%                  d|            }| j                  |j                  d       | j                  ||d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   9xY w# 1 sw Y   y xY w)Nr   r  r  r@   r   r   r   r   r  r   r  rk   r  r  r   Tr  #)r   r   zInvalid slugut   <ul class="errorlist"><li>Enter a valid “slug” consisting of letters, numbers, underscores or hyphens.</li></ul>u   <ul class="errorlist" id="id_slug_error"><li>Enter a valid “slug” consisting of letters, numbers, underscores or hyphens.</li></ul>zDuplicate slug / pathzw<ul class="errorlist"><li>Page <a href="{}" target="_blank">test</a> has the same url 'test' as current page.</li></ul>z<ul class="errorlist" id="id_slug_error"><li>Page <a href="{}" target="_blank">test</a> has the same url 'test' as current page.</li></ul>)r8   r	   rS   r[   r   r   r&   r{   r   rl   r   r   r%   r   r   r   subTestr  r   )	r0   r   site0page1r  r   rt   r  r   s	            r1   test_form_errorsz AdminFormsTests.test_form_errors  s   &&(	##q#K(DQ(G(JDW\]  88

 ((.$$Y/ 	E{{''-@Hn 
X 
 X1137.tD	E" 

 \\.) 	I((3 I;;++HmD< #N #
   !5!5s;##Hn4#HI	I$ (DQ(G(JDQ

 $$Y/ 	I56 I;;++HmDM fT55dEBC	 #M fT55dEBC	 #   !5!5s;##Hn4#H!I	I 	I[	E 	E,I I	I 	I2I I	I 	IsW   AI2JAI?-J9J%BJ!J%2I<?J		JJJ"	J%%J.Frv   c                    | j                         }t        dddd       t        ddd      }| j                  t        d|j                        }ddd	}| j                  |      5  | j                  j                  ||      }d
}| j                  |j                  d       | j                  ||j                  |j                        d       d d d        y # 1 sw Y   y xY w)NPage 1r|   rk   p1)
reverse_idzPage 2advancedr   )r  r   zS<ul class="errorlist"><li>A page with this reverse URL id exists already.</li></ul>r   Tr  )r8   r   r   r   r{   rl   r   r   r   r   r   r  )r0   r   r   page2_endpoint
page2_datart   r  s          r1   test_reverse_id_error_locationz.AdminFormsTests.test_reverse_id_error_location8  s    &&(	H3TdKH&;TB++D*ehhG &


 $$Y/ 	V{{''
CHuNX1137.*?*?*IPTU		V 	V 	Vs   $A(CCc                    | j                         }t        ddd      }ddd}t        d|j                  f      }d|d	<   | j	                  |      5  | j
                  j                  ||      }| j                  |j                  d
       |j                         }| j                  |j                  d        d d d        y # 1 sw Y   y xY w)Nr  r|   rk   r   )r   r   cms_page_advancedrf  TestAppr   r   )r8   r   r(   r{   rl   r   r   r   r   r  r   )r0   r<   r   r   r  rt   s         r1   0test_advanced_settings_endpoint_fails_gracefullyz@AdminFormsTests.test_advanced_settings_endpoint_fails_gracefullyK  s    '')
8%:DA&
	 0zB )2	$%$$Z0 	:{{''i8HX1137;;=DT22D9	: 	: 	:s   A%B??Cc                 4   ddl m} |j                          t        ddd      }|j	                          |j                  d      D ]  }t        |t        dd        | j                         }| j                  |j                  d      j                         d       | j                  |      5  t        | j                  j                  d	      j                        }| j!                  d|       | j                  t"        j$                  j                         d       |j                  d      D ]  }t        |t        dd        t        | j                  j                  d	      j                        }| j!                  d|       d d d        y # 1 sw Y   y xY w)
Nr   cacheTestzstatic.htmlrk   <b>Test</b>r   r   /en/)django.core.cacher  clearr   set_as_homepager   r   r   r8   r   r   rl   r   r   r   r   assertInr   rS   )r0   r  homepageplaceholderrK   outputs         r1   test_render_edit_modez%AdminFormsTests.test_render_edit_modeh  sI   +v}d;  "#44T: 	JK{J=I	J !!#2248>>@!D$$T* 	1t{{v6>>?FMM-0.66<<>B'88> N;
D}MNt{{v6>>?FMM-0	1 	1 	1s   -CFFc           	         ddl m} |j                          t        d      D ]  }t	        d|z  dd        t
        j                  j                         D ]  }t        |t        dd        | j                         }| j                  |      5  | j                  d	      5  t        | j                  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)
Nr   r  
   zTest%sr   rk   r  r      )r  r  r  ranger   r   rS   r]   r   r   r8   rl   assertNumQueriesr   r   r   rn   )r0   r  ir  rK   s        r1   test_tree_view_queriesz&AdminFormsTests.test_tree_view_queries~  s    +r 	<A1nd;	<&..224 	JK{J=I	J !!#$$T* 	P&&q) P$++//$*G*G*MNOP	P 	PP P	P 	Ps$   C1 4C%C1%C.	*C11C:c                 *   | j                         \  }}t        }t        ddd       | j                  |      5  t        ddddd      }|j	                         }d|_        |j                          |j                          | j                  d	| j                  j                  |      j                         | j                  d
| j                  j                  |d      j                         | j                  dt        t        j                  | j                  j                  |ddid      j                  j                  d                         | j                  dt        t        j                  | j                  j                  |ddid      j                  j                  d                         | j                  dt        t        j                  | j                  j                  |ddid      j                  j                  d                         | j                  dt        t        j                  | j                  j                  |ddid      j                  j                  d                         d d d        y # 1 sw Y   y xY w)Nr   r   rk   
main_titleoverwritten_url
menu_title)r  r  
page_titler   r   XMLHttpRequest)HTTP_X_REQUESTED_WITHry   qzutf-8)r>   r"   r   rl   r   r  rX   r   r   r   r   lenjsonloadsr   decode)r0   r   	staff_guypage_urlmulti_title_pager   s         r1   test_smart_link_pagesz%AdminFormsTests.test_smart_link_pages  s3   >>+y)FND1$$Y/ ;	*ndBS`l  %446E+EJJL!!# S$++//(";"G"GHS$++//(Rb/"c"o"op JJ$sL&9Qa ( !'&&/	 JJ$sL&9Qa ( !'&&/	 JJ$s,=&>Vf ( !'&&/	 JJ$sL&9Qa ( !'&&/	e;	 ;	 ;	s   IJ		JN)rc   rd   re   r  r  r  r   r  r  r  r  r  rg   r4   r1   r  r    sZ    ,E2JIX e,V -V$ e,: -:81,P@r4   r  c                       e Zd Zd Zy) PagePropsMovedToPageContentTestsc                    g d}t        t        j                        }t        j                  j
                  D cg c]  }|j                   }}t        t        |      t        |      z
        }|D ]  }| j                  ||        y c c}w )N)r  
changed_bychanged_dater~   creation_datepage_idin_navigationr   )
r   r   	fieldsetsr   r   r3  attnamelistrZ   r  )r0   non_editableschange_page_form_fieldsetsfieldpage_content_fieldsfiltered_page_content_fieldss         r1   test_moved_fieldsz2PagePropsMovedToPageContentTests.test_moved_fields  s    	
 &7~7O7O%P":E:K:K:R:RSu}}SS (,C0C,Ds=GY,Y'Z$1 	=EMM%!;<	= Ts   B	N)rc   rd   re   r  rg   r4   r1   r  r    s    =r4   r  c                       e Zd ZdZd Zy)AdminPageEditContentSizeTestsz
    System user count influences the size of the page edit page,
    but the users are only 2 times present on the page

    The test relates to extra=0
    at PagePermissionInlineAdminForm and ViewRestrictionInlineAdmin
    c                 f   | j                  d      5  | j                         }d}d}t        j                  j	                  d      }t        |dd||	      }|j                          || _        | j                  |      5  t        j                  | j                  j                  z  }| j                  j	                  |      }| j                  |j                  d
       t        |j                         }t#               j                  j%                         }	t#               j                  j'                  ||dz   |       t#               j                  j%                         }
|	|
k  }| j)                  |d       | j                  j	                  |      }t        |j                         }||k  }| j)                  |d       t+        |j                   |j,                        }|j%                  |      }| j                  |dd| d| d       ddd       ddd       y# 1 sw Y   xY w# 1 sw Y   yxY w)z|
        Expected a username only 2 times in the content, but a relationship
        between usercount and pagesize
        Trv   TestPagetest_size_user_0ry   rz   r|   rk   r}   r   z@django-cms.org)r  rA   r  zNew users got NOT createdz+Page size has not grown after user creationr   z	Username z
 appeared z, times in response.content, expected 2 timesN)r\  r8   r	   rS   r   r   rX   r{  rl   r   r   r{   r   r   r   r  r   r   r   rT   r   r   charset)r0   r<   	PAGE_NAME	USER_NAMEr   r   r   rt   old_response_sizeold_user_count
user_countmore_users_in_dbnew_response_sizepage_size_grownr   
foundcounts                   r1   test_editpage_contentsizez7AdminPageEditContentSizeTests.test_editpage_contentsize  s   
 ]]$]/ #	++-J"I*I<<++q+1Ly*?LeopDIIKDJ((4 77$**--G;;??3/  !5!5s;$'(8(8$9!!/!1!9!9!?!?!A ((44&i:K.KV_ 5  ,-55;;=
#1J#>  02MN;;??3/$'(8(8$9!"36G"G1^_ !1!183C3CD!ZZ	2
  	{*ZL@lm/#	 #	 #	 #	s%   A-H' F
H
H'H$	 H''H0N)rc   rd   re   __doc__r  rg   r4   r1   r  r    s    (r4   r  c                       e Zd Zd Zd Zy)AdminPageTreeTestsc                    | j                         \  }}| j                  }t        ddd      }t        dt        d      }t        dt        d      }t        dt        d      }|j                  d|j                  d}| j                  |      5  | j                  |	      }	|j                  |	|j                  
      }
t        j                  |
j                  j                  d            }d d d        | j                  
j                  d       | j                  |d   d       |j                          | j                  |j                         j!                         d       |j                  d|j                  d}| j                  |      5  | j                  |	      }	|j                  |	|j                  
      }
t        j                  |
j                  j                  d            }d d d        | j                  |
j                  d       | j                  |d   d       |j                          | j                  |j                         j!                         d       |j                          | j                  |j                         j!                         d       |j                  d|j                  d}| j                  |      5  | j                  |	      }	|j                  |	|j                  
      }
t        j                  |
j                  j                  d            }d d d        | j                  |
j                  d       | j                  |d   d       |j                          | j                  |j                         j!                         d       |j                          | j                  |j                         j!                         d       |j                          | j                  |j                         j!                         d       |j                  dd}| j                  |      5  | j                  |	      }	|j                  |	|j                  
      }
t        j                  |
j                  j                  d            }d d d        | j                  |
j                  d       | j                  |d   d       |j                          | j                  |j                         j!                         d       |j                          | j                  |j                         j!                         d       |j                          | j                  |j                         j!                         d       |j                  d|j                  d}| j                  |      5  | j                  |	      }	|j                  |	|j                  
      }
t        j                  |
j                  j                  d            }d d d        | j                  |
j                  d       | j                  |d   d       |j                          | j                  |j                         j!                         d       |j                          | j                  |j                         j!                         d       |j                          | j                  |j                         j!                         d       |j                  dd}| j                  |      5  | j                  |	      }	|j                  |	|j                  
      }
t        j                  |
j                  j                  d            }d d d        | j                  |
j                  d       | j                  |d   d       |j                          | j                  |j                         j!                         d       |j                          | j                  |j                         j!                         d       |j                          | j                  |j                         j!                         d       |j                  dd}| j                  |      5  | j                  |	      }	|j                  |	|j                  
      }
t        j                  |
j                  j                  d            }d d d        | j                  |
j                  d       | j                  |d   d       |j                          | j                  |j                         j!                         d       |j                          | j                  |j                         j!                         d       |j                          | j                  |j                         j!                         d       |j                  d|j                  d}| j                  |      5  | j                  |	      }	|j                  |	|j                  
      }
t        j                  |
j                  j                  d            }d d d        | j                  |
j                  d       | j                  |d   d       |j                          | j                  |j                         j!                         d       |j                          | j                  |j                         j!                         d       |j                          | j                  |j                         j!                         d       |j                          | j                  |j                         j!                         d       y # 1 sw Y   
xY w# 1 sw Y   	xY w# 1 sw Y   xY w# 1 sw Y   5xY w# 1 sw Y   xY w# 1 sw Y   bxY w# 1 sw Y   xY w# 1 sw Y   xY w)NAlphar|   rk   BetaGammaDeltar   )r  positiontargetrB  )r  utf8r   statusry   r   r   )r  r  )r>   r2   r   r   r{   rl   rm   	move_pager  r  r   r  r   r   r   get_descendantsr   )r0   r<   rr   
page_adminalphabetagammadeltar   rs   rt   s              r1   test_move_nodez!AdminPageTreeTests.test_move_node  s	    NN,
E**
G%:DA6#=tDG%?FG%?F ''hh
 $$Z0 	?&&&6G!++GTWW+EH::h..55f=>D	?
 	--s3h-..0668!< ((gg
 $$Z0 	?&&&6G!++GUXX+FH::h..55f=>D	?
 	--s3h-..0668!<--/557; ((hh
 $$Z0 	?&&&6G!++GUXX+FH::h..55f=>D	?
 	--s3h-..0668!<--/557;..0668!< ''

 $$Z0 	?&&&6G!++GTWW+EH::h..55f=>D	?
 	--s3h-..0668!<--/557;..0668!< ''hh
 $$Z0 	?&&&6G!++GTWW+EH::h..55f=>D	?
 	--s3h-..0668!<--/557;..0668!< ((

 $$Z0 	?&&&6G!++GUXX+FH::h..55f=>D	?
 	--s3h-..0668!<--/557;..0668!< ((

 $$Z0 	?&&&6G!++GUXX+FH::h..55f=>D	?
 	--s3h-..0668!<--/557;..0668!< ((hh
 $$Z0 	?&&&6G!++GUXX+FH::h..55f=>D	?
 	--s3h-..0668!<--/557;..0668!<..0668!<S	? 	?0	? 	?4	? 	?6	? 	?8	? 	?6	? 	?6	? 	?8	? 	?sh   An$An1	An>:Ao6Ao'Ao%Ao2Ao?$n.1n;>ooo"%o/2o<?p	c                    | j                         \  }}| j                  }t               }t        d      }t        d      }| j	                  d|dz          | j                  |      5  | j                  |      }|j                  |      }| j                  || d       |D ]C  }	| j                  | d|	       }|j                  |      }| j                  |d| d|	 d       E i }
|D ]  }	t        d	d
|	      |
|	<    t        d      }|D ]S  }	| j                  | d|	       }|j                  |      }| j                  |d| d|
|	   j                   d|	 d       U 	 ddd       y# 1 sw Y   yxY w)ztests if the New Page button creates a page content object in the language specified
        by the language selectors. The creates pages in all languages and checks if the "+" button
        creates a child in the same languager   cms_pagecontent_addr  z?language=enz
?language=)r  zhref=""r  r|   cms_pagecontent_get_treez?parent_page=z
&language=N)r>   r6   r'   r(   r  rl   rm   changelist_viewr   r   get_treer  )r0   r<   rr   rJ  	languagesr   add_urlrs   rt   r   r   s              r1   test_create_page_languagez,AdminPageTreeTests.test_create_page_language  s   
 !NN,
E 88%'	89 56fg67$$Z0 	w&&s+G(88AHWI\*BC% W**3%z(0L*M,<<WE##Hwiz(ST.UVW D% W!,W6KX!VXW
   :;C% w**3%z(0L*M,55g>##Hwi}TRZ^M^M^L__ijrisst.uvw%	w 	w 	ws   &C<E,,E5N)rc   rd   re   r#  r,  rg   r4   r1   r  r    s    `=R!wr4   r  c                   "    e Zd Zed        Zd Zy)AdminInputSanitationTestsc                 0    t         j                  t           S r,   )r   r.   r   r/   s    r1   settings_admin_classz.AdminInputSanitationTests.settings_admin_class)  s    ~~l++r4   c                 <   | j                         \  }}| j                  |      5  | j                  | j                  j                  d   ddi      }| j                  j                  |      }| j                  |j                  d       ddd       y# 1 sw Y   yxY w)zQ
        Settings added to admin through session store should be escaped
        r   r\  z%<script>alert("hello world")</script>rB  s=   "&lt;script&gt;alert(&quot;hello world&quot;)&lt;/script&gt;"N)r>   rl   rm   r0  r  session_storer   r   rq   s        r1   test_admin_session_storez2AdminInputSanitationTests.test_admin_session_store-  s     !NN,
E$$Z0 		q&&))..q1 G ' G 00>>wGHX--/op		q 		q 		qs   A$BBN)rc   rd   re   rf   r0  r3  rg   r4   r1   r.  r.  (  s    , ,qr4   r.  )Jr  django.contribr   django.contrib.admin.sitesr   django.contrib.admin.utilsr   django.contrib.authr   django.contrib.auth.modelsr   django.contrib.sites.modelsr	   django.httpr
   r   r   django.test.utilsr   django.utils.encodingr   r   #djangocms_text_ckeditor.cms_pluginsr   djangocms_text_ckeditor.modelsr   r   r   cms.admin.formsr   cms.apir   r   r   cms.constantsr   
cms.modelsr   r   r   r   cms.models.pagemodelr   cms.models.permissionmodelsr   r   cms.models.placeholdermodelr   cms.test_utilsr    r   cms.test_utils.testcasesr!   r"   r#   cms.utils.compatr$   r%   cms.utils.confr&   cms.utils.i18nr'   cms.utils.urlutilsr(   r*   ri   r&  rj  ry  r  r  r  r  r.  rg   r4   r1   <module>rL     s       + 8 . 1 , M M / 6 : /  * @ @ 4 L L % L 3 , 
 4 * , ,+[ +\p4N p4fU Upb[ b(IIN IIXPn Pf={ =.1N 1hKw Kw\q qr4   