
    Bhe                         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mZ d dlmZ d dlmZmZ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  eee      Z G d de      Z G d de      Zy)    )ADDITIONCHANGEDELETIONLogEntry)model_to_dict)gettext_lazy)
add_plugincreate_pagecreate_page_content)CreateCMSPageForm)PagePlaceholderUserSettings)URL_CMS_PAGE_MOVECMSTestCase)get_current_site)force_language)WizardStep2BaseFormstep2_form_factory)	mixin_clsentry_form_classc                   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)LogPageOperationsTestsc                 ~    | j                  ddd       | j                         | _        | j                  ddd       y )Nuser_oneTis_staffadd_default_permissions
user_three)_create_userget_superuser_admin_userselfs    J/home/dcms/DCMS/lib/python3.12/site-packages/cms/tests/test_log_entries.pysetUpzLogPageOperationsTests.setUp   s?     	*tTR--/,tT    c                 "   | j                  dt        j                  j                                t        j                  j	                         d   }| j                  d|j
                         | j                  t        |j                         | j                  t        |j                        |j                         | j                  t        |      |j                         | j                  | j                  j                  |j                         y )N   r   zAdded Page Translation)assertEqualr   objectscountallchange_messager   action_flagstrpk	object_idobject_reprr"   user_id)r$   page	log_entrys      r%   _assert_log_created_on_page_addz6LogPageOperationsTests._assert_log_created_on_page_add   s    H,,2245$$((*1-	193K3KL9#8#89TWWy':':;TI$9$9:)),,i.?.?@r'   c                 z   | j                         }| j                  | j                        5  | j                  j	                  | j                  d      |      }| j                  |j                  d       t        j                  j                  |d         }| j                  |       ddd       y# 1 sw Y   yxY w)zU
        When a page is created using the page admin a log entry is created.
        en.  slug)
urls__slugN)get_new_page_datalogin_user_contextr"   clientpostget_page_add_urir*   status_coder   r+   getr7   )r$   	page_dataresponsepage_ones       r%   test_log_for_create_admin_pagez5LogPageOperationsTests.test_log_for_create_admin_page-   s     **,	$$T%5%56 	;{{''(=(=d(CYOHX1137||''9V3D'EH00:	; 	; 	;s   A<B11B:c                 z    t        ddd       | j                  dt        j                  j	                                y)z
        When a page is created via the create page api a log entry is NOT created.
        It may help determine why other tests might fail if the api started creating a log for page creation!!
        homenav_playground.htmlr9   r   N)r
   r*   r   r+   r,   r#   s    r%   test_log_for_create_api_pagez3LogPageOperationsTests.test_log_for_create_api_page:   s0     	F148H,,2245r'   c                 D   | j                  | j                        5  | j                         }ddd       t               }dddd}t	        |d|d      }| j                  |j                                |j                         }| j                  |       y# 1 sw Y   jxY w)z[
        When a page is created via the create page wizard a log entry is created.
        Nzpage 1page_1)titler;   	page_typer9   )datawizard_pagewizard_sitewizard_languagewizard_request)	r>   r"   get_requestr   r   
assertTrueis_validsaver7   )r$   requestsiterP   formr5   s         r%   test_log_for_create_wizard_pagez6LogPageOperationsTests.test_log_for_create_wizard_pageD   s     $$T%5%56 	)&&(G	)  !

 ! "
 	(yy{,,T2'	) 	)s   BBc                    | j                  | j                        5  t        ddd      }|j                          | j	                         }d|d<   d|d<   | j
                  j                  | j                  d|      |      }| j                  |j                  d       | j                  dt        j                  j                                t        j                  j                         d	   }| j                  d
|j                         | j                  t        |j                          | j                  t#        |j$                        |j&                         | j                  t#        |j)                               |j*                         | j                  | j                  j$                  |j,                         ddd       y# 1 sw Y   yxY w)z?
        When a page is edited a log entry is created.
        rI   rJ   r9   templatezchanged-slugr;   r:   r)   r   Changed Page TranslationN)r>   r"   r
   _clear_internal_cacher=   r?   r@   get_page_change_urir*   rB   r   r+   r,   r-   r.   r   r/   r0   r1   r2   reloadr3   r4   )r$   r5   rD   rE   r6   s        r%   test_log_for_change_admin_pagez5LogPageOperationsTests.test_log_for_change_admin_page]   so    $$T%5%56 	Ev'<dCD&&(..0I$9Ij! !/If{{''(@(@t(LiXHX1137Q 0 0 6 6 89 ((,,.q1I79Q9QRVY%:%:;S\9+>+>?S/1F1FGT--00)2C2CD1	E 	E 	Es   FGGc                    | j                  | j                        5  t        ddd       t        ddd      }t        ddd      }| j                  j	                  t
        |j                  z  |j                  dd      }| j                  |j                  d       | j                  d	t        j                  j                                t        j                  j                         d
   }| j                  t        d      |j                         | j                  t        |j                          | j                  t#        |j                        |j$                         | j                  t#        |      |j&                         | j                  | j                  j                  |j(                         ddd       y# 1 sw Y   yxY w)z>
        When a page is moved a log entry is created.
        	page_homerJ   r9   page_apage_b0)targetposition   r)   r   MovedN)r>   r"   r
   r?   r@   r   r1   r*   rB   r   r+   r,   r-   _r.   r   r/   r0   r2   r3   r4   )r$   rM   page_2rE   r6   s        r%   test_log_for_move_admin_pagez3LogPageOperationsTests.test_log_for_move_admin_page{   sc    $$T%5%56 	E%:DA +@$GF +@$GF {{''(9FII(ERXR[R[ilGmnHX1137Q 0 0 6 6 89 ((,,.q1IQwZ)A)ABVY%:%:;S^Y-@-@AS[)*?*?@T--00)2C2CD-	E 	E 	Es   FF;;Gc                    | j                  | j                        5  t        ddd      }t        |j                        }t        |      }| j                  t        d|j                        }ddi}| j                  dt        j                  j                                | j                  j                  ||      }| j                  |j                  d       | j                  d	t        j                  j                                t        j                  j                         d   }| j                  t        d
      |j                          | j                  t"        |j$                         | j                  ||j&                         | j                  ||j(                         | j                  | j                  j                  |j*                         ddd       y# 1 sw Y   yxY w)z@
        When a page is deleted a log entry is created.
        rf   rJ   r9   deleter@   yesr   r:   r)   DeletedN)r>   r"   r
   r0   r1   get_admin_urlr   r*   r   r+   r,   r?   r@   rB   r-   rm   r.   r   r/   r2   r3   r4   )r$   r5   pre_deleted_page_idpre_deleted_pageendpoint	post_datarE   r6   s           r%   test_log_for_delete_admin_pagez5LogPageOperationsTests.test_log_for_delete_admin_page   s|    $$T%5%56 	Ex)>ED"%dgg,"4y))$$''BHIQ 0 0 6 6 89{{'')<HX1137Q 0 0 6 6 89 ((,,.q1IQy\9+C+CDXy'<'<=0)2E2EF-y/D/DET--00)2C2CD1	E 	E 	Es   F5GG#c                    | j                  | j                        5  t        ddd      }t        dd|j	                  d      z  |      }| j                  d|      }t        |ddg	      }d
|d<   |j                  d      |d<   | j                  j                  ||      }| j                  |j                  d       | j                  dt        j                  j                                t        j                  j                         d   }| j                  t!        d      |j"                         | j                  t$        |j&                         | j                  t)        |j*                        |j,                         | j                  t)        |j/                               |j0                         | j                  | j                  j*                  |j2                         ddd       y# 1 sw Y   yxY w)zM
        When a pages translation is changed a log entry is created.
        rf   rJ   r9   deother title %slanguagerN   r5   rN   r^   )fieldsmy_new_title_fieldr;   r:   r)   r   r_   N)r>   r"   r
   r   	get_titlera   r   get_slugr?   r@   r*   rB   r   r+   r,   r-   rm   r.   r   r/   r0   r1   r2   rb   r3   r4   )r$   r5   rN   rw   rP   rE   r6   s          r%   test_log_for_change_translationz6LogPageOperationsTests.test_log_for_change_translation   s    $$T%5%56 	Ex)>ED'=MPTP^P^_cPd=dkopE//d;H /DED0DM==.DL{{''$7HX1137Q 0 0 6 6 89 ((,,.q1IQ9:I<T<TUVY%:%:;S\9+>+>?S/1F1FGT--00)2C2CD1	E 	E 	Es   GG++G4c                    | j                  | j                        5  d}t        |dd      }t        dd|z  |       t	        d      5  t        |      }ddd       | j                  d|      }ddd	}| j                  j                  ||      }i |_	        | j                  |j                  d
       | j                  dt        j                  j                                t        j                  j                         d   }| j                  t!        d      |j"                         | j                  t$        |j&                         | j                  t        |j(                        |j*                         | j                  |j,                         | j                  | j                  j(                  |j.                         ddd       y# 1 sw Y   xxY w# 1 sw Y   yxY w)zM
        When a pages translation is deleted a log entry is created.
        rf   rJ   r9   r{   r|   r}   Nrr   )r@   r~   r:   r)   r   zDeleted Page Translation)r>   r"   r
   r   r   r0   get_page_delete_translation_urir?   r@   page_content_cacher*   rB   r   r+   r,   r-   rm   r.   r   r/   r1   r2   r3   r4   )r$   title_enr5   expected_entryrw   rx   rE   r6   s           r%   test_log_for_delete_translationz6LogPageOperationsTests.test_log_for_delete_translation   s    $$T%5%56 	EHx)>ED5E5PW[\% +!$T+;;D$GH!&D9I{{'')<H&(D# X1137Q 0 0 6 6 89 ((,,.q1IQ9:I<T<TUVY%:%:;S\9+>+>?^Y-B-BCT--00)2C2CD7	E 	E+ +		E 	Es$   ,GG
E-G
G	GG N)__name__
__module____qualname__r&   r7   rG   rK   r\   rc   ro   ry   r   r    r'   r%   r   r      s;    UA ;632E<E8E<E<Er'   r   c                   X    e Zd Zd ZddZddZd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zy)LogPlaceholderOperationsTestsc                    | j                  ddd       | j                         | _        | j                  ddd       | j                  ddd| j                        | _        | j                  j                  d      j                  d	
      | _        | j                  j                  d      j                  d
      | _        y )Nr   Tr   r   rI   rJ   r9   )
created_bybodyslotzright-column)	r    r!   r"   create_homepage	_cms_pageget_placeholdersrC   _placeholder_1_placeholder_2r#   s    r%   r&   z#LogPlaceholderOperationsTests.setUp   s     	*tTR--/,tT--!''	 . 
 #nn==dCGGVGT"nn==dCGG^G\r'   Nc                 X    |xs | j                   }dddi d}t        |||fi ||   }|S )NA Linkhttps://www.django-cms.orgnameexternal_link)
LinkPluginPlaceholderPlugin)r   r	   )r$   placeholderplugin_typer~   plugin_dataplugins         r%   _add_pluginz)LogPlaceholderOperationsTests._add_plugin  sP    !8T%8%8#+>Z[!#
 
 +&	
 r'   c                 B    | j                  | j                  d|      }|S )Nr   )r   r   r~   )get_add_plugin_urir   )r$   r~   uris      r%   _get_add_plugin_uriz1LogPlaceholderOperationsTests._get_add_plugin_uri  s-    %%++$ & 

 
r'   c                 Z   | j                         }ddd}| j                  j                  }| j                  | j                        5  | j
                  j                  ||      }| j                  |j                  d       | j                  dt        j                  j                                t        j                  j                         d   }| j                  t        d      |j                         | j                  t        |j                          | j                  t#        |j$                        |j&                         | j                  t#        |      |j(                         | j                  | j                  j$                  |j*                         ddd       y# 1 sw Y   yxY w)	zB
        When a plugin is created a log entry is created.
        r   r   r   rk   r)   r   zAdded PluginN)r   r   r5   r>   r"   r?   r@   r*   rB   r   r+   r,   r-   rm   r.   r   r/   r0   r1   r2   r3   r4   )r$   rw   rP   r5   rE   r6   s         r%   test_log_for_add_pluginz5LogPlaceholderOperationsTests.test_log_for_add_plugin  sJ    ++- 3OP""''$$T%5%56 	E{{''$7HX1137Q 0 0 6 6 89 ((,,.q1IQ~.	0H0HIVY%:%:;S\9+>+>?SY	(=(=>T--00)2C2CD#	E 	E 	Es   EF!!F*c                    | j                         }| j                  |      }|j                  j                  }|j                  d| j
                  j                  dd}| j                  | j                        5  | j                  j                  ||      }| j                  |j                  d       | j                  dt        j                  j                                t        j                  j                         d   }| j                  t!        d      |j"                         | j                  t$        |j&                         | j                  t)        |j                        |j*                         | j                  t)        |      |j,                         | j                  | j                  j                  |j.                         ddd       y# 1 sw Y   yxY w)z@
        When a plugin is moved a log entry is created.
        r9   r)   )	plugin_idtarget_languageplaceholder_idtarget_positionrk   r   zMoved PluginN)r   get_move_plugin_urir   r5   r1   r   r>   r"   r?   r@   r*   rB   r   r+   r,   r-   rm   r.   r   r/   r0   r2   r3   r4   r$   r   rw   r5   rP   rE   r6   s          r%   test_log_for_move_pluginz6LogPlaceholderOperationsTests.test_log_for_move_plugin7  st    !!#++F3!!&&#"1144 	
 $$T%5%56 	E{{''$7HX1137Q 0 0 6 6 89 ((,,.q1IQ~.	0H0HIVY%:%:;S\9+>+>?SY	(=(=>T--00)2C2CD#	E 	E 	Es   8EGGc                 |   | j                         }| j                  |      }|j                  j                  }ddd}| j	                  | j
                        5  | j                  j                  ||      }| j                  |j                  d       | j                  dt        j                  j                                t        j                  j                         d   }| j                  t        d      |j                         | j                  t         |j"                         | j                  t%        |j&                        |j(                         | j                  t%        |      |j*                         | j                  | j
                  j&                  |j,                         ddd       y# 1 sw Y   yxY w)	zB
        When a plugin is changed a log entry is created.
        zA Link 2r   r   rk   r)   r   zChanged PluginN)r   get_change_plugin_urir   r5   r>   r"   r?   r@   r*   rB   r   r+   r,   r-   rm   r.   r   r/   r0   r1   r2   r3   r4   r   s          r%   test_log_for_change_pluginz8LogPlaceholderOperationsTests.test_log_for_change_pluginX  s[    !!#--f5!!&&"5QR$$T%5%56 	E{{''$7HX1137Q 0 0 6 6 89 ((,,.q1IQ/0)2J2JKVY%:%:;S\9+>+>?SY	(=(=>T--00)2C2CD#	E 	E 	Es   EF22F;c                 f   | j                         }| j                  |      }|j                  j                  }| j	                  | j
                        5  ddi}| j                  j                  ||      }| j                  |d       | j                  dt        j                  j                                t        j                  j                         d   }| j                  t        d      |j                         | j                  t         |j"                         | j                  t%        |j&                        |j(                         | j                  t%        |      |j*                         | j                  | j
                  j&                  |j,                         ddd       y# 1 sw Y   yxY w)zB
        When a plugin is deleted a log entry is created.
        r@   Tz<div class="success"></div>r)   r   zDeleted PluginN)r   get_delete_plugin_urir   r5   r>   r"   r?   r@   assertContainsr*   r   r+   r,   r-   rm   r.   r   r/   r0   r1   r2   r3   r4   r   s          r%   test_log_for_delete_pluginz8LogPlaceholderOperationsTests.test_log_for_delete_plugint  sT    !!#--f5!!&&$$T%5%56 	ED>D{{''$7H*GHQ 0 0 6 6 89 ((,,.q1IQ/0)2J2JKVY%:%:;S\9+>+>?SY	(=(=>T--00)2C2CD%	E 	E 	Es   EF''F0c                 :   t         j                  j                  d| j                  t        j                  j                  d            }| j                         }| j                  |      }|j                  j                  }|j                  d|j                  d}| j                  | j                        5  | j                  j                  ||      }| j                  |j                  d       | j                  dt         j                  j#                                t         j                  j%                         d   }| j                  t'        d	      |j(                         | j                  t*        |j,                         | j                  t/        |j                        |j0                         | j                  t/        |      |j2                         | j                  | j                  j                  |j4                         d
d
d
       y
# 1 sw Y   y
xY w)z>
        When a plugin is cut a log entry is created.
        r9   	clipboardr   r~   userr   )r   r   r   rk   r)   r   z
Cut PluginN)r   r+   creater"   r   r   r   r   r5   r1   clipboard_idr>   r?   r@   r*   rB   r   r,   r-   rm   r.   r   r/   r0   r2   r3   r4   r$   user_settingsr   rw   r5   rP   rE   r6   s           r%   test_log_for_cut_pluginz5LogPlaceholderOperationsTests.test_log_for_cut_plugin  s    %,,33!!!))00k0B 4 

 !!#++F3!!&&#+88
 $$T%5%56 	E{{''$7HX1137Q 0 0 6 6 89 ((,,.q1IQ|_i.F.FGVY%:%:;S\9+>+>?SY	(=(=>T--00)2C2CD#	E 	E 	Es   7EHHc                 j   t         j                  j                  d| j                  t        j                  j                  d            }| j                  |j                        }| j                  |      }| j                  j                  }|j                  | j                  j                  dddd}| j                  | j                        5  | j                  j                  ||      }| j                  |j                  d	       | j                  dt         j                  j#                                t         j                  j%                         d
   }| j                  t'        d      |j(                         | j                  t*        |j,                         | j                  t/        |j                        |j0                         | j                  t/        |      |j2                         | j                  | j                  j                  |j4                         ddd       y# 1 sw Y   yxY w)zA
        When a plugin is pasted a log entry is created.
        r9   r   r   r   )r   truer)   r   r   r   move_a_copyr   rk   r   zPaste PluginN)r   r+   r   r"   r   r   r   r   r   r5   r1   r>   r?   r@   r*   rB   r   r,   r-   rm   r.   r   r/   r0   r2   r3   r4   r   s           r%   test_log_for_paste_pluginz7LogPlaceholderOperationsTests.test_log_for_paste_plugin  s    %,,33!!!))00k0B 4 

 !!m.E.E!F++F3""''"1144#! 
 $$T%5%56 	E{{''$7HX1137Q 0 0 6 6 89 ((,,.q1IQ~.	0H0HIVY%:%:;S\9+>+>?SY	(=(=>T--00)2C2CD#	E 	E 	Es   EH))H2c                    | j                         }| j                  |      }|j                  j                  }d| j                  j
                  d| j                  j
                  d}| j                  | j                        5  | j                  j                  ||      }| j                  |j                  d       | j                  dt        j                  j                                t        j                  j!                         d   }| j                  t#        d      |j$                         | j                  t&        |j(                         | j                  t+        |j
                        |j,                         | j                  t+        |      |j.                         | j                  | j                  j
                  |j0                         ddd       y# 1 sw Y   yxY w)	zQ
        When a plugin is added to a placeholder a log entry is created.
        r9   r{   )source_languagesource_placeholder_idr   target_placeholder_idrk   r)   r   z+Added plugins to placeholder from clipboardN)r   get_copy_plugin_urir   r5   r   r1   r   r>   r"   r?   r@   r*   rB   r   r+   r,   r-   rm   r.   r   r/   r0   r2   r3   r4   r   s          r%   &test_log_for_add_plugin_to_placeholderzDLogPlaceholderOperationsTests.test_log_for_add_plugin_to_placeholder  s}    !!#++F3!!&&#%)%8%8%;%;#%)%8%8%;%;	
 $$T%5%56 	E{{''$7HX1137Q 0 0 6 6 89 ((,,.q1IQLMyOgOghVY%:%:;S\9+>+>?SY	(=(=>T--00)2C2CD#	E 	E 	Es   EGG%c                    t         j                  j                  d| j                  t        j                  j                  d            }| j                  |j                  d      }|j                  }| j                  |       | j                  |      }| j                  j                  }|j                  | j                  j                  dddd}| j                  | j                        5  | j                  j                  ||      }| j                  |j                   d	       | j                  dt"        j                  j%                                t"        j                  j'                         d
   }| j                  t)        d      |j*                         | j                  t,        |j.                         | j                  t1        |j                        |j2                         | j                  t1        |      |j4                         | j                  | j                  j                  |j6                         ddd       y# 1 sw Y   yxY w)zR
        When a plugin is pasted in a placeholder a log entry is created.
        r9   r   r   r   r   r   r)   r   rk   r   zPaste to PlaceholderN)r   r+   r   r"   r   r   r   placeholder_refr   r   r5   r1   r>   r?   r@   r*   rB   r   r,   r-   rm   r.   r   r/   r0   r2   r3   r4   )	r$   r   placeholder_pluginref_placeholderrw   r5   rP   rE   r6   s	            r%   test_log_for_paste_placeholderz<LogPlaceholderOperationsTests.test_log_for_paste_placeholder  s    %,,33!!!))00k0B 4 

 "--##
 -<<)++,>?""'' ,.."1144#! 
 $$T%5%56 	E{{''$7HX1137Q 0 0 6 6 89 ((,,.q1IQ56	8P8PQVY%:%:;S\9+>+>?SY	(=(=>T--00)2C2CD#	E 	E 	Es   ,EIIc                    | j                          | j                  | j                        }| j                  j                  }| j	                  | j
                        5  | j                  j                  |ddi      }| j                  |j                  d       | j                  dt        j                  j                                t        j                  j                         d   }| j                  t        d      |j                         | j                  t         |j"                         | j                  t%        |j&                        |j(                         | j                  t%        |      |j*                         | j                  | j
                  j&                  |j,                         ddd       y# 1 sw Y   yxY w)zR
        When a placeholder is emptied of plugins a log entry is created.
        testr   rk   r)   zCleared PlaceholderN)r   get_clear_placeholder_urlr   r5   r>   r"   r?   r@   r*   rB   r   r+   r,   r-   rm   r.   r   r/   r0   r1   r2   r3   r4   )r$   rw   r5   rE   r6   s        r%   test_log_for_clear_placeholderz<LogPlaceholderOperationsTests.test_log_for_clear_placeholder,  sX    	11$2E2EF""''$$T%5%56 	E{{''61+>HX1137Q 0 0 6 6 89 ((,,.q1IQ45y7O7OPVY%:%:;S\9+>+>?SY	(=(=>T--00)2C2CD#	E 	E 	Es   EF99G)Nr   r9   )r9   )r   r   r   r&   r   r   r   r   r   r   r   r   r   r   r   r   r'   r%   r   r      sM    ]E6EBE8E8#EJ%ENEB-E^Er'   r   N) django.contrib.admin.modelsr   r   r   r   django.forms.modelsr   django.utils.translationr   rm   cms.apir	   r
   r   cms.forms.wizardsr   
cms.modelsr   r   r   cms.test_utils.testcasesr   r   	cms.utilsr   cms.utils.i18nr   cms.wizards.formsr   r   r   r   r   r'   r%   <module>r      s`    L L - 6 @ @ / 6 6 C & ) E '!& ^E[ ^EBPEK PEr'   