
    Bh                     z    d dl 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 d dlmZ  G d d	      Z e       Zy)
    N)ImproperlyConfigured)autodiscover_modulesimport_string)gettext)CMSApp)AppAlreadyRegistered)get_cms_settingc                   2    e Zd Zd Zd ZddZd Zd Zd Zy)	ApphookPoolc                 .    g | _         i | _        d| _        y NFapphooksapps
discoveredselfs    @/home/dcms/DCMS/lib/python3.12/site-packages/cms/apphook_pool.py__init__zApphookPool.__init__   s    	    c                 .    g | _         i | _        d| _        y r   r   r   s    r   clearzApphookPool.clear   s    	r   Nc                     | fdS  j                   rs|S |j                   j                  v rt        d|j                  z        t	        |t
              st        d|j                  z        t        |d      s.t        |d      r"t        j                  d|j                  z          |        j                  |j                  <   |S )Nc                 (    j                  |       S )N)register)appdiscovering_appsr   s    r   <lambda>z&ApphookPool.register.<locals>.<lambda>   s    t}}S2BC r   z*A CMS application %r is already registeredzFCMS application must inherit from cms.app_base.CMSApp, but %r does notmenusmenuzmYou define a 'menu' attribute on CMS application %r, but the 'menus' attribute is empty, did you make a typo?)
r   __name__r   r   
issubclassr   r   hasattrwarningswarn)r   r   r   s   ` `r   r   zApphookPool.register   s    ;CC==!1J<<499$&<s||K  #v&&X[^[g[gg  sG$f)=MM'),6
 #&%		#,,
r   c                     t        d      | _        | j                  r8| j                  D ]!  }t        |      }	 | j                  |d       # d| _        y t        d       d| _        y # t        $ r Y Jw xY w)NAPPHOOKST)r   cms_apps)r	   r   r   r   r   r   r   )r   pathclss      r   discover_appszApphookPool.discover_apps4   su    '
3== #D)MM#M=  !, , s   A((	A43A4c                    g }| j                   s| j                          | j                  D ]C  }| j                  |   }|j                         s#|j	                  ||j
                  xs |f       E t        |d       }|S )Nc                     | d   S )N    )hooks    r   r   z*ApphookPool.get_apphooks.<locals>.<lambda>Q   s
    tAw r   )key)r   r+   r   get_urlsappendnamesorted)r   hooksapp_namer   s       r   get_apphookszApphookPool.get_apphooksD   sr     		 	?H))H%C||~h(<H=>	? u"67r   c                 *   | j                   s| j                          	 | j                  |   S # t        $ r: | j                  j	                         D ]  }||j                         v s|c cY S  Y nw xY wt        j                  t        d      |z         y )Nz No registered apphook "%r" found)	r   r+   r   KeyErrorvaluesr2   r$   r%   _)r   r7   r   s      r   get_apphookzApphookPool.get_apphookU   s     	99X&& 	 yy'') s||~-J	 	a:;hFGs   - 8A0&A0,A0/A0r   )	r!   
__module____qualname__r   r   r   r+   r8   r=   r/   r   r   r   r      s      
 6 "r   r   )r$   django.core.exceptionsr   django.utils.module_loadingr   r   django.utils.translationr   r<   cms.app_baser   cms.exceptionsr   cms.utils.confr	   r   apphook_poolr/   r   r   <module>rG      s0     7 K 1  / *W Wt }r   