
    Bhp                     B    d dl mZ ddlmZmZ  G d d      Z e       Zy)    )SubClassNeededError   )PageContentExtensionPageExtensionc                   B    e Zd Zd Zd Zd Zd Zd Zd
dZd
dZ	d
d	Z
y)ExtensionPoolc                 @    t               | _        t               | _        y N)setpage_extensionspage_content_extensions)selfs    M/home/dcms/DCMS/lib/python3.12/site-packages/cms/extensions/extension_pool.py__init__zExtensionPool.__init__   s    "u'*u$    c           	          t        |t              r| j                  j                  |       |S t        |t              r| j
                  j                  |       |S t        dt         dt         d| d      )a>  
        Registers the given extension.

        Example::

            class MyExtension(PageExtension):
                pass

            extension_pool.register(MyExtension)

        or as decorator::

            @extension_pool.register
            class MyExtension(PageExtension):
                pass

        z!Extension has to subclass either z or z. z
 does not!)
issubclassr   r   addr   r   r   r   	extensions     r   registerzExtensionPool.register   s    & i/  $$Y/  	#78((,,Y7
  &3M?$G[F\\^_h^iist r   c                     	 t        |t              r| j                  j                  |       yt        |t              r| j
                  j                  |       yy# t        $ r Y yw xY w)z
        Unregisters the given extension. No error is thrown if given extension isn't an extension or wasn't
        registered yet.
        N)r   r   r   remover   r   KeyErrorr   s     r   
unregisterzExtensionPool.unregister(   s[    	)]3$$++I6I';<,,33I> = 		s   +A +A 	A'&A'c                     | j                   D ]5  }|j                  j                  |      D ]  }|j                  ||        7 y Nextended_object)r   objectsfiltercopy)r   source_pagetarget_pagelanguager   instances         r   _copy_page_extensionsz#ExtensionPool._copy_page_extensions6   sH    -- 	5I%--44[4Q 5k845	5r   c                 L   |j                  d      j                  |      j                         }|j                  d      j                  |      j                         }| j                  D ]5  }|j                  j                  |      D ]  }|j                  ||        7 y )Nadmin_manager)manager)r%   r   )pagecontent_setcurrent_contentgetr   r    r!   r"   )r   r#   r$   r%   source_contenttarget_contentr   r&   s           r   _copy_content_extensionsz&ExtensionPool._copy_content_extensions;   s    $44_4M]]go]pttv$44_4M]]go]pttv55 	8I%--44^4T 8nh78	8r   Nc                     |s|j                         }| j                  r| j                  ||d        |D ]"  }| j                  s| j	                  |||       $ y r
   )get_languagesr   r'   r   r0   )r   r#   r$   	languagesr%   s        r   copy_extensionszExtensionPool.copy_extensionsB   sZ    #113I&&{KF! 	RH++--k;Q	Rr   c                     g }| j                   D ]k  }|r5|j                  t        |j                  j	                  |                   :|j                  t        |j                  j                                      m |S r   )r   extendlistr    r!   all)r   page
extensionsr   s       r   get_page_extensionsz!ExtensionPool.get_page_extensionsK   ss    
-- 	AI!!$y'8'8'?'?PT'?'U"VW!!$y'8'8'<'<'>"?@		A
 r   c                     g }| j                   D ]k  }|r5|j                  t        |j                  j	                  |                   :|j                  t        |j                  j                                      m |S r   )r   r6   r7   r    r!   r8   )r   page_contentr:   r   s       r   get_page_content_extensionsz)ExtensionPool.get_page_content_extensionsT   ss    
55 	AI!!$y'8'8'?'?P\'?']"^_!!$y'8'8'<'<'>"?@		A
 r   r
   )__name__
__module____qualname__r   r   r   r'   r0   r4   r;   r>    r   r   r   r      s+    -:5
8Rr   r   N)cms.exceptionsr   modelsr   r   r   extension_poolrB   r   r   <module>rF      s!    . 7U Up r   