
    Bh:                        d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
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mZ d dlmZ d dlmZ d dl m!Z! d dl"m#Z#m$Z$ d dl%m&Z& d Z' G d de      Z( G d de      Z)y)    N)get_user_model)
Permission)ContentType)
FieldError)TemplateDoesNotExistTemplateSyntaxError)
TextPlugin)Text)_verify_plugin_type
add_pluginassign_user_to_pagecreate_page)apphook_pool)TEMPLATE_INHERITANCE_MAGIC)PagePlaceholder)CMSPluginBase)CMSTestCase)TestMenu)
APP_MODULEAPP_NAME)	menu_poolc                     t         j                  j                  dd      }t        j                  j	                  d|z  |      d   }| j
                  j                  |       y )Ncmspagez%s_page)codenamecontent_typer   )r   objectsget_by_natural_keyr   get_or_createuser_permissionsadd)userr   r   perms       B/home/dcms/DCMS/lib/python3.12/site-packages/cms/tests/test_api.py_grant_page_permissionr&      s]    &&99%HL++Y5I9E , GGHJDd#    c                   ~    e 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d Zd Zd Zd Zy)PythonAPITestsc                     ddddS )NTestnav_playground.htmlen)titletemplatelanguage selfs    r%   "_get_default_create_page_argumentsz1PythonAPITests._get_default_create_page_arguments#   s    -
 	
r'   c                 \     | j                   t        t        fddi| j                          y )Napphook   )assertRaises	TypeErrorr   r4   r2   s    r%   test_invalid_apphook_typez(PythonAPITests.test_invalid_apphook_type*   s1    )[ 	G! 	G CCE	Gr'   c                     | j                         }d|d<   | j                  dg      5   | j                  t        t        fi | t
        |d<   d d d        t	        di | y # 1 sw Y   xY w)Nnot_valid.htmr/   )r<   notvalidCMS_TEMPLATESr1   )r4   settingsr8   r   r   r   )r3   kwargss     r%   test_invalid_templatez$PythonAPITests.test_invalid_template.   sp    88:,z]]*G)H]I 	<D2KJ6J!;F:	< 	f	< 	<s   &A##A,c                    t         t        j                  v rt        j                  t         = t          dt         f}| j	                  |      5  t        j                          t        j                  t              }t        dd|i| j                         }| j                  |j                  d      t               d d d        y # 1 sw Y   y xY w)N.)CMS_APPHOOKSr6   r-   r1   )r   sysmodulesr   r@   r   clearget_apphookr   r4   assertEqualget_application_urls)r3   apphooksr6   r   s       r%   test_apphook_by_classz$PythonAPITests.test_apphook_by_class6   s    $J'l!H:&
 ]]]1 	H "..x8G Lw L!%!H!H!JLDT66t<hG	H 	H 	Hs   A.CCc                    t         j                  st        j                          t         j                  | _        dt
        it         _         | j                  t        t        fddi| j                          | j                  t         _        y )Nr   navigation_extendersr7   )
r   
discovereddiscover_menusmenusold_menur   r8   AssertionErrorr   r4   r2   s    r%   test_nav_extenders_invalid_typez.PythonAPITests.test_nav_extenders_invalid_typeD   sh    ##$$&!%x0	.+ 	GA 	G CCE	G--	r'   c                    t         j                  st        j                          t         j                  | _        i t         _         | j
                  t        t        fdt        i| j                          | j                  t         _        y )NrO   )
r   rP   rQ   rR   rS   r8   rT   r   r   r4   r2   s    r%   test_nav_extenders_invalid_menuz.PythonAPITests.test_nav_extenders_invalid_menuM   sf    ##$$&!	.+ 	G/7	G CCE	G --	r'   c                 0   t         j                  st        j                          t         j                  | _        dt
        it         _        t        dddi| j                         }| j                  |j                  d       | j                  t         _        y )Nr   rO   r1   )
r   rP   rQ   rR   rS   r   r   r4   rJ   rO   )r3   r   s     r%   test_nav_extenders_validz'PythonAPITests.test_nav_extenders_validW   st    ##$$&!%x0	 H
 H!DDFH22J?--	r'   c                 :    | j                  t        t        d       y )Nr7   r8   r9   r   r2   s    r%   $test_verify_plugin_type_invalid_typez3PythonAPITests.test_verify_plugin_type_invalid_typea   s    )%8!<r'   c                 p    t        d      \  }}| j                  |t               | j                  |d       y Nr	   )r   rJ   r
   r3   plugin_modelplugin_types      r%   test_verify_plugin_type_stringz-PythonAPITests.test_verify_plugin_type_stringd   s1    $7$E!kt,l3r'   c                 :    | j                  t        t        d       y )NInvalidPluginr[   r2   s    r%   &test_verify_plugin_type_string_invalidz5PythonAPITests.test_verify_plugin_type_string_invalidi   s    )%8/Jr'   c                 x    t        t              \  }}| j                  |t               | j                  |d       y r^   )r   r	   rJ   r
   r_   s      r%   $test_verify_plugin_type_plugin_classz3PythonAPITests.test_verify_plugin_type_plugin_classl   s1    $7
$C!kt,l3r'   c                 X     G d dt               }| j                  t        t        |       y )Nc                       e Zd ZeZy)RPythonAPITests.test_verify_plugin_type_invalid_plugin_class.<locals>.InvalidPluginN)__name__
__module____qualname__r
   modelr1   r'   r%   rd   rj   r   s    Er'   rd   )r   r8   rT   r   )r3   rd   s     r%   ,test_verify_plugin_type_invalid_plugin_classz;PythonAPITests.test_verify_plugin_type_invalid_plugin_classq   s#    	M 	 	.*=}Mr'   c                     t        di | j                         }t               j                  j	                  ddd      }d|_        | j                  |j                  |             y )Nr#   user@django-cms.orgusernameemailpasswordTr1   )r   r4   r   r   create_useris_staffassertFalsehas_change_permissionr3   r   r#   s      r%    test_assign_user_to_page_nothingz/PythonAPITests.test_assign_user_to_page_nothingw   s_    GTDDFG''33VK`=C 4 E33D9:r'   c                    t        di | j                         }t               j                  j	                  ddd      }d|_        |j                          t        ||d       | j                  |j                  |             | j                  |j                  |             t        |d       t        j                  j                  |j                        }t               j                  j                  |j                        }| j                  |j                  |             | j                  |j                  |             y )	Nr#   rq   rr   T)
can_changechangepkr1   r   r4   r   r   rv   rw   saver   rx   ry   has_add_permissionr&   r   getr   
assertTruerz   s      r%   test_assign_user_to_page_singlez.PythonAPITests.test_assign_user_to_page_single~   s   GTDDFG''33VK`=C 4 E		D$4833D9:0067tX.||477+''++tww+7224890067r'   c                    t        d	i | j                         }t               j                  j	                  ddd      }d|_        |j                          t        ||d       | j                  |j                  |             | j                  |j                  |             t        |d       t        |d       t        j                  j                  |j                        }t               j                  j                  |j                        }| j                  |j                  |             | j                  |j                  |             y )
Nr#   rq   rr   T)	grant_allr~   r"   r   r1   r   rz   s      r%   test_assign_user_to_page_allz+PythonAPITests.test_assign_user_to_page_all   s
   GTDDFG''33VK`=C 4 E		D$$733D9:0067tX.tU+||477+''++tww+722489//56r'   c                    | j                  t        j                  j                         j	                         d       t        ddd      }| j                  |j                         t        di | j                         }| j                  |j                         | j                  |j                         j                  dd      j                                y )	Nr   rootr,   r-   testTpathmanagedr1   )rJ   r   r   allcountr   rx   is_homer4   r   get_urlsfilterexists)r3   homer   s      r%   test_page_overwrite_url_defaultz.PythonAPITests.test_page_overwrite_url_default   s    ))+113Q76#8$?&GTDDFG&..FD.IPPRSr'   c                     | j                         }d|d<   t        di |}| j                  |j                         j	                  dd      j                                y )Nz	test/homeoverwrite_urlFr   r1   )r4   r   r   r   r   r   )r3   
page_attrsr   s      r%   "test_create_page_can_overwrite_urlz1PythonAPITests.test_create_page_can_overwrite_url   sR    <<>
&1
?#(Z(..K.OVVXYr'   c                    | j                         }t        |d<   | j                  t        j                  j                  t              j                                | j                  dg      5   | j                  t        t        fi | | j                  t        j                  j                  t              j                                d d d        y # 1 sw Y   y xY w)Nr/   )pagecontent_set__template)zcol_invalid.htmlr=   r>   )r4   r   rx   r   r   r   r   r@   r8   r   r   )r3   r   s     r%   test_create_page_atomicz&PythonAPITests.test_create_page_atomic   s     <<>

 "<
:,,Ga,biikl]]*J)K]L 	qD1;M*M T\\00Ke0fmmop		q 	q 	qs   .ACCc                     t        dddd       | j                  t        t         dddd       | j                  t        j
                  j                         d       y )Nr   r,   r-   foo)
reverse_id   )r   r8   r   r   r   r   r   r2   s    r%    test_create_reverse_id_collisionz/PythonAPITests.test_create_reverse_id_collision   sJ    F14EJ*k5:OQUbgh**,a0r'   N)rk   rl   rm   r4   r:   rB   rM   rU   rW   rY   r\   rb   re   rg   ro   r{   r   r   r   r   r   r   r1   r'   r%   r)   r)   "   sh    
GH(((=4
K4
N;87 TZq*1r'   r)   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	PythonAPIPluginTestsc                 N    t         j                  j                  d      | _        y )Nmain)slot)r   r   createplaceholderr2   s    r%   setUpzPythonAPIPluginTests.setUp   s    &..5565Br'   c                     t        | j                  dd      }| j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       y )NSolarSystemPluginr-   r7   )r   r   rJ   positionr0   ra   )r3   root_plugin_1s     r%   test_add_root_pluginz)PythonAPIPluginTests.test_add_root_plugin   sZ    "4#3#35H$O//3//6224GHr'   c                 b   t        | j                  dd      }t        | j                  ddd      }t        | j                  ddd      }| j                  j                  d      j                  dd      }|j                  df|j                  d	f|j                  d
fg}| j                  ||       y)G
        User can add a new plugin to be in the first position
        r   r-   
last-childr   first-childr   r   r7   r      Nr   r   get_pluginsvalues_listr   assertSequenceEqual)r3   root_plugin_2root_plugin_3r   new_treeexpecteds         r%   test_add_root_plugin_firstz/PythonAPIPluginTests.test_add_root_plugin_first   s     #4#3#35H$O"4#3#35H$Yef"4#3#35H$Yfg##//5AA$
S"%%q)M,<,<a+@=CSCSUVBWX  84r'   c                 f   t        | j                  dd      }t        | j                  ddd      }t        | j                  ddd      }t        | j                  ddd      }t        | j                  ddd|      }t        | j                  ddd|j                               }| j                  j                  d      j	                  dd	      }|j
                  d
f|j
                  df|j
                  df|j
                  df|j
                  df|j
                  dfg}| j                  ||       y )Nr   r-   r   r   leftr   targetrightr   r   r7   r   r            r   r   reloadr   r   r   r   )	r3   r   r   root_plugin_4root_plugin_6r   root_plugin_5r   r   s	            r%   test_add_root_plugin_middlez0PythonAPIPluginTests.test_add_root_plugin_middle   s2   "4#3#35H$O"4#3#35H$Yef"4#3#35H$Yef"4#3#35H$Yef"4#3#35H$Y_huv"14'R_RfRfRh
 ##//5AA$
Sq!q!q!q!q!q!
 	  84r'   c                 X   t        | j                  dd      }t        | j                  dd|      }| j                  |j                  d       | j                  |j                  |j
                         | j                  |j                  d       | j                  |j                  d       y )Nr   r-   )r   r   )r   r   rJ   r   	parent_idr   r0   ra   )r3   r   child_plugin_1s      r%   test_add_child_pluginz*PythonAPIPluginTests.test_add_child_plugin   s    "4#3#35H$O#D$4$46I4Xef00!411=3C3CD00$7335HIr'   c                    t        | j                  dd      }t        | j                  ddd|      }t        | j                  ddd|      }t        | j                  ddd|      }t        | j                  dd      }| j                  j                  d      j                  dd      }|j                  df|j                  d	f|j                  d
f|j                  df|j                  dfg}| j                  ||       y)r   r   r-   r   r   r   r   r   r7   r   r   r   r   Nr   )r3   r   child_plugin_2child_plugin_3r   r   r   r   s           r%   test_add_child_plugin_firstz0PythonAPIPluginTests.test_add_child_plugin_first   s    #4#3#35H$O#14,Wd
 $14,Wd
 $14-Xe
 #4#3#35H$O##//5AA$
Sq!"""q!
 	  84r'   c           
         t        | j                  dd      }t        | j                  ddd|      }t        | j                  ddd|      }t        | j                  ddd|      }t        | j                  ddd|      }t        | j                  ddd|      }t        | j                  ddd|j                               }t        | j                  ddd      }| j                  j                  d      j	                  dd	      }	|j
                  d
f|j
                  df|j
                  df|j
                  df|j
                  df|j
                  df|j
                  df|j
                  dfg}
| j                  |	|
       t        | j                  ddd|      }| j                  j                  d      j	                  dd	      }	|j
                  d
f|j
                  df|j
                  df|j
                  df|j
                  df|j
                  df|j
                  df|j
                  df|j
                  dfg	}
| j                  |	|
       y )Nr   r-   r   r   r   r   r   r   r   r7   r   r   r   r   r         	   r   )r3   r   r   r   child_plugin_4child_plugin_6r   child_plugin_5r   r   r   r   s               r%   test_add_child_plugin_middlez1PythonAPIPluginTests.test_add_child_plugin_middle  sy   "4#3#35H$O#14,Wd
 $14,Wd
 $14,Wd
 $14,Wd
 $14&Q_
 $14'R`RgRgRi
 #4#3#35H$Yef##//5AA$
Sq!""""""q!	
 	  84 #14'R_
 ##//5AA$
Sq!""""""q!q!

 	  84r'   N)
rk   rl   rm   r   r   r   r   r   r   r   r1   r'   r%   r   r      s(    CI	55(J5235r'   r   )*rF   django.contrib.authr   django.contrib.auth.modelsr   "django.contrib.contenttypes.modelsr   django.core.exceptionsr   django.templater   r   #djangocms_text_ckeditor.cms_pluginsr	   djangocms_text_ckeditor.modelsr
   cms.apir   r   r   r   cms.apphook_poolr   cms.constantsr   
cms.modelsr   r   cms.plugin_baser   cms.test_utils.testcasesr   !cms.test_utils.util.menu_extenderr   cms.tests.test_apphooksr   r   menus.menu_poolr   r&   r)   r   r1   r'   r%   <module>r      sc    
 . 1 : - E : /  * 4 ( ) 0 6 8 %$a1[ a1H~5; ~5r'   