
    Bh                         d 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 dd
lmZ  e       ZdZ G d d      Zy)z
Edit Toolbar middleware
    )forms)ValidationError)resolve)Resolver404)SimpleLazyObject
CMSToolbar)get_toolbar_from_request)get_cms_setting)get_request_ip_resolver)z
pages-rootzpages-details-by-slug!cms_placeholder_clear_placeholdercms_placeholder_add_plugincms_placeholder_edit_plugincms_placeholder_copy_pluginscms_placeholder_move_plugincms_placeholder_delete_plugin"cms_placeholder_render_object_edit%cms_placeholder_render_object_preview'cms_placeholder_render_object_structurecms_placeholder_edit_fieldc                   F     e Zd ZdZ fdZd Zd Zd Zd Zd Z	d Z
 xZS )	ToolbarMiddlewarez+
    Middleware to set up CMS Toolbar.
    c                 0    || _         t        | 	          y N)get_responsesuper__init__)selfr   	__class__s     F/home/dcms/DCMS/lib/python3.12/site-packages/cms/middleware/toolbar.pyr   zToolbarMiddleware.__init__%   s    (    c                 j    	 t        |j                        }|j                  dk(  S # t        $ r Y yw xY w)NFr   )r   	path_infor   url_name)r   requestmatchs      r    is_edit_modezToolbarMiddleware.is_edit_mode)   s=    	G--.E ~~!EEE  		s   & 	22c                 ,   t        d      }t        d      }|r4t        |      }	 t        j                         j	                  |      }||vry|sy	 t        |j                        }|j                  t        v S # t
        $ r Y yw xY w# t        $ r Y yw xY w)NTOOLBAR_HIDEINTERNAL_IPSFT)r   get_request_ipr   GenericIPAddressFieldcleanr   r   r#   r   r$   cms_endpoints)r   r%   toolbar_hideinternal_ips	client_ipr&   s         r    is_cms_requestz ToolbarMiddleware.is_cms_request1   s    &~6&~6&w/I!!779??	J	 L0 	G--.E ~~.. #   		s#   #A8 B 8	BB	BBc                    | j                        syt        d      }t        d      }t        d      }t        j                  d      }|j	                  j
                  j                  |d            rK|j
                  v rdj                  d<   |j
                  v s| j                        rdj                  d<   t        fd	      _
        y)
z
        If we should show the toolbar for this request, put it on
        request.toolbar. Then call the request_hook on the toolbar.
        NCMS_TOOLBAR_URL__PERSISTCMS_TOOLBAR_URL__ENABLECMS_TOOLBAR_URL__DISABLEF)requiredTcms_toolbar_disabledc                      t               S r   r   )r%   s   r    <lambda>z3ToolbarMiddleware.process_request.<locals>.<lambda>]   s    :g3F r!   )r2   r   r   BooleanFieldr-   GETgetsessionr'   r   toolbar)r   r%   persistenable_toolbardisable_toolbarfields    `    r    process_requestz!ToolbarMiddleware.process_requestH   s     ""7+!"<=()BC)*DE""E2;;w{{w56'++-:> 67,0A0A'0J:? 67*+FGr!   c                 T    t        |      x}rddlm} |j                  r ||       |S )Nr   )add_never_cache_headers)r
   django.utils.cacherF   _cache_disabled)r   r%   responser?   rF   s        r    process_responsez"ToolbarMiddleware.process_response_   s+    .w7777B&&'1r!   c                 j    | j                  |       | j                  |      }| j                  ||      S r   rD   r   rJ   r   r%   rI   s      r    __call__zToolbarMiddleware.__call__g   s3    W%$$W-$$Wh77r!   c                    K   | j                  |       | j                  |       d {   }| j                  ||      S 7 wr   rL   rM   s      r    	__acall__zToolbarMiddleware.__acall__l   s?     W%**733$$Wh77 4s   &A?A)__name__
__module____qualname____doc__r   r'   r2   rD   rJ   rN   rP   __classcell__)r   s   @r    r   r   !   s-    F/.H.8
8r!   r   N)rT   djangor   django.core.exceptionsr   django.urlsr   django.urls.exceptionsr   django.utils.functionalr   cms.toolbar.toolbarr	   cms.toolbar.utilsr
   cms.utils.confr   cms.utils.request_ip_resolversr   r+   r.   r    r!   r    <module>r`      sB     2  . 4 * 6 * B(* N8 N8r!   