
    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m	Z	m
Z
 d dlmZ d dlmZmZmZ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 d dlmZmZm Z 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, d dl-m.Z. d dl/m0Z0  G d de&      Z1 G d de&      Z2y)    N)settings)Context)SekizaiContext)
add_plugincreate_pagecreate_page_content)invalidate_cms_page_cache)_get_placeholder_cache_key_get_placeholder_cache_version"_get_placeholder_cache_version_key_set_placeholder_cache_versionclear_placeholder_cacheget_placeholder_cacheset_placeholder_cache)PluginAlreadyRegistered)Page)plugin_pool)Example1)DateTimeCacheExpirationPluginLegacyCachePluginNoCachePluginSekizaiPluginTimeDeltaCacheExpirationPluginTTLCacheExpirationPluginVaryCacheOnPlugin)CMSTestCase)FuzzyInt)
CMSToolbar)get_object_edit_url)get_cms_setting)get_timezone_namec                   v     e Zd Z fdZ f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 xZS )CacheTestCasec                 N    ddl m} t        |           |j	                          y Nr   cache)django.core.cacher'   supertearDownclearselfr'   	__class__s     D/home/dcms/DCMS/lib/python3.12/site-packages/cms/tests/test_cache.pyr*   zCacheTestCase.tearDown(   s    +    c                 N    ddl m} t        |           |j	                          y r%   )r(   r'   r)   setUpr+   r,   s     r/   r2   zCacheTestCase.setUp.   s    +r0   c                    d}t        ddd      }|j                         }|j                  d      j                  d      d   }|j                  d      j                  d      d   }t	        |ddd	
       t	        |ddd
       | j                  |      }t        j                  j                  |j                        |_
        t        |      |_        | j                  t        dd            5  | j                  |i |       d d d        | j                  |      }d|j                   d<   t        j                  j                  |j                        |_
        t        |      |_        d}| j                  d      5  | j                  |i |       d d d        | j#                  | j%                               5  | j                  |      }d|j                   d<   t        j                  j                  |j                        |_
        t        |      |_        d|j                  _        d d d        d}| j                  d      5  | j                  |i |       d d d        ddg}t)        dt*        j,                  D cg c]	  }||vs| c}      }	 | j*                  di |	5  | j                  t        dd            5  | j.                  j                  |       d d d        | j                  t        dd            5  | j.                  j                  |       d d d        d d d        d|	d<    | j*                  di |	5  | j                  t        dd            5  | j.                  j                  |       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   \xY wc c}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   oxY w# 1 sw Y   y xY w)NK{% load cms_tags %}{% placeholder 'body' %}{% placeholder 'right-column' %}test page 1nav_playground.htmlenbodyslotr   
TextPluginEnglishr8   deDeutschpk      Tcms_edit   -django.middleware.cache.UpdateCacheMiddleware0django.middleware.cache.FetchFromCacheMiddlewareF)CMS_PAGE_CACHE
MIDDLEWARE         CMS_PLACEHOLDER_CACHE       )r   get_absolute_urlget_placeholdersfilterr   get_requestr   objectsgetrA   current_pager   toolbarassertNumQueriesr   render_template_objsessionlogin_user_contextget_superusershow_toolbardictr   rI   client)
r-   templatepage1	page1_urlplaceholder_enplaceholder_derequestexcludemw	overridess
             r/   test_cache_placeholderz$CacheTestCase.test_cache_placeholder4   s   `M+@$G**,	//5<<&<I!L//5<<&<I!L><IF><IF""9-#||//588/<$W-""8Aq>2 	<$$Xr7;	<""9-&*
##||//588/<$W-`""1% 	<$$Xr7;	< $$T%7%7%9: 	0&&y1G*.GOOJ'#'<<#3#3uxx#3#@G (1GO+/GOO(	0 a""1% 	<$$Xr7;	< <>
  %-%8%8NrBg<MN
	 T]]'Y' 	+&&xB'78 +	*+&&x27 +	*+	+ .3	)*T]]'Y' 	+&&x27 +	*+	+ 	+E	< 	<	< 	<	0 	0	< 	< O+ ++ +	+ 	++ +	+ 	+s   1N?N:A1N'N4>	O
O
&OO#OOOO6 O*<O6NN$'N14N>O	OO	OO'*O3	/O66O?c                 X   t        ddd      }|j                         }|j                  d      j                  d      d   }|j                  d      j                  d      d   }	 t	        j
                  t               t        |ddd	
       t        |ddd
       d}g d}dt        j                  D cg c]	  }||vs| c}i} | j                  d i |5  | j                  |      }	t        j                  j                  |j                        |	_        t#        |	      |	_        | j'                  t)        dd            5  | j*                  j                  |      }
|
j,                  }d d d        | j                  |      }	t        j                  j                  |j                        |	_        t#        |	      |	_        | j'                  d      5  | j*                  j                  |      }|j,                  }d d d        | j/                         | j                  |      }	t        j                  j                  |j                        |	_        t#        |	      |	_        | j                  d      5  | j'                  t)        dd            5  | j*                  j                  |      }|j,                  }d d d        d d d        | j/                  |       | j1                  | j3                               5  | j5                  |d      }| j*                  j7                  |i        d d d        | j                  |      }	t        j                  j                  |j                        |	_        t#        |	      |	_        | j'                  t)        dd            5  | j9                  |i |	      }d d d        | j'                  t)        dd            5  | j*                  j                  |      }| j;                  d|d   v        |j,                  j=                  d      j?                  d      d   }d d d        | j                  |      }	t        j                  j                  |j                        |	_        t#        |	      |	_        | j'                  d      5  | j9                  |i |	      }d d d        | j                  d      5  | j'                  t)        dd            5  | j*                  j                  |      }|j,                  j=                  d      j?                  d      d   }d d d        d d d        | jA                         | jA                         d d d        t	        jB                  t               y # t        $ r Y w xY wc c}w # 1 sw Y   3x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   ,xY w# 1 sw Y   xY w# 1 sw Y   GxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)!Nr5   r6   r7   r8   r9   r   right-columnr;   r<   r=   r?   r4   rF   z'django.middleware.cache.CacheMiddlewarerG   rI   r@         FrH   rL      r   rB      rJ   no-cacheCache-Controlutf8$$$   rC   rP   )"r   rQ   rR   rS   r   register_pluginr   r   r   r   rI   rT   r   rU   rV   rA   rW   r   rX   rY   r   r`   contentassertEqualr\   r]   get_add_plugin_uripostrZ   
assertTruedecodesplitassertNotEqualunregister_plugin)r-   rb   rc   placeholder1placeholder2ra   rg   rh   ri   rf   	response1content1	response2content2	response3content3endpointoutputresponseresp1output2resp2s                         r/   test_no_cache_pluginz"CacheTestCase.test_no_cache_pluginf   sV   M+@$G**,	--d3:::GJ--d3:::OPQR	''6 	<t)D<t)D`
 (;(;Q"r?P2Q
	 T]]'Y' 5	.&&y1G#'<<#3#3uxx#3#@G (1GO&&xB'78 - KKOOI6	$,,-
 &&y1G#'<<#3#3uxx#3#@G (1GO&&q) - KKOOI6	$,,- Xx0 &&y1G#'<<#3#3uxx#3#@G (1GOe4 1**8Ar?; 1 $	 :I(00H11 Xx0 ((););)=> /22<Q  2./ &&y1G#'<<#3#3uxx#3#@G (1GO&&x1~6 I11(BHI&&xB'78 H;;??95
h.G GH ((//7==eDQGH
 &&y1G#'<<#3#3uxx#3#@G (1GO&&q) J228RIJe4 L**8Ar?; L#{{y9H$,,33F;AA%HKELL 0u-k5	.n 	%%m4O ' 		 R- -- -1 11 1/ /I IH HJ JL LL La5	. 5	.s!  'V 7	VVA,X (V /A)X (V- A<X <W(V: W9X /W0A3X #W!7#X AW.9A)X "W;6X X,A	X5X=,X 	VV V*	%X -V7	2X :W?WW	X W	X !W+	&X .W8	3X ;X	 X XXX	X  X)c                    t        ddd      }|j                  d      j                  d      d   }|j                  d      j                  d      d   }t        j                  t
               t        |ddd	
       t        |ddd
       t        |dd       g d}dt        j                  D cg c]	  }||vs| c}i} | j                  di |5  | j                  |j                               }t        j                  j                  |j                        |_        t!        |      |_        | j%                  t'        dd            5  | j(                  j                  |j                               }d d d        | j+                  dd   v |d          d d d        t        j,                  t
               y c c}w # 1 sw Y   JxY w# 1 sw Y   4xY w)Nr5   r6   r7   r8   r9   r   rl   r;   r<   r=   r?   r   rm   rI   r@      rK   z
max-age=45rt   rP   )r   rR   rS   r   rx   r   r   r   rI   rT   rQ   r   rU   rV   rA   rW   r   rX   rY   r   r`   r}   r   	r-   rb   r   r   rg   rh   ri   rf   r   s	            r/   test_timedelta_cache_pluginz)CacheTestCase.test_timedelta_cache_plugin   s   M+@$G--d3:::GJ--d3:::OPQR##$BC<t)D<t)D 	<!A4H
 (;(;Q"r?P2Q
	 T]]'Y' 		&&u'='='?@G#'<<#3#3uxx#3#@G (1GO&&xB'78 E;;??5+A+A+CDE OO 998O;T		 	%%&DE RE E			 		s1   1	F=;F=A:G*G9"GG	GGc                    t        ddd      }|j                         }|j                  d      j                  d      d   }|j                  d      j                  d      d   }	 t	        j
                  t               t        |ddd	
       t        |ddd
       t        |dd       g d}dt        j                  D cg c]	  }||vs| c}i} | j                  di |5  | j                  |      }t        j                  j                  |j                        |_        t#        |      |_        | j'                  t)        dd            5  | j*                  j                  |      }	d d d        | j-                  d	d   v |	d          d d d        t	        j.                  t               y # t        $ r Y >w xY wc c}w # 1 sw Y   ZxY w# 1 sw Y   DxY w)Nr5   r6   r7   r8   r9   r   rl   r;   r<   r=   r?   r   rm   rI   r@   r   rK   
max-age=40rt   rP   )r   rQ   rR   rS   r   rx   r   r   r   r   rI   rT   r   rU   rV   rA   rW   r   rX   rY   r   r`   r}   r   
r-   rb   rc   r   r   rg   rh   ri   rf   r   s
             r/   test_datetime_cache_pluginz(CacheTestCase.test_datetime_cache_plugin   s   M+@$G**,	--d3:::GJ--d3:::OPQR	''(EF 	<t)D<t)D 	<!@$G
 (;(;Q"r?P2Q
	 T]]'Y' 	&&y1G#'<<#3#3uxx#3#@G (1GO&&xB'78 6;;??956OO 998O;T	 	%%&CD; ' 		" R6 6		 	sC   'F2 	GG&A,GG."G2	F?>F?G	GGc                 |   t        ddd      }|j                  d      j                  d      d   }|j                  d      j                  d      d   }t        j                  t
               t        |ddd	
       t        |ddd
       t        |dd       g d}dt        j                  D cg c]	  }||vs| c}i} | j                  di |5  | j                  d      }t        j                  j                  |j                        |_        t        |      |_        | j#                  t%        dd            5  | j&                  j                  d      }d d d        | j)                  dd   v |d          t        j*                  t
               d d d        y c c}w # 1 sw Y   JxY w# 1 sw Y   y xY w)Nr5   r6   r7   r8   r9   r   rl   r;   r<   r=   r?   r   rm   rI   /en/r@   r   rK   z
max-age=50rt   rP   )r   rR   rS   r   rx   r   r   r   rI   rT   r   rU   rV   rA   rW   r   rX   rY   r   r`   r}   r   r   s	            r/   r   z&CacheTestCase.TTLCacheExpirationPlugin  s   M+@$G--d3:::GJ--d3:::OPQR##$<=<t)D<t)D 	<!;TB
 (;(;Q"r?P2Q
	 T]]'Y' 
	D&&v.G#'<<#3#3uxx#3#@G (1GO&&xB'78 3;;??623OO 998O;T ))*BC
	D 
	D R3 3	
	D 
	Ds1   1	F!;F!A,F2F&;F2&F/	+F22F;c                 P   t        ddd      }|j                         }|j                  d      j                  d      d   }|j                  d      j                  d      d   }t	        j
                  t               	 t	        j
                  t               	 t	        j
                  t               t        |ddd	
       t        |ddd
       t        |dd       t        |dd       g d}dt        j                  D cg c]	  }||vs| c}i} | j                  di |5  | j                  |      }t        j                  j!                  |j"                        |_        t'        |      |_        | j+                  t-        dd            5  | j.                  j!                  |      }	|	j0                  j3                  d      j5                  d      d   }
ddd       | j7                  d	d   v |	d          |	d   }|	d   }t9        j:                  d       | j                  |      }t        j                  j!                  |j"                        |_        t'        |      |_        | j+                  d      5  | j.                  j!                  |      }	|	j0                  j3                  d      j5                  d      d   }ddd       | j=                  
       | j?                  |	d   |       | j=                  |	d   |       ddd       t	        j@                  t               t	        j@                  t               t	        j@                  t               y# t        $ r Y w xY w# t        $ r Y w xY wc c}w # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)zf
        Tests that when used in combination, the page is cached to the
        shortest TTL.
        r5   r6   r7   r8   r9   r   rl   r;   r<   r=   r?   r   r   rm   rI   r@   r      ru   rv   rw   Nr   rt   ExpiresrP   )!r   rQ   rR   rS   r   rx   r   r   r   r   r   r   rI   rT   r   rU   rV   rA   rW   r   rX   rY   r   r`   ry   r~   r   r}   timesleeprz   r   r   )r-   rb   rc   r   r   rg   rh   ri   rf   r   r   cache_control1expires1r   s                 r/   test_expiration_cache_pluginsz+CacheTestCase.test_expiration_cache_plugins$  sB   
 M+@$G**,	--d3:::GJ--d3:::OPQR##$<=	''(EF	''6 	<t)D<t)D 	<!;TB<!@$G
 (;(;Q"r?P2Q
	 T]]'Y' 	<&&y1G#'<<#3#3uxx#3#@G (1GO&&xB'78 H;;??95 ((//7==eDQGH OO 998O;T &o6N	*HJJqM &&y1G#'<<#3#3uxx#3#@G (1GO&&q) H;;??95 ((//7==eDQGH UE* 9>JXi0(;7	<: 	%%&>?%%&CD%%m4o ' 		 ' 		$ RH HH H'	< 	<sq    M M. 	M>M>&A,NA	NB"N=A	NAN	M+*M+.	M;:M;N	NN	NN%c                    t        ddd      }|j                         }|j                  d      j                  d      d   }|j                  d      j                  d      d   }t	        j
                  t               t        |ddd	
       t        |ddd
       t        |dd       g d}dt        j                  D cg c]	  }||vs| c}i} | j                  di |5  | j                  |      }t        j                  j                  |j                        |_        t!        |      |_        | j%                  t'        dd            5  | j(                  j                  |      }	d d d        | j+                  d	d   v       d d d        t	        j,                  t               y c c}w # 1 sw Y   FxY w# 1 sw Y   4xY w)Nr5   r6   r7   r8   r9   r   rl   r;   r<   r=   r?   r   rm   rI   r@   r   rK   rs   rt   rP   )r   rQ   rR   rS   r   rx   r   r   r   rI   rT   r   rU   rV   rA   rW   r   rX   rY   r   r`   r}   r   r   s
             r/   test_dual_legacy_cache_pluginsz,CacheTestCase.test_dual_legacy_cache_pluginsj  s   M+@$G**,	--d3:::GJ--d3:::OPQR##$56<t)D<t)D 	<!4d;
 (;(;Q"r?P2Q
	 T]]'Y' 	I&&y1G#'<<#3#3uxx#3#@G (1GO&&xB'78 6;;??956OOJh.GGH	I 	%%&78 R6 6		I 	Is1   	F-F-%A,F>F2-F>2F;	7F>>Gc                    ddg}dt         j                  D cg c]	  }||vs| c}i} | j                   di |5  t        d      }| j                  |       t	        ddd      }|j                         }|j                  d      j                  d	      d
   }t        |ddd       t        |ddd       | j                  |d      }| j                  |j                  j                         | j                  t        dd            5  | j                  j!                  |      }	d d d        | j#                  	j$                  d       | j                  d
      5  | j                  j!                  |      }	d d d        | j#                  |	j$                  d       | j                  d      5  | j                  t        dd            5  | j                  j!                  |      }	d d d        | j#                  |	j$                  d       | j                  t        dd            5  | j                  j!                  |      }	d d d        | j#                  |	j$                  d       d d d        d d d        y c c}w # 1 sw Y   VxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   axY w# 1 sw Y   IxY w# 1 sw Y   y xY w)NrF   rG   rI   
PAGE_CACHEr5   r6   r7   r8   r9   r   r;   r<   r=   r>   r?   rw   rK      Frp      rP   )r   rI   r    r}   r   rQ   rR   rS   r   rT   assertFalseuseris_authenticatedrY   r   r`   rV   rz   status_code
r-   rg   rh   ri   page_cache_settingrb   rc   placeholderrf   r   s
             r/   test_cache_pagezCacheTestCase.test_cache_page  s    <>

 (;(;Q"r?P2Q
	 T]]'Y' 1	< "1!>OO./  /DdKE..0I  006==6=J1MK{L$YG{L$YG &&y$7G W\\::; &&x27 6;;??956X1137 &&q) 6;;??956X1137 e4 < **8Ar?; :#{{y9H:  !5!5s; **8Ar?; :#{{y9H:  !5!5s;<I1	< 1	< R06 66 6: :: :< <I1	< 1	<s   	I5I5CJ8
I:&5J8J76J8-J,	J%?J,$J  $J,$J8:J	?J8J	J8JJ, J)%J,,J5	1J88Kc                 
   | j                  d      5  | j                         }t        ddd      }| j                  |      }|j	                         }t        |      }|j                  d      j                  d      d   }t        |d	dd
       t        |d	dd       | j                  |      5  | j                  t        dd            5  | j                  j                  |      }d d d        d d d        | j                  j                  d       | j                  t        dd            5  | j                  j                  |      }d d d        | j                  |j                  d       | j                  d      5  | j                  j                  |      }d d d        | j                  |j                  d       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   RxY w# 1 sw Y   y xY w)NTrp   r5   r6   r7   r8   r9   r   r;   r<   r=   r>   r?   rw   #   r   rq   )r   r]   r   get_pagecontent_objrQ   r   rR   rS   r   r\   rY   r   r`   rV   rz   r   )r-   	superuserpagepage_contentpage_urlpage_edit_urlr   r   s           r/   "test_no_page_cache_on_toolbar_editz0CacheTestCase.test_no_page_cache_on_toolbar_edit  s   ]]$]/ 	8**,I}.CTJD33D9L,,.H/=M //5<<&<I!LK{L$YG{L$YG ((3 >**8Ar?; >#{{}=H>> X1137 &&x27 5;;??845X1137 &&q) 5;;??845X11377	8 	8> >> >5 5
5 53	8 	8sl   BG90GG	(G0?G9/G!5G9 G-$G9	GGG	G9!G*	&G9-G6	2G99Hc                    ddg}dt         j                  D cg c]	  }||vs| c}i} | j                   di |5  t        d      }| j                  |       t	        ddd      }|j                         }|j                  d      j                  d	      d
   }t        |ddd       t        |ddd       | j                  |j                  d      d      }| j                  |j                  j                         | j                  t        dd            5  | j                   j#                  |      }	d d d        | j%                  	j&                  d       | j                  d
      5  | j                   j#                  |      }	d d d        | j%                  |	j&                  d       t)                | j                  t        dd            5  | j                   j#                  |      }	| j%                  |	j&                  d       d d d        d d d        y c c}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)NrF   rG   rI   r   r5   r6   r7   r8   r9   r   r;   r<   r=   r>   r?   rw   rK   r   r   rP   )r   rI   r    r}   r   rQ   rR   rS   r   rT   get_pathr   r   r   rY   r   r`   rV   rz   r   r	   r   s
             r/   test_invalidate_restartz%CacheTestCase.test_invalidate_restart  s    <>

 (;(;Q"r?P2Q
	 T]]'Y' %	< "1!>OO./  /DdKE..0I  006==6=J1MK{L$YG{L$YG &&u~~d';TBG W\\::; &&x27 6;;??956X1137 &&q) 6;;??956X1137%'&&x27 <;;??95  !5!5s;<G%	< %	< R06 66 6
< <G%	< %	<s_   	HHCIH55I*H)A	I8H5IH&	"I)H2	.I5H>	:II
c                    t        ddd      }|j                  d      j                  d      d   }|j                  d      j                  d      d   }t        j                  t
               t        |dd       t        |d	dd
       | j                  j                  |j                               }| j                  |d       | j                  j                  |j                               }| j                  |d       y )Nr5   r6   r7   r8   r9   r   rl   r   r;   r?   r=   zalert()r   rR   rS   r   rx   r   r   r`   rV   rQ   assertContains)r-   rb   r   r   r   s        r/   test_sekizai_pluginz!CacheTestCase.test_sekizai_plugin  s    M+@$G--d3:::GJ--d3:::OPQR##M2<$7<t)D;;??5#9#9#;<Hh/;;??5#9#9#;<Hh/r0   c                 \   ddg}dt         j                  D cg c]	  }||vs| c}i} | j                   di |5  t        d      }| j                  |       t	        ddd      }|j                         }|j                  d      j                  d	      }t        |d
dd       | j                  j                  |      }| j                  |d       | j                  j                  |      }| j                  |d       | j                  | j                               5  ddd}	| j                  |d      }
| j                  j                  |
|	       d d d        | j                  j                  |      }| j                  |d       d d d        y c c}w # 1 sw Y   DxY w# 1 sw Y   y xY w)NrF   rG   rI   r   r5   r6   r7   r8   r9   r;   zFirst contentr=   zA Linkzhttps://www.django-cms.org)nameexternal_link
LinkPluginrP   )r   rI   r    r}   r   rQ   rR   rV   r   r`   r   r\   r]   r{   r|   )r-   rg   rh   ri   r   rb   rc   r   r   	post_datar   s              r/   test_cache_invalidationz%CacheTestCase.test_cache_invalidation#  s    <>

 (;(;Q"r?P2Q
	 T]]'Y' 	4!0!>OO.//DdKE..0I006:::GK{L$_M{{y1H/:{{y1H/:((););)=> 6$%A	  22;M  956 {{y1H(3-	4 	4 R 6 6	4 	4s.   	FFC#F"4F5F"F	F""F+c                    t                t        dddd      }|j                          |j                  }t	        |ddd	      }|j                          | j                         }| j                  |      }t               }| j                         |d
<   |j                  ||      }| j                  |d       |`
d|_        |j                          |j                  ||      }| j                  |d       y)z~
        Regression test for #4223

        Assert that placeholder cache is cleared correctly when a plugin is saved
        onetwotreefour)char_1char_2char_3char_4r;   r7   z	Some textr=   rf   z
Other textN)r	   r   saver   r   rT   get_content_rendererr   render_placeholderrz   _plugins_cacher8   )r-   exph1test_pluginrf   content_renderercontexttexts           r/   test_render_placeholder_cachez+CacheTestCase.test_render_placeholder_cacheE  s     	"#U5O
	nn !lD{K""$44W= "!--/	223@{+ '  223@|,r0   )__name__
__module____qualname__r*   r2   rj   r   r   r   r   r   r   r   r   r   r   r   r   __classcell__r.   s   @r/   r#   r#   '   s]    0+dO5b!FF%EN!DFD5L9B:<x8</<b0 4D-r0   r#   c                   F     e Zd Z fdZ fdZd Zd Zd Zd Zd Z	 xZ
S )PlaceholderCacheTestCasec                    ddl m} t        |           |j	                          t        ddd      | _        t        dd| j                  d       | j                  j                  d      j                  d	
      d   | _
        | j                  j                  d      j                  d	
      d   | _        t        j                  t               t        | j                  ddd       t        | j                  ddd       t        | j                  dd       t        | j                  dd       | j!                  d      | _        t$        j&                  j)                  | j                  j*                        | j"                  _        | j!                  d      | _        d| j.                  j0                  d<   | j!                  d      | _        d| j2                  j0                  d<   | j!                  d      | _        t$        j&                  j)                  | j                  j*                        | j4                  _        y )Nr   r&   zen test pager6   r7   r>   zde test page)ra   r8   r9   r;   r<   r=   r?   r   r   r@   USHTTP_COUNTRY_CODEUKz/de/)r(   r'   r)   r2   r+   r   r   r   rR   rS   rd   re   r   rx   r   r   rT   
en_requestr   rU   rV   rA   rW   en_us_requestMETAen_uk_request
de_requestr,   s     r/   r2   zPlaceholderCacheTestCase.setUph  s   +0EtL	.$))6K	
 #ii88>EE6ERSTU"ii88>EE6ERSTU##$564&&dK4&&dK4&&(;TB4&&(;TB**62'+||'7'7499<<'7'H$!--f57; 34!--f57; 34**62'+||'7'7499<<'7'H$r0   c                     ddl m} t        |           t	        j
                  t               |j                          y r%   )r(   r'   r)   r*   r   r   r   r+   r,   s     r/   r*   z!PlaceholderCacheTestCase.tearDown  s)    +%%&78r0   c                     dj                  t        d      | j                  j                  dd      }| j	                  t        | j                  dd      |       y )NzB{prefix}|placeholder_cache_version|id:{id}|lang:{lang}|site:{site}CACHE_PREFIXr7   rw   )prefixidlangsite)formatr    rd   rA   rz   r   )r-   cache_version_keys     r/   &test_get_placeholder_cache_version_keyz?PlaceholderCacheTestCase.test_get_placeholder_cache_version_key  s]    PWW&~6&&))	 X  	 	.t/B/BD!L	
r0   c                     t        | j                  dd      \  }}t        | j                  dd       t        | j                  dd      \  }}| j                  ||       y )Nr7   rw   )r   rd   r   assertGreater)r-   initial_versions       r/   ,test_set_clear_get_placeholder_cache_versionzEPlaceholderCacheTestCase.test_set_clear_get_placeholder_cache_version  sT    3D4G4GqQ
 3 3T1=3D4G4GqQ
7G,r0   c           	         t        | j                  dd      \  }}dj                  t        d      | j                  j                  ddt               |d      }t        | j                  dd||d       t        | j                  dd| j                        }| j                  ||       t        | j                  dd| j                        }t        | j                  dd| j                        }| j                  ||       t        | j                  dd| j                        }| j                  ||       dj                  t        d      | j                  j                  ddt               |d	      }| j                  ||       y )
Nr7   rw   za{prefix}|render_placeholder|id:{id}|lang:{lang}|site:{site}|tz:{tz}|v:{version}|country-code:{cc}r   r   )r   r   r   r   tzr   cc)vary_on_listdurationr>   r   )r   rd   r   r    rA   r!   r   r
   r   rz   re   r   r   r   )r-   r   r   desired_key
actual_keyen_keyde_key	en_us_keys           r/   test_get_placeholder_cache_keyz7PlaceholderCacheTestCase.test_get_placeholder_cache_key  s    >q!
 z  A  A">2""%% " A 
 	'q'WX	
 0q$//

 	[1+q$//
 ,q$//
 	FF+.q$*<*<
	 	FI.y  A  A">2""%% " A 
 	K0r0   c                    | j                  | j                        }t        d| j                  i      }| j                  | j                        }t        d| j                  i      }| j                  | j                        }t        d| j                  i      }|j                  | j                  |dd      }|j                  | j                  |dd      }|j                  | j                  |dd      }	| j                  `| j                  | j                        }
t        d| j                  i      }|
j                  | j                  |dd      }| j                  ||       t        | j                  dd|| j                         t        | j                  dd| j                        }| j                  ||       t        | j                  dd|| j                         t        | j                  dd| j                        }| j                  ||       t        | j                  dd|| j                         t        | j                  dd| j                        }| j                  ||       t        | j                  dd|	| j                         t        | j                  dd| j                        }| j                  ||       y )Nrf   r7   ^  )widthr>   rw   )r   r   r   r   r   r   rd   r   r   re   r   r   r   rz   )r-   en_renderer
en_contexten_us_rendereren_us_contexten_uk_rendereren_uk_context
en_contenten_us_contenten_uk_contentde_renderer
de_context
de_contentcached_en_contentcached_de_contentcached_en_us_contentcached_en_uk_contents                    r/   test_set_get_placeholder_cachez7PlaceholderCacheTestCase.test_set_get_placeholder_cache  s   //@4??


 2243E3EF4--

 2243E3EF4--
 !33T 4 

 '99C : 
 '99C : 
 .//@4??


 !33T 4 

 	J
3d114JX1q$//
 	*J7d114JX1q$//
 	-/@Aq-9K9K	
  5q$*<*< 
 	-/CDq-9K9K	
  5q$*<*< 
 	02FGr0   c                     | j                  d      5  | j                  d      }| j                  | j                        }d|j                  d<   t        d|i      }|j                  | j                  |dd	      }t        | j                  dd
||       t        | j                  dd
|      }t        |      }| j                  d|vxr |dk(         t        | j                  dd
|      }| j                  ||       ddd       y# 1 sw Y   yxY w)zt
        This is for testing that everything continues to work even when the
        cache-keys are hashed.
        ڴsuper_lengthy_prefixsuper_lengthy_prefixsuper_lengthy_prefixsuper_lengthy_prefixsuper_lengthy_prefixsuper_lengthy_prefixsuper_lengthy_prefixsuper_lengthy_prefixsuper_lengthy_prefix)CMS_CACHE_PREFIXr   PUSUSUSUSUSUSUSUSUSUSUSUSUSUSUSUSUSUSUSUSUSUSUSUSUSUSUSUSUSUSUSUSUSUSUSUSUSUSUSUSr   rf   r7   r  )languager  rw   r      N)r   rT   r   r   r   r   r   rd   r   r
   lenr}   r   rz   )r-   en_crazy_requesten_crazy_rendereren_crazy_contexten_crazy_contentcrazy_cache_key
key_lengthcached_en_crazy_contents           r/   /test_set_get_placeholder_cache_with_long_prefixzHPlaceholderCacheTestCase.test_set_get_placeholder_cache_with_long_prefix  s2    ]],F]G 	H#//7 $ 9 9$// J9B!!"56&	3C'DE0CC## 	  D   "##T1.>@P
 9##T1.>O _-JOO$O;Q
c@Q
 '<##T1.>'# -/FG=	H 	H 	Hs   C(DD)r   r   r   r2   r*   r   r   r  r  r'  r   r   s   @r/   r   r   g  s-    I@
-+1ZGHR$Hr0   r   )3r   django.confr   django.templater   sekizai.contextr   cms.apir   r   r   	cms.cacher	   cms.cache.placeholderr
   r   r   r   r   r   r   cms.exceptionsr   
cms.modelsr   cms.plugin_poolr   ,cms.test_utils.project.placeholderapp.modelsr   <cms.test_utils.project.pluginapp.plugins.caching.cms_pluginsr   r   r   r   r   r   r   cms.test_utils.testcasesr   cms.test_utils.util.fuzzy_intr   cms.toolbar.toolbarr   cms.toolbar.utilsr   cms.utils.confr    cms.utils.helpersr!   r#   r   rP   r0   r/   <module>r9     sy       # * @ @ /   3  ' A   1 2 * 1 * /}-K }-@VH{ VHr0   