
    Bh                     ,   d dl Z d dlZ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 d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZmZ d dlmZ d dl m!Z! d dl"m#Z#m$Z$ d dl%m&Z& d dl'm(Z(m)Z)m*Z*m+Z+m,Z, d dl-m.Z. d dl/m0Z0m1Z1m2Z2 d dl3m4Z4 d dl5m6Z6 d dl7m8Z8 d dl9m:Z:m;Z;m<Z< d dl=m>Z>  ej~                  e@      ZAde(dee(ddf   fdZB G d d      ZC G d d       ZD G d! d"eD      ZE G d# d$eD      ZF G d% d&eE      ZG G d' d(e      ZHy))    N)OrderedDict)	Generator)partial)AnyOptionalUnion)flatten_context)settings)Site)HttpRequest)Context)cached_property)import_string)SafeText	mark_safe)override)ExceptionReporter)get_placeholder_cacheset_placeholder_cache)PlaceholderNotFound)	CMSPluginPagePageContentPlaceholderStaticPlaceholder)
PluginPool)get_placeholder_toolbar_jsget_plugin_toolbar_jsget_toolbar_from_request)get_language_from_request)get_cms_setting)has_plugin_permission)get_toolbar_plugin_structrescan_placeholders_for_objrestore_sekizai_context)get_plugin_restrictionsparent_pluginreturnc              #   h   K   |  | j                   xs g D ]  }t        |      E d {     y 7 wN)child_plugin_instances_unpack_plugins)r'   plugins     D/home/dcms/DCMS/lib/python3.12/site-packages/cms/plugin_rendering.pyr,   r,   *   s7     
66<" +"6***+*s   &202c                   J    e Zd ZdZ	 	 	 ddedededededefdZd	 Z	d
 Z
d Zy)RenderedPlaceholderlanguagesite_idcachededitableplaceholderhas_contentr6   r2   r3   r4   r5   r7   c                 X    || _         || _        || _        || _        || _        || _        y r*   r1   )selfr6   r2   r3   r4   r5   r7   s          r.   __init__zRenderedPlaceholder.__init__:   s0     ! &&    c                 4    | j                   |j                   k(  S r*   )r6   r9   others     r.   __eq__zRenderedPlaceholder.__eq__J   s     5#4#444r;   c                 &    | j                  |       S r*   )r?   r=   s     r.   __ne__zRenderedPlaceholder.__ne__P   s    ;;u%%%r;   c                 ,    t        | j                        S r*   )hashr6   r9   s    r.   __hash__zRenderedPlaceholder.__hash__S   s    D$$%%r;   N)FFF)__name__
__module____qualname__	__slots__r   strintboolr:   r?   rA   rE    r;   r.   r0   r0   0   sb    I !' ' ' 	'
 ' ' ' 5&&r;   r0   c                   f   e Zd ZU dZeed<   dZeed<   defdZ	e
defd       Ze
defd	       Ze
d
        Ze
d        Ze
defd       Ze
defd       Zdee   fdZ	 ddedee   fdZddZddedee   fdZdedefdZdededee   fdZdefdZdee   fdZ dee   fdZ!dee"   fdZ#y)BaseRendererFload_structure placeholder_edit_templaterequestc                     || _         i | _        i | _        i | _        t	               | _        t	               | _        i | _        d | _        y r*   )	rS   _cached_plugin_classes_placeholders_content_cache_placeholders_by_page_cacher   _rendered_placeholders_rendered_static_placeholders _rendered_plugins_by_placeholder_plugins_with_perms)r9   rS   s     r.   r:   zBaseRenderer.__init__[   sE    &(#+-(+-(&1m#-8]*02-#' r;   r(   c                 .    | j                   j                  S r*   )rS   current_pagerD   s    r.   r]   zBaseRenderer.current_pagee   s    ||(((r;   c                 T    t         j                  j                  | j                        S r*   )r   objectsget_currentrS   rD   s    r.   current_sitezBaseRenderer.current_sitei   s    ||''55r;   c                 ,    t        | j                        S r*   )r   rS   rD   s    r.   toolbarzBaseRenderer.toolbarm   s    '55r;   c                 .    | j                   j                  S r*   )rc   	templatesrD   s    r.   re   zBaseRenderer.templatesq   s    ||%%%r;   c                 6    dd l }|j                  j                  S )Nr   )cms.plugin_poolplugin_pool)r9   cmss     r.   rh   zBaseRenderer.plugin_poolu   s    ***r;   c                 ,    t        | j                        S r*   )r    rS   rD   s    r.   request_languagezBaseRenderer.request_language{   s    (66r;   c                    | j                   d| j                  j                  }t        t        | j
                  j                  d      }|D cg c]  } ||j                        r| c}| _         | j                   S c c}w )Nadd)userpermission_type)plugin_type)r[   rh   registered_pluginsr   r"   rS   rn   value)r9   rq   can_add_pluginr-   s       r.   get_plugins_with_permsz#BaseRenderer.get_plugins_with_perms   sw    ##+!%!1!1!D!D$%DLL,=,=uN
 1(!fll; (D$ '''(s   A=Nr6   pagec                     t        | j                         |j                  |      }| j                  j                  }|j                  d|i      S )N)pluginsslotru   plugin_menu)r#   rt   rx   re    placeholder_plugin_menu_templaterender)r9   r6   ru   ry   plugin_menu_templates        r.   get_placeholder_plugin_menuz(BaseRenderer.get_placeholder_plugin_menu   sN     0//1!!

  $~~NN#**M;+GHHr;   c                     | j                   j                  |j                  |      }|D cg c]  }|j                   }}|| j                   j	                         z   }t        ||      }|S c c}w )N)r6   allowed_plugins)rh   get_all_pluginsrx   rF   get_system_pluginsr   )r9   r6   ru   rw   clsplugin_typesr   placeholder_toolbar_jss           r.   r   z'BaseRenderer.get_placeholder_toolbar_js   sn    ""22;3C3CTJ07888&)9)9)L)L)NN!;#+"
 &% 9s   A,r-   c                     | j                   j                  |j                  i       }t        |||      \  }}t	        |||      }|S )N)r-   ru   restrictions_cache)childrenparents)rZ   
setdefaultplaceholder_idr&   r   )r9   r-   ru   placeholder_cachechild_classesparent_classescontents          r.   r   z"BaseRenderer.get_plugin_toolbar_js   s[     AALL!!2
 )@0)
%~
 (""

 r;   c                     |j                   }|| j                  vr(| j                  j                  |      | j                  |<   | j                  |   S r*   )rp   rU   rh   
get_plugin)r9   r-   rp   s      r.   get_plugin_classzBaseRenderer.get_plugin_class   sR    ((d9997;7G7G7R7R8D''4 **;77r;   r2   templatec                 >    ddl m}  || j                  |||      }|S )Nr   )get_plugins)rS   r6   r   lang)cms.utils.pluginsr   rS   )r9   r6   r2   r   r   rw   s         r.   get_plugins_to_renderz"BaseRenderer.get_plugins_to_render   s(     	2LL#	
 r;   c                 Z    g i i d}| j                   j                  |j                  |      S )N)rw   plugin_parentsplugin_children)rZ   getpk)r9   r6   blanks      r.   get_rendered_plugins_cachez'BaseRenderer.get_rendered_plugins_cache   s1     !!

 4488OOr;   c                     t        | j                  j                               }|D cg c]  }|j                   c}S c c}w r*   )listrX   valuesr6   r9   renderedrs      r.   get_rendered_placeholdersz&BaseRenderer.get_rendered_placeholders   s3    33::<='/0!000s   >c                     t        | j                  j                               }|D cg c]  }|j                  s|j                   c}S c c}w r*   )r   rX   r   r5   r6   r   s      r.   "get_rendered_editable_placeholdersz/BaseRenderer.get_rendered_editable_placeholders   s9    33::<='/>!1::>>>s
   AAc                 H    t        | j                  j                               S r*   )r   rY   r   rD   s    r.    get_rendered_static_placeholdersz-BaseRenderer.get_rendered_static_placeholders   s    D66==?@@r;   r*   )$rF   rG   rH   rP   rL   __annotations__rR   rJ   r   r:   r   r   r]   r   ra   rc   re   r   rh   rk   r   r   rt   r   r   r}   r   r   typer   r   r   r   r   r   r   rM   r;   r.   rO   rO   W   s~    ND %'s'( ( )d ) ) 6d 6 6 6 6 & & +Z + +
 7# 7 7(Y ( @D	I&	I.6tn	I	&I Xd^  8y 8T 8&25AI#Pk P14+< 1?D4E ?A$7H2I Ar;   rO   c                       e Zd ZdZdZdef fdZd Z	 	 	 	 	 	 d!dede	d	e
e   d
e
e   dedede
e   de
e   fdZ	 d"ded
e
e   defdZ	 	 d#dede	dedefdZ	 	 	 d$dede	ded
e
e   def
dZ	 d"dede	fdZ	 	 d%dede	de
e   defdZdede	dededef
dZ	 	 d&ded	edede
e   deeeef   ddf   f
dZd Zd"dZd%d Z  xZ!S )'ContentRendererz<template class="cms-plugin cms-plugin-start cms-plugin-{pk}" data-cms-placeholder="{placeholder}"></template>{content}<template class="cms-plugin cms-plugin-end cms-plugin-{pk}"></template>zi{content} <div class="cms-placeholder cms-placeholder-{placeholder_id}"></div>{plugin_js}{placeholder_js}rS   c                 l    t         |   |       t        | j                  j                        | _        y r*   )superr:   rL   rc   edit_mode_active_placeholders_are_editable)r9   rS   	__class__s     r.   r:   zContentRenderer.__init__   s'    !*.t||/L/L*M'r;   c                 v    t        d      sy| j                  j                  j                  ry| j                   S )NPLACEHOLDER_CACHEF)r!   rS   rn   is_staffr   rD   s    r.   placeholder_cache_is_enabledz,ContentRenderer.placeholder_cache_is_enabled   s3    23<<%%2222r;   Nr6   contextr2   ru   r5   	use_cachenodelistwidthc	           
      N   ddl m}	 |xs | j                  }|xr | j                  }|r|s|j                  r| j                         }nd}|r| j                  ||      }
nd }
|
t        ||
d          t        |
d         S |j                          |xs |j                  }|r|j                         nd }|r||d<   |j                  |      j                         D ]  \  }}||vs|||<    |r |	|      }| j                  |||||      }	 d	j                  |      }|s|r|j1                  |      }|rA|j3                         d}t5        ||| j6                  j8                  || j:                         t=        ||| j6                  j8                  ||t?        |            }|j8                  | j@                  vrA| j*                  jB                  s| | j*                  _!        || j@                  |j8                  <   |r|jE                  dd       }|rtG        |j*                  jH                        ntK        jL                         5  | jO                  ||      }d d d        |d<    | jP                  jR                  di |}|jU                          t        |      S # t         $ rp}t#        j$                         |d
<   | j'                  d|||      }t)        d      s/| j*                  j,                  s| j*                  j.                  s|d Y d }~d }~ww xY w# 1 sw Y   xY w)Nr   )WatcherF)r6   r2   sekizair   r   )r2   r   r5   r   rQ   exc_infozrendering placeholderCATCH_PLUGIN_500_EXCEPTION)r   r   )r   r3   r   rS   )r6   r2   r3   r4   r5   r7   rS   ru   rM   )+sekizai.helpersr   rk   r   cache_placeholderr   _get_cached_placeholder_contentr%   r   pushdefault_widthget_templateget_extra_contextitemsrender_pluginsjoin	Exceptionsysr   render_exceptionr!   rc   r   preview_mode_activer{   get_changesr   ra   r   rS   r0   rL   rX   _cache_disabledr   r   toolbar_language
contextlibnullcontext get_editable_placeholder_contextrR   formatpop)r9   r6   r   r2   ru   r5   r   r   r   r   cached_valuer   keyrr   watcherplugin_contentplaceholder_contenter   rendered_placeholderrS   datas                         r.   render_placeholderz"ContentRenderer.render_placeholder   s.    	,4t44? ? ?X+*G*G99;II??'! @ L
  L# $G\)-DE\)455222*.4$$&D$GG &77AGGI 	%JC'!$	% g&G,, - 
	&"$''."9 #x"*//'":."..0G ")),,  3#%%((01 
 >>!<!<<<<//
 4=},:ND''7kk)T2G  00(446U <<[t<TU 2DO"G$"@"@"G"G"O$"O,--u  
	&"%,,.GJ"&"7"7'+x# ##?@55 LL<<%
	&dU Us%   J L	L(A%LLL$r(   c                       j                  |      } j                  |      } fd|d   D        }dj                  |      ||j                  d}|S )Nc              3   D   K   | ]  }j                  |         yw)r   N)r   ).0r-   ru   r9   s     r.   	<genexpr>zCContentRenderer.get_editable_placeholder_context.<locals>.<genexpr>s  s)      "
 &&vD&9"
s    rw   rQ   )	plugin_jsplaceholder_jsr   )r   r   r   r   )r9   r6   ru   r   r   plugin_toolbar_js_bitsr   s   ` `    r.   r   z0ContentRenderer.get_editable_placeholder_contextn  se     !;;KH!%!@!@d!S"
+I6"

 !784)nn

 r;   rx   inheritc                 8   | j                   j                         }| j                  r1t        |t        t        d       f      r| j                  |||||      S |t        d| d      t        |      j                  |      }| j                  ||||dd       }|S )N)r   r5   z!No object found for placeholder ''Tr   ru   r5   r   r   )rc   
get_objectr]   
isinstancer   r   render_page_placeholderr   r$   r   r   )	r9   rx   r   r   r   r5   current_objr6   r   s	            r.   render_obj_placeholderz&ContentRenderer.render_obj_placeholder~  s     ll--/*[;T
:S"T//!! 0   %(I$q&QRR1+>BB4H)) * 
 r;   c                    | j                   sy|xs | j                   }| j                  }|j                  |vr| j                  |       	 ||j                     |   }	| j	                  |	|||dd       }
|xrD |
 xr? |j                  xr1 |j                  j                  |v xr | j                  j                   }|r!| j                  ||d|j                  d d      }
|	r2|r0| j                  r$| j                  |	j                     j                  }nt        |
      }|s|r|
|j                  |      z   S |
S # t
        $ r d}
d }	Y w xY w)NrQ   Tr   F)r   ru   r   r5   )r]   rW   r   _preload_placeholders_for_pager   KeyErrorparentrc   r   r   r   rX   r7   rL   r{   )r9   rx   r   r   ru   r   r5   r]   r   r6   r   should_inheritr7   s                r.   r   z'ContentRenderer.render_page_placeholder  s      0t00 <<??"33 //=	+LOO<TBK
 --!! . G  
2
2##
2 ##&&*;;
2 LL111 	  22!(( 3 G H)H)H 55knnEQQK w-KxX__W555e  	GK	s   
D7 7EEstatic_placeholderc                 ^   | j                   j                  }| j                  j                  r"|j	                  d      r|j
                  }d}d}n|j                  }d}d}d|_        | j                  |||||      }|j                  | j                  vr|| j                  |j                  <   |S )Ncms.edit_static_placeholderTF)r   r5   r   r   )rS   rn   rc   r   has_permdraftpublic	is_staticr   r   rY   )	r9   r   r   r   rn   r6   r5   r   r   s	            r.   render_static_placeholderz)ContentRenderer.render_static_placeholder  s     ||  <<((T]]).
 -22KHI,33KHI !%)) * 
   (J(JJ # .."%% r;   instancec                    ||d<   ||j                   }|j                         \  }}|r|j                  syt        |||      }|j	                  |||j
                        }t        |      }|j                  |||      }| j                  j                  |      }|j	                  |      }t        d      D ]  }	t        |	      }
 |
||||      } |r| j                  j                  |j                  |j                  ||j                         }| j"                  j%                  |j                  i       }|j%                  dg       j'                  |       t)        |      S )N_last_pluginrQ   PLUGIN_PROCESSORSr   r6   r   positionrw   )r6   get_plugin_instancerender_pluginPluginContextr{   rx   r	   _get_render_templatere   get_cached_templater!   r   plugin_edit_templater   r   r   r  rZ   r   appendr   )r9   r   r   r6   r5   r-   template_namer   r   path	processorr   s               r.   r  zContentRenderer.render_plugin  s_    #+"..K#779&v33  ;?--;3C3CD!'*33GX{S>>55mD//'*#$78 	ID%d+I+wHG	I //66;;$33!**	 7 G !% E E P P! ((B7>>xH!!r;   actionc                 p   |d   \  }}}|j                   j                  j                  j                  }|j                   d| d| d| d| d|j                    d}	d|v rE|d   }
	 |
j                  j                   d	|
j                          }|	d
|
j                   d| dz  }	t        j                  |	|||f       |rt        j                  r"t        |d   |||      }|j                         }nd}d|	 d}d|v r|d   }
| j                  j                  |
j                  |
j                   ||
j"                        }| j$                  j'                  |j                  i       }|j'                  dg       j)                  |
       d| | dS y# t        $ r |
j                  j                   }Y %w xY w)Nr   z: z when z "z" on z	 object ""r    z
, plugin #)r   rS   rQ   z*<h2 class="cms-rendering-exception-title">z</h2>r  rw   z%<div class="cms-rendering-exception">z</div>)sourcer   _metaverbose_namerF   get_short_descriptionr   r   loggererrorr
   DEBUGr   get_traceback_htmlr  r   r   r  rZ   r   r	  )r9   r  r   r6   r5   excrr   	tracebackplaceholder_source_objmessager   descriptionreporterhtmlheadingr   s                   r.   r   z ContentRenderer.render_exception;  s    !(
 3UI!,!3!3!=!=!C!C!P!P||nBugVF82k]%%&i0B0B/C1F 	 W$~.H?~~2231X5S5S5U4VW 
 HKK=;-qAAGWUI'>?~~,WY-?eYW224B7)5QG(">233::{{ ( 7 7#%..	 ;  %)$I$I$T$TNNB%! ",,Y;BB8L:7)D6PP7  ?!)!<!< =?s   &)F  F54F5r   c              #   |   K   | j                  |||      }|D ]  }||_        | j                  ||||       ! y w)N)r6   r   r2   )r   _placeholder_cacher  )r9   r6   r2   r   r5   r   rw   r-   s           r.   r   zContentRenderer.render_pluginsg  sX      ,,# - 
  	MF(3F%$$VWk8LL	Ms   :<c                 0   | j                   j                  }| j                  j                  |i       }|j                  |i       }|j                  |vr*t	        |||| j
                        }||||j                  <   |j                  |j                        S )z
        Returns a dictionary mapping placeholder content and sekizai data.
        Returns None if no cache is present.
        )r   r3   rS   )ra   r   rV   r   r   rS   r   )r9   r6   r2   r3   
site_cachelanguage_cacher   s          r.   r   z/ContentRenderer._get_cached_placeholder_contenty  s     ##&&55@@"M
 $..x<>>/0	L ' 2>{~~.!!+..11r;   c                 t   | j                   j                         }t        |t              r.|j                  |k(  rt
        j                  j                  |      S |r| j                   j                  s| j                   j                  r;|j                  d      j                  | j                        j                         }n4|j                  j                  | j                        j                         }|rt
        j                  j                  |      S t
        j                  j                         S |j!                  | j                  d      x}rHt        j                  j"                  j%                  ||       |j'                         j)                         S t
        j                  j                         S )Nadmin_manager)managerr2   F)fallback)rc   r   r   r   ru   r   r_   get_for_objr   r   pagecontent_setcurrent_contentrk   firstfilternoneget_content_objfieldset_cached_valuerescan_placeholdersr   )r9   ru   slotstoolbar_objpage_contents        r.   _get_content_objectz#ContentRenderer._get_content_object  sm   ll--/k;/K4D4D4L&&22;??||//4<<3P3P(((A$_d.C.C_DUW   $33::!22  ;  %' 
   ##//= !((--/
 "11!!E 2 
 
\ 
 ""33L$G335<<>>&&++--r;   c                 B   ddl m} | j                  ||      }|r|D cg c]  }|j                   }}nM| j                  j
                  s5|j                         D cg c]  }|j                  s|j                   }}ng }| j                         r/| j                  }|D 	cg c]  }	 ||	| j                        |	 }
}	n|}
|
r. || j                  |
|j                         | j                         |D cg c])  }t        |dd      s|j                  |v r|j                  + }}|j                  r |r| j                  |j                  |d       i }|D ]  }	||	_        |	||	j                  <    || j"                  |j$                  <   yc c}w c c}w c c}	w c c}w )	z
        Populates the internal plugin cache of each placeholder
        in the given page if the placeholder has not been
        previously cached.
        r   )assign_plugins)r5  N)rS   placeholdersr   r   _plugins_cacheT)ru   r5  r   )r   r:  r8  rx   rc   r   get_declared_placeholdersr   r   r   rk   rS   r   getattrr   r   ru   rW   r   )r9   ru   r5  r   r:  r;  plslots_w_inheritance_cached_contentr6   placeholders_to_fetchplaceholders_to_inheritpage_placeholder_caches                r.   r   z.ContentRenderer._preload_placeholders_for_page  s    	5//E/B 6B"Br277"B"B.. #'"@"@"B#bjj# #
 #%,,."BBO
 $0%";0E0EFN %! % %1! 2**,**	 ##
2/6.. GG#
 #
 ;;2//[[- 0  "$' 	CK#K7B";#3#34	C
 5K((1u #C#%(#
s   FF0F#F8.F)NNFFNNr*   )NT)NNT)NF)FN)"rF   rG   rH   r  rR   r   r:   r   r   r   r   rJ   r   rL   r   rK   r   dictr   r   r   r   r   r   r  r   r   r   r   r   r   r8  r   __classcell__r   s   @r.   r   r      sE   	R 	j 
N N3 #'#"&#y. y. y. 3-	y.
 tny. y. y. 3-y. }y.x @D&.6tn	*      	   N  $II I 	I
 tnI IX QU "3 >E L .2,"," ," k*	,"
 ,"\**$+*:E*QU*	*b "&M M M
 M 3-M 
53't3	4M$26.>GKr;   r   c                   N     e Zd ZdZdZ fdZd	dZd	dZd	dZd	dZ	d	dZ
 xZS )
StructureRendererTz
        <template data-cms id="cms-plugin-child-classes-{placeholder_id}" type="text/cms-template">
            {plugin_menu_js}
        </template>
        {plugin_js}{placeholder_js}
        c              /   d   K   t        |   |i |}|D ]  }t        |      E d {     y 7 wr*   )r   r   r,   )r9   argskwargsrw   r-   r   s        r.   r   z'StructureRenderer.get_plugins_to_render  s;     '/@@ 	/F&v...	/.s   #0.0c                    | j                  |||      }dj                  |      }| j                  ||      }t        ||| j                  j
                  dd      }|j
                  | j                  vr|| j                  |j
                  <   | j                  j                  |j
                  || j                  ||      |      }t        |      S )Nr2   ru   rQ   FT)r6   r2   r3   r4   r5   r   )r   r   plugin_menu_jsr   )r   r   r   r0   ra   r   rX   rR   r   r}   r   )	r9   r6   r2   ru   rendered_pluginsplugin_js_outputr   r   placeholder_structure_jss	            r.   r   z$StructureRenderer.render_placeholder  s    ..( / 
 77#34!%!@!@d!S2#%%(( 
 >>!<!<<:ND''7#'#A#A#H#H&>>&;;Kd;S1	 $I $
  122r;   c                 *    | j                  |||      S )NrN  )r   )r9   ru   r6   r2   s       r.   r   z)StructureRenderer.render_page_placeholder&  s    &&{XD&QQr;   c                 $   | j                   j                  }|j                  d      sy|xs | j                  }|j                  }d|_        | j                  ||      }|j                  | j                  vr|| j                  |j                  <   |S )Nr   rQ   Tr)  )	rS   rn   r   rk   r   r   r   r   rY   )r9   r   r2   rn   r6   r   s         r.   r   z+StructureRenderer.render_static_placeholder)  s    ||  }}:;4t44(.. $))+)I  (J(JJ # .."%% r;   c                     | j                   j                  |j                  i       }|j                  dg       j                  |       | j	                  ||      S )Nrw   r   )rZ   r   r   r	  r   )r9   r   ru   r   s       r.   r  zStructureRenderer.render_plugin>  sW     AALL##R
 	$$Y3::8D))()>>r;   c              #      K   |r|j                         nd }| j                  |||      }|D ]  }||_        | j                  ||         y w)Nr   )r   r   r"  r  )r9   r6   r2   ru   r   rw   r-   s          r.   r   z StructureRenderer.render_pluginsE  sY     *.4$$&D,,[(HM 	8F(3F%$$V$$77	8s   AAr*   )rF   rG   rH   rP   rR   r   r   r   r   r  r   rF  rG  s   @r.   rI  rI    s/    N!/34R*?8r;   rI  c                   (     e Zd ZdZdZd fd	Z xZS )LegacyRendererTa!  
        {content}
        <div class="cms-placeholder cms-placeholder-{placeholder_id}"></div>
        <template data-cms id="cms-plugin-child-classes-{placeholder_id}" type="text/cms-template">
            {plugin_menu_js}
        </template>
        {plugin_js}{placeholder_js}
        c                 T    t         |   ||      }| j                  ||      |d<   |S )Nr   rO  )r   r   r}   )r9   r6   ru   r   r   s       r.   r   z/LegacyRenderer.get_editable_placeholder_contextY  s<    ':;M$($D$Dd %E %
 ! r;   r*   )rF   rG   rH   rP   rR   r   rF  rG  s   @r.   rX  rX  N  s    N! r;   rX  c                   $     e Zd ZdZd fd	Z xZS )r  z
    This subclass of template.Context automatically populates itself using
    the processors defined in CMS_PLUGIN_CONTEXT_PROCESSORS.
    Additional processors can be specified as a list of callables
    using the "processors" keyword argument.
    c                     t        |      }t        | 	  |       |sg }t        d      D ]&  }t	        |      }| j                   ||||              ( |D ]  }| j                   ||||               y )NPLUGIN_CONTEXT_PROCESSORS)r	   r   r:   r!   r   update)	r9   dict_r   r6   
processorscurrent_appr  r  r   s	           r.   r:   zPluginContext.__init__i  s    &J#$?@ 	@D%d+IKK	(K>?	@ $ 	@IKK	(K>?	@r;   )NN)rF   rG   rH   __doc__r:   rF  rG  s   @r.   r  r  a  s    @ @r;   r  )Ir   loggingr   collectionsr   collections.abcr   	functoolsr   typingr   r   r   classytags.utilsr	   django.confr
   django.contrib.sites.modelsr   django.httpr   django.templater   django.utils.functionalr   django.utils.module_loadingr   django.utils.safestringr   r   django.utils.translationr   django.views.debugr   cms.cache.placeholderr   r   cms.exceptionsr   
cms.modelsr   r   r   r   r   rg   r   cms.toolbar.utilsr   r   r   	cms.utilsr    cms.utils.confr!   cms.utils.permissionsr"   cms.utils.placeholderr#   r$   r%   r   r&   	getLoggerrF   r  r,   r0   rO   r   rI  rX  r  rM   r;   r.   <module>rz     s      
 # %  ' ' ,   , # # 3 5 7 - 0 N . S S & 
 0 * 7 
 6			8	$+9 +9dD;P1Q +$& $&NCA CAL]Kl ]K@N8 N8b_ &@G @r;   