î
#dÝV•  ã               @   s5   Gd  d „  d e  ƒ Z d d „  Z g  d d „ Z d S)c               @   s4   e  Z d  Z d Z i  Z d d „  Z e e ƒ Z d S)ÚRegistryz.
    Registry for application dashboards.
    c             C   sd   d d l  m } t | | ƒ s2 t d | ƒ ‚ n  | |  j k rS t d | ƒ ‚ n  | |  j | <d  S)Né    )Ú	Dashboardz"%s is not an instance of Dashboardz@A dashboard has already been registered for the application "%s")Zgrappelli.dashboard.dashboardsr   Ú
issubclassÚ
ValueErrorÚregistry)ÚclsÚklassZapp_namer   © r	   úH/tmp/pip-build-0jahl3lb/django-grappelli/grappelli/dashboard/registry.pyÚregister
   s    zRegistry.registerN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Úclassmethodr	   r	   r	   r
   r      s   r   c             O   s   t  j |  | | Ž d S)z?
    Register a custom dashboard into the global registry.
    N)r   r   )r   ÚargsÚkwargsr	   r	   r
   r      s    r   c             C   sÕ   d d l  } d d l m } d d l m } |  j d ƒ |  j d ƒ xˆ | j D]} } | |  k rh qP n  y | | ƒ j } Wn t k
 r’ wP Yn Xy | j	 d | ƒ Wn t
 k
 r¾ wP Yn X| d | ƒ qP Wd S)	zÆ
    Automagically discover custom dashboards and menus for installed apps.
    Optionally you can pass a ``blacklist`` of apps that you don't want to
    provide their own app index dashboard.
    r   N)Úimport_module)ÚsettingsZ	grappellizgrappelli.dashboardZ	dashboardz%s.dashboard)ÚimpÚ	importlibr   Zdjango.confr   ÚappendZINSTALLED_APPSÚ__path__ÚAttributeErrorÚfind_moduleÚImportError)Z	blacklistr   r   r   ZappZapp_pathr	   r	   r
   Úautodiscover   s"    r   N)Úobjectr   r   r   r	   r	   r	   r
   Ú<module>   s   