
    Bhjm                     j   d dl mZ d dlmZ d dlmZmZ d dlmZ d dl	m
Z
 d dlmZmZmZmZ d dlmZmZ d dlmZ d d	lmZ d d
lmZmZmZmZ d dlmZm Z 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+m,Z, d dl-m.Z. d dl/m0Z0 d dl1m2Z2m3Z3 d dl4m5Z5m6Z6 d dl7m8Z8m9Z9 d dl:m;Z; dZ<	 dZ=	 dZ>dZ?	 dZ@dZAdZBdZCdZDdZEd ZFd!ZGd"ZHd#ZId$ZJd%ZKd&ZLd'ZMd(ZNd)ZOd*ZPe)j                   G d+ d,e'             ZRe)j                   G d- d.e'             ZSe)j                   G d/ d0e'             ZTe)j                   G d1 d2e'             ZUy3)4    )settings)admin)get_permission_codenameget_user_model)AnonymousUser)Site)NoReverseMatchResolver404resolvereverse)gettext_lazyoverride)can_change_page)TEMPLATE_INHERITANCE_MAGIC)PagePageContentPageTypePlaceholder)REFRESH_PAGE
ButtonListTemplateItem)get_object_edit_urlget_object_preview_urlget_object_structure_url)
CMSToolbar)toolbar_pool)get_language_from_requestpage_permissions)RemovedInDjangoCMS51Warning)get_cms_setting)get_language_dictget_language_tuple)user_can_change_pageuser_can_delete_page)add_url_parametersadmin_reverse)DefaultLanguageChangerz
admin-menuzlanguage-menuzTemplate Menu Breakpageadd_pagezPage Menu First BreakzPage Menu Second BreakzPage Menu Third BreakzPage Menu Fourth BreakzPage Menu Last BreakzHistory Menu BreakzManage Pages BreakzAdmin Sites BreakzAdministration BreakzClipboard BreakzUser Settings BreakzAdd page language BreakzRemove page language BreakzCopy page language BreakzToolbar disable BreakzShortcuts Breakc                   f     e Zd ZdZd Z fdZd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd ZddZ xZS )PlaceholderToolbarzk
    Adds placeholder edit buttons if placeholders or static placeholders are detected in the template
    c                 :    | j                   j                  | _        y Nrequestcurrent_pager(   selfs    @/home/dcms/DCMS/lib/python3.12/site-packages/cms/cms_toolbars.pypopulatezPlaceholderToolbar.populateM       LL--	    c                 b    t         |           | j                          | j                          y r-   )superpost_template_populateadd_wizard_buttonrender_object_editable_buttons)r2   	__class__s    r3   r9   z)PlaceholderToolbar.post_template_populateP   s&    &( ++-r6   c                    ddl m} t        d      }| j                  j                  }| j
                  r| j
                  j                  nd}t         ||| j
                               }dj                  t        d      || j                  j                        }| j                  j                  ||| j                  j                  |t               y )	Nr   )entry_choicesCreate z&{url}?page={page}&language={lang}&editcms_wizard_create)urlr(   lang)sidedisabledon_close)cms.wizards.wizard_poolr>   _r/   userr(   pklistformatr&   toolbarsite_languageadd_modal_buttonRIGHTr   )r2   r>   titlerI   page_pkrE   rB   s          r3   r:   z$PlaceholderToolbar.add_wizard_buttonU   s    9(||  "&))$)),,M$		:;;6==12++ > 

 	%%eS+/<<+=+=/7/; 	& 	=r6   c                    | j                          | j                  j                  sy | j                  j                  r | j	                         r| j                          | j                  j                  s+t        d      r | j	                         r| j                          | j                         r| j                          y y )N	TEMPLATES)init_placeholdersrM   objcontent_mode_active_can_add_buttonadd_edit_buttonpreview_mode_activer    add_preview_button_can_add_structure_modeadd_structure_moder1   s    r3   r;   z1PlaceholderToolbar.render_object_editable_buttonsg   s     || <<++0D0D0F  "||//OK4PUYUiUiUk##%'')##% *r6   c                 ~   | j                   }| j                  }|j                  rOd|j                  v rA|j                  j	                  d      }t
        j                  j                  |      | _        y |j                  r|j                  s|j                  }n|j                         }|j                         | _        y )Nzplaceholders[])pk__in)r/   rM   _asyncGETgetlistr   objectsfilterplaceholdersstructure_mode_activeuses_legacy_structure_modestructure_rendererget_content_rendererget_rendered_placeholders)r2   r/   rM   placeholder_idsrenderers        r3   rU   z$PlaceholderToolbar.init_placeholdersx   s    ,,,,>>.'++=%kk112BCO + 3 3 : :/ : RD,,W5W5W #55"779 ( B B DDr6   c                 t    | j                   r,t        | j                  j                  | j                         ryy)Nr(   TF)r(   r#   r/   rI   r1   s    r3   _has_page_change_permz(PlaceholderToolbar._has_page_change_perm   s'    99-dll.?.?diiPr6   c                 Z      j                   syt         fd j                   D              S )NFc              3   l   K   | ]+  }|j                  j                  j                        r| - y wr-   )has_change_permissionr/   rI   ).0phr2   s     r3   	<genexpr>zBPlaceholderToolbar._has_placeholder_change_perm.<locals>.<genexpr>   s1      
''(9(9: 
s   14)re   anyr1   s   `r3   _has_placeholder_change_permz/PlaceholderToolbar._has_placeholder_change_perm   s/       
**
 
 	
r6   c                 H    | j                         ry| j                         ryy)NTF)ro   rw   r1   s    r3   rX   z"PlaceholderToolbar._can_add_button   s#    %%'..0r6   c                     | j                   j                  j                  d      sy| j                  r'| j                  j                  s| j                         ry| j                         ryy)Nzcms.use_structureFT)r/   rI   has_permr(   application_urlsro   rw   r1   s    r3   r\   z*PlaceholderToolbar._can_add_structure_mode   sQ    ||  ))*=>99TYY77D<V<V<X..0r6   c                 $   t        | j                  j                  | j                  j                        }t	        | j                  j
                        }|j                  t        d      |dg d       | j                  j                  |       y )NlanguagerD   EditF)cms-btnzcms-btn-actionzcms-btn-switch-editrB   rE   extra_classes)	r   rM   rV   request_languager   rP   
add_buttonrH   add_itemr2   rB   items      r3   rY   z"PlaceholderToolbar.add_edit_button   sk    !$,,"2"2T\\=Z=Z[t||112fIN	 	 	
 	d#r6   c                 *   t        | j                  j                  | j                  j                        }|r\t	        | j                  j
                        }|j                  t        d      |dddg       | j                  j                  |       y y )Nr}   r   PreviewFr   zcms-btn-switch-saver   )	r   rM   rV   r   r   rP   r   rH   r   r   s      r3   r[   z%PlaceholderToolbar.add_preview_button   sy    $T\\%5%5@]@]^4<<#5#56DOO)(*?@	   LL!!$' r6   c                    | j                   j                  }| xr | j                   j                  }t        | j                   j                  | j                   j
                        }t        | j                   j                  | j                   j
                        }| j                   j                  d| j                   j                  |      }|j                  t        d      ||dd       |j                  t        d      ||dd	       y )
Nr}   zMode Switcher)rD   r   	StructureFzcms-structure-btn)activerE   r   Contentzcms-content-btn)rM   rf   edit_mode_activer   rV   r   r   add_button_listrP   r   rH   )r2   r   structure_activer   	build_urledit_urlswitchers          r3   r]   z%PlaceholderToolbar.add_structure_mode   s    <<== 00RT\\5R5R,T\\-=-=HeHef	&t||'7'7$,,B_B_`<<//##' 0 

 	kN#- 	 	
 	iL#+ 	 	
r6   ))z"cms-toolbar-item-cms-mode-switcher)__name__
__module____qualname____doc__r4   r9   r:   r;   rU   ro   rw   rX   r\   rY   r[   r]   __classcell__)r<   s   @r3   r+   r+   G   sE    ..
=$&"E&

	$
(
r6   r+   c                   &    e Zd ZdZ ed      Zd Zy)AppearanceToolbarz@
    Adds appearance switches, esp. for dark and light mode
    COLOR_SCHEME_TOGGLEc                     | j                   r=t        d| j                  j                        }| j                  j	                  |       y y )Nz'cms/toolbar/items/dark_mode_toggle.html)templaterD   )color_scheme_toggler   rM   rP   r   )r2   dark_mode_toggles     r3   r4   zAppearanceToolbar.populate   s@    ##+B\\''  LL!!"23 $r6   N)r   r   r   r   r    r   r4    r6   r3   r   r      s     **?@4r6   r   c                   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d
d	Zy)BasicToolbarz3
    Basic Toolbar for site and languages menu
    Nc                 :    | j                   j                  | _        y r-   r.   r1   s    r3   init_from_requestzBasicToolbar.init_from_request   r5   r6   c                     | j                   s`| j                          | j                  j                  j                  j
                  | _        | j                          | j                          y y r-   )r(   r   r/   rM   user_settings	clipboardadd_admin_menuadd_language_menur1   s    r3   r4   zBasicToolbar.populate   sO    yy""$!\\11??IIDN!""$	 r6   c                 `   | j                   s!| j                  j                  t        | j                  j
                        | _         | j                  | j                          t        j                  j                  d      }t        |      dkD  r| j                   j                  dt        d            }|j                  t        d      t        d             |j                  t               |D ]N  }|j!                  |j
                  d|j"                  z  |j$                  | j                  j$                  k(  	       P | j                   j                  t        d
      t        d             | j                   j                  t&               | j                   j                  t        d      t        d             | j                   j                  t(               | j                  j*                  r| j                  j,                  }| j                   j!                  t        d      ddg|        | j                   j!                  t        d      ddg|        | j                   j                  t.               | j                   j!                  t        d      dt1        d      z         | j                   j                  t2               | j                   j!                  t        d      dd       | j                   j                  t4               | j7                  | j                          y y )Nname   sitesSiteszAdmin Sitessites_site_changelistrB   z	http://%srB   r   AdministrationindexzUser settingscms_usersettings_changezClipboard...#zcms-clipboard-trigger)rB   r   rE   zClear clipboardzcms-clipboard-emptyzDisable toolbarz?%sCMS_TOOLBAR_URL__DISABLEzShortcuts...)zcms-show-shortcuts)rB   r   )_admin_menurM   get_or_create_menuADMIN_MENU_IDENTIFIERcurrent_siter   add_users_buttonr   rc   order_bylenrH   add_sideframe_itemr&   	add_breakADMIN_SITES_BREAKadd_link_itemdomainrJ   ADMINISTRATION_BREAKUSER_SETTINGS_BREAKr   clipboard_pluginCLIPBOARD_BREAKr    TOOLBAR_DISABLE_BREAKSHORTCUTS_BREAKadd_logout_button)r2   sites_queryset
sites_menusiteclipboard_is_bounds        r3   r   zBasicToolbar.add_admin_menu   s   #||>>?TVZVgVgVlVlmD!!$"2"23 "\\226:N>"Q&!--@@!G*U
--a.>MRiDj-k$$%67* UD,,TYYK$++<U48GGt?P?P?S?S4S - UU
 //2B0CW^I_/`&&';< ///0BVoHp/q&&':; ||,,%)\\%B%B"  ..n%3#:";!33 / 
   ..'(c#8"9!33 / 
   **?; **#$%/B\2]*] +  &&'<=**.!s5 +  &&7 ""4#3#34k  r6   c           	         t               }|t        j                  j                  v r|j                  }| j
                  j                  j                  dj                  |j                  t        d|                  rBt        |j                   d|j                   d      }|j                  t        d      |       y y y )Nz{}.{}changerH   _changelistUsersr   )r   r   r   	_registry_metar/   rI   rz   rL   	app_labelr   r&   
model_namer   rH   )r2   parentUseroptsuser_changelist_urls        r3   r   zBasicToolbar.add_users_button6  s    5::'''::D||  ))'..I`aikoIp*qr&3t~~6FaGXXc4d&e#))!G*:M)N s (r6   c                 ~   | j                   rK| j                   j                  s5t        j                  t	               | j                   | j
                        }nd}|r| j                  j                  nd}| j                         }|rt        d      |z  n
t        d      }|j                  |t        d      d|d	       y )
NrI   r(   r   F/z	Logout %sLogoutlogoutTPOST)actionr   
on_successmethod)r(   login_requiredr   user_can_view_pager   r   rM   r   get_usernamerH   add_ajax_itemr&   )r2   r   anon_can_accessr   	user_namelogout_menu_texts         r3   r   zBasicToolbar.add_logout_button@  s    99TYY55.AA"_YY&&O $O2AT\\..s

 %%'	9B1[>I5( *! 	 	
r6   c                 4   t         j                  r| j                  st        | j                  j
                        }t        |      dkD  r| j                  j                  t        t        d      d      | _        t        | j                  dt        | j                              }|D ]<  \  }}	  ||      }|s| j                  j                  ||| j                   |k(         > y d| _        y y y # t        $ r  t        | j                        |      }Y aw xY w)Nr   Language)position_language_changerr   T)r   USE_I18N_language_menur"   r   rJ   r   rM   r   LANGUAGE_MENU_IDENTIFIERrH   getattrr/   r'   r	   r   current_lang)r2   	languageslanguage_changercoder   rB   s         r3   r   zBasicToolbar.add_language_menuZ  s   T%8%8*4+<+<+?+?@I9~!&*ll&E&E,a
mb 'F '# $+4<<9LNdeieqeqNr#s "+ kJD$I.t4 ++99$CPTPaPaeiPi9jk '+## &9 * IB4T\\B4HIs   -C00$DDc                     |xs | j                   j                  }	 |j                         }|r|S |j                         S # t        t
        f$ r |cY S w xY wr-   )r/   rI   get_full_namer   AttributeErrorNotImplementedError)r2   rI   defaultr   s       r3   r   zBasicToolbar.get_usernamen  sZ    (t||((	%%'D((** 34 	N	s   A  A   AA)Nr@   )r   r   r   r   r(   r   r   r   r4   r   r   r   r   r   r   r6   r3   r   r      s=     DNK.%65pO
4+(	r6   r   c                       e Zd ZdZeegZd Zd Zd Z	d Z
d Zed        Zej                  d        Zd	 Zd
 Zd Zd Zy)PageToolbarNc                     t        | dd       sy t        | d      r&t        | j                  t              r| j                  S | j
                  j                  | j                  d      }|xs d S )Nr(   rV   F)r~   fallback)r   hasattr
isinstancerV   r   r(   get_admin_contentr   )r2   page_contents     r3   get_page_contentzPageToolbar.get_page_content  s\    tVT*4Jtxx$E88Oyy22D<M<MX]2^#t#r6   c                     t        | d      s6t        | j                        xr | j                  j	                         | _        | j
                  S )Npage_change_permission)r  r   r/   rM   object_is_editabler  r1   s    r3   has_page_change_permissionz&PageToolbar.has_page_change_permission  s<    t56*9$,,*G*mDLLLkLkLmD'***r6   c                    t        | j                  j                        5  	 t        | j                  j                        }d}|j
                  j                  |vcd d d        S # t        $ r Y d d d        yw xY w# 1 sw Y   y xY w)N)render_object_editrender_object_previewrender_object_structuredetailsF)force_languagerM   r   r   request_pathfuncr   r
   )r2   resolver	cms_viewss      r3   
in_apphookzPageToolbar.in_apphook  s    DLL99: 		??"4<<#<#<=	  }}--Y>		? 		?  			? 		?		? 		?s.   A;A$A;$	A8-A;7A88A;;Bc                     t        | j                  dd      }|r>t        | j                        }| j                  j                  |j                  |      k(  S y)z
        Returns True if the request is for a page handled by an apphook, but
        is also the page it is attached to.
        :return: Boolean
        r0   Fr}   )r   r/   r   rM   r  get_absolute_url)r2   r(   r~   s      r3   in_apphook_rootzPageToolbar.in_apphook_root  sM     t||^U;0>H<<,,0E0Ex0E0XXXr6   c                 H   | j                   }| j                  r| j                  j                  nd }|rK||j                         v r9t	        |j                  d      j                  |      j                               S 	 t        d      S # t        $ r t        d      cY S w xY w)Nadmin_manager)managerr}   z
pages-rootcms_pagecontent_changelist)r   r(   r   get_languagesr   pagecontent_setlatest_contentfirstr   r	   r&   )r2   r~   parent_pages      r3   get_on_delete_redirect_urlz&PageToolbar.get_on_delete_redirect_url  s    $$*.))dii&& 8{'@'@'BB)++O+DSS]eSflln 	?<(( 	? !=>>	?s   ?
B
 
B! B!c                 R    dd l }|j                  dt        d       | j                  S Nr   zQTitle property of PageToolbar will be removed. Use page_content property instead.   )
stacklevelwarningswarnr   r  )r2   r'  s     r3   rQ   zPageToolbar.title  s,    _'A 	 	7    r6   c                 J    dd l }|j                  dt        d       || _        y r#  r&  )r2   r  r'  s      r3   rQ   zPageToolbar.title  s(    _'A 	 	7 )r6   c                     | j                   j                  | _        | j                         | _        t        d      | _        | j                          | j                          | j                          y )N
PERMISSION)
r/   r0   r(   r  r  r    permissions_activatedchange_admin_menuadd_page_menuchange_language_menur1   s    r3   r4   zPageToolbar.populate  sU    LL--	 113%4\%B" !!#r6   c                 v   | j                   j                  rM| j                  rAt        j                  | j
                  j                  | j                  | j                        }nd}|r| j                   j                  t              }|sy t        | j                  j                        }| j                  j                         D cg c]  }||v s||j                  ||      f }}|j                         D cg c]	  }||vs| }}|j                         D cg c]  \  }}|| j                  k7  r
||f|v r||f  }	}}|s|s|	r|j!                  t"               |r|j%                  t         dt'        d            }
t)        d      }|D ]O  \  }}t+        || j                  j                  | j                  j,                  |      }|
j/                  ||       Q |r|j%                  t         dt'        d	            }t1        |      d
k(  }|D ]\  \  }}| j                  j3                  |      }|s$t)        d|j                  f      }t+        ||      }|j/                  |||       ^ |	r|j%                  t         dt'        d            }t'        d      }t'        d      }|	D ]u  \  }}| j                  j3                  |      }t)        d|j                  f      }|j5                  ||z  ||| j                  d||z  | j                   j6                         w y y y c c}w c c}w c c}}w )Nr   Fz-addzAdd Translationcms_pagecontent_add)cms_pager   r~   r   z-delzDelete Translationr   cms_pagecontent_deleteargsr}   rB   rE   z-copyzCopy all pluginszfrom %sz2Are you sure you want to copy all plugins from %s?cms_pagecontent_copy_language)source_languagetarget_language)r   dataquestionr   )rM   r   r(   r   r#   r/   rI   r   get_menur   r!   rJ   r  getitemsr   r   ADD_PAGE_LANGUAGE_BREAKr   rH   r&   r%   idadd_modal_itemr   get_content_objr   r   )r2   
can_changelanguage_menur   r   removerC   addr   copyadd_plugins_menupage_add_urlrB   remove_plugins_menurE   pagecontenttranslation_delete_urlcopy_plugins_menurQ   r;  page_copy_urls                        r3   r/  z PageToolbar.change_language_menu  s*   <<((TYY)>>\\&&YY&&J J LL112JKM )$*;*;*>*>?IDHIID[D[D]sDaeirartY]]467sFs$-OO$5LDV9K4LCL/8/@!+t)))tTlf.D tD 
 f''(?@#0#C#C/05q9J7K$   --BC"% CJD$,$tyy||`dC %33Dc3B	C &3&F&F/05q9M7N'# v;!+"( ]JD$"&))";";D"AK"1>?W_j_m_m^o1p.01GRVW+::4SS[:\] $1$D$D/06:L8M%! )QR"& JD$"&))";";D"AK$12QYdYgYgXi$jM%33]15$J[J[\!)DT\\=V=V 4  U  tLs   	L+L+:	L0L0#L5c                    | j                         }|s5t        j                  | j                  j                  | j
                        }| j                  s|r| j                  j                  t              }t        d      }d| j                  j                  i}| j                  r| j                  j                  |d<   t        ||      }|j                  t!        d      |d       d| _        y y y )	NrI   r   r  r~   page_idPagesr   )rB   r   T)r	  r   !user_can_change_at_least_one_pager/   rI   r   _changed_admin_menurM   r   r   r&   r   r(   rJ   r%   r   rH   )r2   r   
admin_menurB   paramss        r3   r-  zPageToolbar.change_admin_menu  s    99;.PP\\&&&&O
 ''O889NOJ <=C $,,"?"?@Fyy$(IILLy!$S&1C))!G*#)J'+D$ -<'r6   c                 H   | j                   r| j                  r| j                  j                  }| j                  j                  }t        | j                  j                  | j                   | j                        }| j                  j                  t        t        d      d| j                         xr | j                                }ddi}d| j                   j                  d}t        d      }t        d| j                   j                   f	      }t        d
| j                  j                   f	      }	t        d| j                  j                   g	      }
t#        j$                  | j                  j                  | j                        }| j                   j&                  rc| j                   j&                  j                  |d<   t#        j(                  | j                  j                  | j                   j&                        }n|}t#        j(                  | j                  j                  | j                         }|j                  t*        t        d            }t        d      ||ft        d      ||ff}|D ]K  \  }}}|j-                  | j                  j.                         |j1                  |t3        ||      |        M |j1                  t        d      t3        |
d| j                  j.                  i      |        |j5                  t6               t3        |	| j                  j.                        }	| }|j1                  t        d      |	||       t3        || j                  j.                        }| j                   j9                  | j                  j                        }| }|j1                  t        d      ||       |rt        d| j                  j                   f	      }|rt;        d      rt;        d      }t        d      }n+t;        d      D cg c]  }|d   |d   f }}t        d      }|rn|j                  d || !      }|D ]T  \  }}| j                  j<                  |k(  }|t>        k(  r|j5                  t@               |jC                  ||d"|i||#       V | j                  jD                  }|rt        d$      n
t        d%      }t        d&| j                  j                   f	      } |jC                  || | xs | |'       t        d(| j                   j                   f	      }!| xs, tG        | j                  j                  | j                   )       }"| jI                         }#|j1                  t        d*      |!|#|"+       y y y c c}w ),Nr   r   r   )r   rE   edit)rX  r   r1  cms_page_advancedr4  cms_pagecontent_changecms_pagecontent_duplicaterP  r   )rI   targetzCreate PagezNew PagezNew Sub Pager}   r6  zDuplicate this Pager~   zPage settings)rB   rE   rF   zAdvanced settingscms_pagecontent_change_templaterT   	TemplatesPLACEHOLDERSr   r$  Placeholders	templates)rE   r   )r   r:  r   r   zHide in navigationzDisplay in navigation#cms_pagecontent_change_innavigation)r   rE   r   cms_page_deletern   zDelete page)rB   rF   rE   )%r(   r  rM   r   r   r#   r/   rI   r   r   PAGE_MENU_IDENTIFIERrH   r  r  r@  r&   rJ   r   user_can_add_pager   user_can_add_subpagePAGE_MENU_ADD_IDENTIFIERupdater   rA  r%   r   PAGE_MENU_FIRST_BREAK has_advanced_settings_permissionr    r   r   TEMPLATE_MENU_BREAKr   in_navigationr$   r!  )$r2   	edit_moderefreshrC  current_page_menunew_page_paramsnew_sub_page_paramsadd_page_urladvanced_urlpage_settings_urlduplicate_page_urlcan_add_root_pagecan_add_sibling_pagecan_add_sub_pager.  add_page_menu_modal_itemsrQ   rV  rz   settings_disabledcan_change_advancedadvanced_disabledr   optionstemplate_menure   templates_menupathr   r   rl  	nav_title
nav_action
delete_urldelete_disabledon_delete_redirect_urls$                                       r3   r.  zPageToolbar.add_page_menu,  s9   99**55Ill//G-\\&&YY&&J !% ? ?$ai!dooFWFv`d`t`t`v\v !@ !x  &qkO+,TYY\\"J()>?L()<DIILL?SL -.FdN_N_NbNbMd e!./JRVRcRcRfRfQg!h 0 B B\\&&&&!
 yy151A1A1D1D.'7'L'L**99++($
 (9$/DD\\&&yy  .@@(- M :1EF>"$79IJ)%
 ,E 'vxt||'D'DE,,*<@!)\ -  (('(&'9JHeHe;fg11 )  ''(=> !33Dt||OlOl m$.,,Q-?EVar6= - ? .lT\\EbEbcL"&))"L"LT\\M^M^"_$7 7,,Q/B-C`q,r &'HPTPaPaPdPdOfg&&{3"1+">()+ZijxZy"z,LO\!_#E"z"z().(9):)M)M'))3^ *N * +2 MJD$%)%6%6%?%?4%GF#'AA . 8 89L M*88fT^`dSentDK 9 M	M !--;;M3@./aH_F`I&'LTXTeTeThThSjkJ++!'-9z>"	 ,  ''8		OJ"+mj3GHYHY`d`i`i3j/jO%)%D%D%F",,Q}-=:Xn6E - Gy +9z #{s   "V)r   r   r   rT  r   r   watch_modelsr  r	  r  r  r!  propertyrQ   setterr4   r/  r-  r.  r   r6   r3   r   r   z  so    (#L	$+

?
?" ! ! \\) )$AF,*~Gr6   r   N)Vdjango.confr   django.contribr   django.contrib.authr   r   django.contrib.auth.modelsr   django.contrib.sites.modelsr   django.urlsr	   r
   r   r   django.utils.translationr   rH   r   r  cms.apir   cms.constantsr   
cms.modelsr   r   r   r   cms.toolbar.itemsr   r   r   cms.toolbar.utilsr   r   r   cms.toolbar_baser   cms.toolbar_poolr   	cms.utilsr   r   cms.utils.compat.warningsr   cms.utils.confr    cms.utils.i18nr!   r"   cms.utils.page_permissionsr#   r$   cms.utils.urlutilsr%   r&   menus.utilsr'   r   r   rk  rd  rg  ri  PAGE_MENU_SECOND_BREAKPAGE_MENU_THIRD_BREAKPAGE_MENU_FOURTH_BREAKPAGE_MENU_LAST_BREAKHISTORY_MENU_BREAKMANAGE_PAGES_BREAKr   r   r   r   r?  REMOVE_PAGE_LANGUAGE_BREAKCOPY_PAGE_LANGUAGE_BREAKr   r   registerr+   r   r   r   r   r6   r3   <module>r     s       G 4 , E E
 $ 4 ? ? D D 
 ( ) A A * @ A . % 
 +  ,   & / 1 / 1 - ) ) ' - #+ 3 9 5 / # P
 P
 P
f 4
 4 4 K: K K\ oG* oG oGr6   