
    Bh[                         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mZmZ d dlmZ d dlmZmZ d d	lmZmZmZmZ d d
lmZ d dlmZ d dlmZ d dlm Z   G d de      Z! G d de      Z"y)    )deepcopy)get_user_model)
Permission)Site)create_pagecreate_page_content)PageContentExtensionPageExtensionextension_pool)ExtensionToolbar)PagePageContent)MultiTablePageContentExtensionMultiTablePageExtensionMyPageContentExtensionMyPageExtension)CMSTestCase)toolbar_pool)RemovedInDjangoCMS51Warning)admin_reversec                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)ExtensionsTestCasec                    t        t        j                        }ddlm} | j                         }| j                  |t        j                  |       | j                  t        t        j                        |       | j                  t        t        j                        |       | j                         }t        j                  |       | j                  t        t        j                        |dz          t        j                  |       | j                  t        t        j                        |dz          | j                         }t        j                  |       | j                  t        t        j                        |dz          t        j                  |       | j                  t        t        j                        |dz          t        j                  |       | j                  t        t        j                        |       t        j                  |       | j                  t        t        j                        |       t        j                  |       t        j                  |       y )Nr   )SubClassNeededError   )lenr   page_extensionscms.exceptionsr   get_none_extension_classassertRaisesregisterassertEqualpage_content_extensionsget_page_extension_class get_page_content_extension_class
unregister)selfinitial_extension_countr   none_extensionpage_extensionpage_content_extensions         I/home/dcms/DCMS/lib/python3.12/site-packages/cms/tests/test_extensions.pytest_register_extensionz*ExtensionsTestCase.test_register_extension   s   "%n&D&D"E6668-~/F/FW^;;<>UV^CCDF]^ 668 	/^;;<>UXY>YZ 	/^;;<>UXY>YZ "&!F!F!H 	 67^CCDF]`aFab 	 67^CCDF]`aFab 	!!.1^;;<>UV!!"89^CCDF]^ 	!!.1!!"89    c                 6    ddl m  G fddt              }|S )Nr   modelsc                   J    e Zd ZW  j                  dd      Z G d d      Zy)FExtensionsTestCase.get_page_extension_class.<locals>.TestPageExtensionContent2   
max_lengthc                       e Zd ZdZy)KExtensionsTestCase.get_page_extension_class.<locals>.TestPageExtension.MetaTN__name__
__module____qualname__abstract r.   r,   Metar9   H       r.   r@   Nr;   r<   r=   	CharFieldcontentr@   r0   s   r,   TestPageExtensionr3   E   "    &&yR&@G   r.   rE   )	django.dbr1   r
   )r'   rE   r1   s     @r,   r$   z+ExtensionsTestCase.get_page_extension_classB   s    $	  	  ! r.   c                 6    ddl m  G fddt              }|S )Nr   r0   c                   J    e Zd ZW  j                  dd      Z G d d      Zy)UExtensionsTestCase.get_page_content_extension_class.<locals>.TestPageContentExtensionr4   r5   r6   c                       e Zd ZdZy)ZExtensionsTestCase.get_page_content_extension_class.<locals>.TestPageContentExtension.MetaTNr:   r?   r.   r,   r@   rL   S   rA   r.   r@   NrB   r0   s   r,   TestPageContentExtensionrJ   P   rF   r.   rM   )rG   r1   r	   )r'   rM   r1   s     @r,   r%   z3ExtensionsTestCase.get_page_content_extension_classM   s    $	 '; 	  ('r.   c                      G d d      }|S )Nc                       e Zd Zy)FExtensionsTestCase.get_none_extension_class.<locals>.TestNoneExtensionN)r;   r<   r=   r?   r.   r,   TestNoneExtensionrP   Y   s    r.   rQ   r?   )r'   rQ   s     r,   r   z+ExtensionsTestCase.get_none_extension_classX   s    	 	 ! r.   c                 ^   t        ddd      }t        ddd|      }t        ddd|      }t        j                  j                  |j                        }t        |d	      }|j                          ||_        |j                         }t        |d
      }|j                          ||_
        t        |d	      }|j                          ||_        |j                         }t        |d      }	|	j                          |	|_
        | j                  t        t        j                               d       | j                  t        t        j                               d       |j!                  d d| j#                               }
| j                  t        t        j                               d       | j                  t        t        j                               d       ||g}||	g}t%        |
gt'        |
j)                               z         D ]6  \  }}| j                  t        j                  |      d   j*                  ||   j*                         | j                  t        j                  |j,                  j                  d            d   j.                  ||   j.                         | j1                  t        j                  |      d   j                  ||   j                         | j1                  t        j                  |j,                  j                  d            d   j                  ||   j                         9 |j3                          | j                  t        t        j                               d       | j                  t        t        j                               d       y )NRootnav_playground.htmlenzTest Page ExtensionparentzTest subpage Extensionpkpage extension 1extended_objectextraztitle extension 1r\   extra_titlepage extension 2title extension 2   
last-childtarget_pagepositionuser   r   language)r   r   objectsgetrY   r   savemypageextensionget_content_objr   myPageContentExtensionr"   r   r   get_page_extensionsget_page_content_extensionscopy_with_descendantsget_superuser	enumeratelistget_descendant_pagesr]   pagecontent_setr_   assertNotEqualdelete)r'   rootpagesubpager*   page_contentr+   subpage_extensionsubpage_contentsubpage_content_extensioncopied_pageold_page_extensionsold_title_extensionindexnew_pages                  r,   test_copy_extensionsz'ExtensionsTestCase.test_copy_extensions^   s.   6#8$?02GVZ[68Mt\`a||477+(EWX-++-!7bu!v##%&<#+GK]^ "3!113$:++%
! 	"&&()B& 	^??ABAF^GGIJAN00TL_c_q_q_s0t 	^??ABAF^GGIJAN  ./@A57PQ(+k>^>^>`9a)ab 	OE8228<Q?EE#E*00 ::,,00$0? [#E*66	 228<Q?BB#E*-- ::8;S;S;W;Wae;W;fghijmm#E*--!	, 	^??ABAF^GGIJANr.   c                    t        ddd      }t        ddd|      }t        ddd|      }t        j                  j                  |j                        }t        |dd	
      }|j                          ||_        |j                         }t        |dd      }|j                          ||_
        t        |dd
      }|j                          ||_        |j                         }t        |dd      }	|	j                          |	|_
        | j                  t        t        j                               d       | j                  t        t        j                               d       |j!                  d d| j#                               }
| j                  t        t        j                               d       | j                  t        t        j                               d       ||g}||	g}t%        |
gt'        |
j)                               z         D ]  \  }}t        j                  |      d   }t        j                  |j*                  j                  d            d   }| j                  |j,                  ||   j,                         | j                  |j.                  ||   j.                         | j                  |j0                  ||   j0                         | j                  |j2                  ||   j2                         | j5                  t        j                  |      d   j                  ||   j                         | j5                  t        j                  |j*                  j                  d            d   j                  ||   j                          |j7                          | j                  t        t        j                               d       | j                  t        t        j                               d       y )NrS   rT   rU   zTest Multi-Table Page ExtensionrV   z"Test Multi-Table subpage ExtensionrX   rZ   zmulti-table page extension 1)r\   extension_parent_fieldmultitable_extrazcontent extension 1zmulti-table content extension 1)r\   extension_content_parent_fieldmultitable_extra_contentr`   zmulti-table page extension 2ra   zmulti-table title extension 2rb   rc   rd   rh   r   ri   )r   r   rk   rl   rY   r   rm   multitablepageextensionro   r   multitablepagecontentextensionr"   r   r   rq   rr   rs   rt   ru   rv   rw   rx   r   r   r   r   ry   rz   )r'   r{   r|   r}   r*   titletitle_extensionr   subtitlesubtitle_extensionr   r   r   r   r   copied_page_extensioncopied_title_extensions                    r,   test_copy_multitable_extensionsz2ExtensionsTestCase.test_copy_multitable_extensions   s   6#8$?<>SUYbfgBDY[_hlm||477+0 #5;

 	'5$$$&8!+@%F

 	.=+3##5;

 	 *;'**,;$+>%D

 	!1C. 	^??ABAF^GGIJAN00TL_c_q_q_s0t 	^??ABAF^GGIJAN  ./@A.0BC(+k>^>^>`9a)ab 	OE8$2$F$Fx$PQR$S!%3%O%O((,,d,;&&" %<<#E*AA %66#E*;; &EE#E*II &??#E*CC
 228<Q?BB#E*-- ::8;S;S;W;Wae;W;fghijmm#E*--5	@ 	^??ABAF^GGIJANr.   N)	r;   r<   r=   r-   r$   r%   r   r   r   r?   r.   r,   r   r      s%    (:T	!	(!=O~UOr.   r   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	ExtensionAdminTestCasec                    t               }| j                         | _        | j                         | _        t               j
                  dk(  r#|j                  j                  ddd      | _        n"|j                  j                  ddd      | _        d| j                  _	        d| j                  _
        | j                  j                          t        j                  j                  g d      D cg c]'  }| j                  j                  j                  |      ) c} t         j                  j#                  d      | _        t'        d	d
d| j$                  | j                        | _        | j(                  j+                  d      | _        t/        dd| j(                         t0        j                  j3                  | j(                  d      | _        t6        j                  j3                  | j(                  j+                         d      | _        t'        dd
d| j$                  | j                        | _        | j:                  j+                         | _        y c c}w )Nemailno_page_permissionztest2@test.comT)change_mypageextensionchange_myPageContentExtensionadd_mypageextensionadd_myPageContentExtensiondelete_mypageextensiondelete_myPageContentExtension)codename__inr   rX   zMy Extension PagerT   rU   )site
created_bydezde titlezpage extension textr[   ztitle extension textr^   zA Page)r   rt   admin#get_staff_user_with_std_permissions
normal_guyUSERNAME_FIELDrk   create_userno_page_permission_useris_staff	is_activerm   r   filteruser_permissionsaddr   rl   r   r   r|   ro   
page_titler   r   creater*   r   r   page_without_extensionpage_title_without_extension)r'   Userps      r,   setUpzExtensionAdminTestCase.setUp   s   '')
BBD**g5+/<<+C+C$&68H,D( ,0<<+C+C$&68L,D( 15$$-15$$.$$))+GQGYGYG`G` Ha H
 	!	%	%	6	6	:	:1	= 	 LL$$$*	!6tzz3	 ))33D9D*dii8-55<< II' = )  6==DD II557.  E  0 '2+Ttzz'3# -1,G,G,W,W,Y)/	s   1,Ic           	      b   | j                  | j                        5  | j                  | j                  d      }dddddd| j                  j                  d}| j                  t        j                  j                         j                         d       | j                  t        j                  j                         j                         d       | j                  t        j                  j                         j                         d       | j                  j                  | j                  t        d|j                        |      }| j!                  || j#                  d             | j                  t        j                  j                         j                         d	       | j                  t        j                  j                         j                         d       | j                  t        j                  j                         j                         d       d d d        y # 1 sw Y   y xY w)
NrU   type1r   rT   )r   slug_savetemplater   rj   sourcerb   	duplicate)data   )login_user_contextr   get_pagecontent_objr|   rY   r"   r   rk   allcountr   r   clientpostget_admin_urlr   assertRedirectsget_pages_admin_list_uri)r'   rD   	page_dataresponses       r,   test_duplicate_extensionsz0ExtensionAdminTestCase.test_duplicate_extensions"  s   $$TZZ0 	N..tyy$?G !'AK`ttyy||I T\\--/557;_4488:@@BAF3;;??AGGI1M{{''"";WZZH ( H
   4+H+H+NOT\\--/557;_4488:@@BAF3;;??AGGI1M%	N 	N 	Ns   H H%%H.c                    | j                  | j                        5  | j                  j                  t	        d      d| j
                  j                  z  z         }| j                  |j                  d       | j                  t        j                  j                  | j
                        j                                ddi}| j                  j                  t	        d      d| j
                  j                  z  z   |d      }t        j                  j                  | j
                        }| j                  j                  t	        d	|j                  f
      ddid      }| j                  t        j                  j                  | j
                        j                                | j                  j                  t	        d      d| j                  j                  z  z         }| j!                  |t	        d| j"                  j                  f
             ddi}| j                  j                  t	        d| j"                  j                  f
      |d       | j%                  t        j                  j                  d| j"                  j                        j                                d d d        | j                  | j&                        5  ddi}| j                  j                  t	        d| j"                  j                  f
      |d      }| j                  |j                  d       | j                  j                  t	        d	| j"                  j                  f
      ddid      }| j                  |j                  d       | j%                  t        j                  j                  | j                        j                                d d d        y # 1 sw Y   0xY w# 1 sw Y   y xY w)N extensionapp_mypageextension_add?extended_object=%s   r\   r]   zmy extraTfollow#extensionapp_mypageextension_deleteargsr   yes#extensionapp_mypageextension_changemy extra text)r]   rY   try to change extra text  )r   r   r   rl   r   r   rY   r"   status_codeassertFalser   rk   r   existsr   r|   r   r*   
assertTruer   )r'   r   	post_datacreated_page_extensions       r,   test_admin_page_extensionz0ExtensionAdminTestCase.test_admin_page_extension7  s   $$TZZ0 ,	w{{6)D,G,G,J,JJKH
 X1137_44;;DLgLg;hooqrI {{''6)D,G,G,J,JJK $	 ( H &5%<%<%@%@QUQlQl%@%m" {{''CKaKdKdJfg ( H _44;;DLgLg;hooqr {{@ADY\`\e\e\h\hDhhH   -(MUYUhUhUkUkTmn I KKC4K^K^KaKaJcd$   OOO33::UYUhUhUkUk:lssuvY,	w\ $$T%A%AB 	` 3I {{''C4K^K^KaKaJcd$ ( H X1137 {{''C4K^K^KaKaJcd ( H X1137OOO33::499:U\\^_#	` 	`],	w ,	w\	` 	`   JODO)O&)O2c                    t        t        j                        } G d dt              }t        j                  |       | j                  | j                        5  | j                  j                  | j                  j                          d      }| j                  d|j                         d d d        |t        _        y # 1 sw Y   |t        _        y xY w)Nc                       e Zd ZeZd Zy)KExtensionAdminTestCase.test_toolbar_page_extension.<locals>.SampleExtensionc                     | j                         }|rCd}| j                         \  }}|r+|j                  d|| j                  j                   |       y y y Nr   TestItem)urldisabledrf   )_setup_extension_toolbarget_page_extension_adminadd_modal_itemtoolbaredit_mode_active)r'   current_page_menurf   r*   r   s        r,   populatezTExtensionAdminTestCase.test_toolbar_page_extension.<locals>.SampleExtension.populate  se    $($A$A$C!$ H*.*G*G*I'NC)88& #)-)F)F%F%-	 9   %r.   N)r;   r<   r=   r   modelr   r?   r.   r,   SampleExtensionr   |  s    #Er.   r   ?editr   r   r   toolbarsr   r!   r   r   r   rl   r|   get_absolute_urlassertInrendered_contentr'   old_toolbarsr   r   s       r,   test_toolbar_page_extensionz2ExtensionAdminTestCase.test_toolbar_page_extensiony  s     5 56	. 	 	o.$$TZZ0 	A{{$))*D*D*F)Gu'MNHMM*h&?&?@	A !-	A !-   AC  Cc                    t        t        j                        } G d dt              }t        j                  |       | j                  | j                        5  | j                  j                  | j                  j                          d      }| j                  d|j                         d d d        |t        _        y # 1 sw Y   |t        _        y xY w)Nc                       e Zd ZeZd Zy)SExtensionAdminTestCase.test_toolbar_page_content_extension.<locals>.SampleExtensionc                     | j                         }|r@d}| j                         \  }}|j                  d|| j                  j                   |       y y r   )r    get_page_content_extension_adminr   r   r   )r'   r   rf   pagecontent_extensionr   s        r,   r   z\ExtensionAdminTestCase.test_toolbar_page_content_extension.<locals>.SampleExtension.populate  s^    $($A$A$C!$ H151V1V1X.)3%44"%)\\%B%B!B!)	 5  %r.   Nr;   r<   r=   r   r   r   r?   r.   r,   r   r     s    *E
r.   r   r   r   r   r   s       r,   #test_toolbar_page_content_extensionz:ExtensionAdminTestCase.test_toolbar_page_content_extension  s     5 56	. 	 	o.$$TZZ0 	A{{$))*D*D*F)Gu'MNHMM*h&?&?@	A !-	A !-r   c                 n    g t        t        j                        } G fddt              }t        j                  |       d} j                   j                        5   j                  t        | fd       d d d         j                  t              d       |t        _        y # 1 sw Y   0xY w)Nc                       e Zd ZeZ fdZy)WExtensionAdminTestCase.test_deprecated_title_extension.<locals>.SampleExtensionToolbar2c                 &    | j                         y N)get_title_extension_admin)r'   urlss    r,   r   z`ExtensionAdminTestCase.test_deprecated_title_extension.<locals>.SampleExtensionToolbar2.populate  s    557r.   Nr  )r  s   r,   SampleExtensionToolbar2r    s    *E8r.   r  z^get_title_extension_admin has been deprecated and replaced by get_page_content_extension_adminc                  j     j                   j                   j                  j                               S r
  )r   rl   r|   r   )r'   s   r,   <lambda>zHExtensionAdminTestCase.test_deprecated_title_extension.<locals>.<lambda>  s!    		(B(B(DE r.   rb   )r   r   r   r   r!   r   r   failUnlessWarnsr   r"   r   )r'   r   r  messager  s   `   @r,   test_deprecated_title_extensionz6ExtensionAdminTestCase.test_deprecated_title_extension  s     5 56	8&6 	8 	56r$$TZZ0 	  +E	 	TA& ,	 	s   !B++B4c                    | j                  | j                        5  | j                  j                  t	        d      d| j
                  j                  z  z         }| j                  |j                  d       | j                  t        j                  j                  | j
                        j                                ddi}| j                  j                  t	        d      d| j
                  j                  z  z   |d       t        j                  j                  | j
                        }| j                  j                  t	        d	|j                  f
      ddid       | j                  t        j                  j                  | j
                        j                                | j                  j                  t	        d      d| j                  j                  z  z         }| j!                  |t	        d| j"                  j                  f
             ddi}| j                  j                  t	        d| j"                  j                  f
      |d       | j%                  t        j                  j                  d| j"                  j                        j                                d d d        | j                  | j&                        5  ddi}| j                  j                  t	        d| j"                  j                  f
      |d      }| j                  |j                  d       | j                  j                  t	        d	| j"                  j                  f
      ddid      }| j                  |j                  d       | j%                  t        j                  j                  | j                        j                                d d d        y # 1 sw Y   0xY w# 1 sw Y   y xY w)N'extensionapp_mypagecontentextension_addr   r   r   r_   zmy extra titleTr   *extensionapp_mypagecontentextension_deleter   r   r   *extensionapp_mypagecontentextension_changer   )r_   rY   r   r   )r   r   r   rl   r   r   rY   r"   r   r   r   rk   r   r   r   r   r   r   r   r   )r'   r   r   created_title_extensions       r,   test_admin_title_extensionz1ExtensionAdminTestCase.test_admin_title_extension  s   $$TZZ0 4	{{=)D,M,M,P,PPQH
 X1137&..55dFgFg5hooq /I KK=)D,M,M,P,PPQ $	   '=&D&D&H&H $ A A 'I '#
 KKJRiRlRlQno   &..55dFgFg5hooq
 {{GHK`cgcrcrcucuKuuH   -(T\`\p\p\s\s[uv I KKJRVRfRfRiRiQkl$   OO&..55/VZVjVjVmVm5nuuwe4	l $$T%A%AB 	m 9I {{''JRVRfRfRiRiQkl$ ( H X1137 {{''JRVRfRfRiRiQkl ( H X1137OO2::AARVRaRaAbiikl#	m 	mm4	 4	l	m 	mr   N)
r;   r<   r=   r   r   r   r   r  r  r  r?   r.   r,   r   r      s-    )ZVN*@`D-0-.-0Hmr.   r   N)#copyr   django.contrib.authr   django.contrib.auth.modelsr   django.contrib.sites.modelsr   cms.apir   r   cms.extensionsr	   r
   r   cms.extensions.toolbarr   
cms.modelsr   r   *cms.test_utils.project.extensionapp.modelsr   r   r   r   cms.test_utils.testcasesr   cms.toolbar_poolr   cms.utils.compat.warningsr   cms.utils.urlutilsr   r   r   r?   r.   r,   <module>r&     sY     . 1 , 4 N N 3 (  1 ) A ,[O [O|Sm[ Smr.   