o
    g+                     @   s   d dl Z d dl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mZ d dlmZ d dlmZ G dd	 d	eZd
d Zedd Zedd Zdd Zedd Ze dd ZdS )    N)	AppConfig)settings)Warningregister)GZipMiddleware)import_string)gettext_lazyc                   @   s    e Zd ZdZedZdd ZdS )DebugToolbarConfigdebug_toolbarzDebug Toolbarc                 C   s&   ddl m} | D ]}|  q
d S )Nr   DebugToolbar)debug_toolbar.toolbarr   get_panel_classesready)selfr   cls r   R/var/www/html/bloggers_ems/venv/lib/python3.10/site-packages/debug_toolbar/apps.pyr      s   
zDebugToolbarConfig.readyN)__name__
__module____qualname__name_verbose_namer   r   r   r   r   r	      s    r	   c                    sT    fdd |  dd}|  di  dd}|rt |}|du p%d|v }|p)|S )	a  
    Checks if a template configuration is valid.

    The toolbar requires either the toolbars to be unspecified or
    ``django.template.loaders.app_directories.Loader`` to be
    included in the loaders.
    If custom loaders are specified, then APP_DIRS must be True.
    c                 3   s>    | D ]}t |tr|d V   |d E dH  q|V  qdS )z
        Recursively flatten the settings list of template loaders.

        Check for (loader, [child_loaders]) tuples.
        Django's default cached loader uses this pattern.
        r      N)
isinstancetuple)loadersloaderflat_loadersr   r   r    %   s   

z+check_template_config.<locals>.flat_loadersAPP_DIRSFOPTIONSr   Nz.django.template.loaders.app_directories.Loader)getlist)configapp_dirsr   has_app_loadersr   r   r   check_template_config   s   
r(   c                 K   s  ddl m} g }d }g }tdd tjD r |tdddd td	r1|td
ddd |S ttj	D ]\}}t
t|rB|}q6t
||rL|| q6|s[|tdddd |S t|dkrm|tdddd |S |d ur|d |k r|tdddd |S )Nr   )DebugToolbarMiddlewarec                 s   s    | ]}t | V  qd S N)r(   ).0r%   r   r   r   	<genexpr>G   s    z#check_middleware.<locals>.<genexpr>zAt least one DjangoTemplates TEMPLATES configuration needs to use django.template.loaders.app_directories.Loader or have APP_DIRS set to True.zInclude django.template.loaders.app_directories.Loader in ["OPTIONS"]["loaders"]. Alternatively use APP_DIRS=True for at least one django.template.backends.django.DjangoTemplates backend configuration.zdebug_toolbar.W006hintidMIDDLEWARE_CLASSESz>debug_toolbar is incompatible with MIDDLEWARE_CLASSES setting.z,Use MIDDLEWARE instead of MIDDLEWARE_CLASSESzdebug_toolbar.W004zKdebug_toolbar.middleware.DebugToolbarMiddleware is missing from MIDDLEWARE.zBAdd debug_toolbar.middleware.DebugToolbarMiddleware to MIDDLEWARE.zdebug_toolbar.W001r   zTdebug_toolbar.middleware.DebugToolbarMiddleware occurs multiple times in MIDDLEWARE.zMLoad debug_toolbar.middleware.DebugToolbarMiddleware only once in MIDDLEWARE.zdebug_toolbar.W002zrdebug_toolbar.middleware.DebugToolbarMiddleware occurs before django.middleware.gzip.GZipMiddleware in MIDDLEWARE.zrMove debug_toolbar.middleware.DebugToolbarMiddleware to after django.middleware.gzip.GZipMiddleware in MIDDLEWARE.zdebug_toolbar.W003)debug_toolbar.middlewarer)   allr   	TEMPLATESappendr   is_overridden	enumerate
MIDDLEWAREis_middleware_classr   len)app_configskwargsr)   errors
gzip_indexdebug_toolbar_indexesi
middlewarer   r   r   check_middleware?   sl   



	rA   c                 K   s:   ddl m} g }| D ]}| D ]}|| qq|S )zOAllow each panel to check the toolbar's integration for their its own purposes.r   r   )r   r   r   
run_checksr4   )r:   r;   r   r<   panel_classcheck_messager   r   r   check_panel_configs   s   rE   c                 C   s6   zt |}W n
 ty   Y d S w t|ot|| S r*   )r   ImportErrorinspectisclass
issubclass)middleware_classmiddleware_pathmiddleware_clsr   r   r   r8      s   r8   c                 K   s(   g }t  }|s|tdddd |S )Nz&Setting DEBUG_TOOLBAR_PANELS is empty.zASet DEBUG_TOOLBAR_PANELS to a non-empty list in your settings.py.zdebug_toolbar.W005r-   )dt_settings
get_panelsr4   r   )r:   r;   r<   panelsr   r   r   check_panels   s   rP   c                 K   s6   ddh}t td| }|rtddddgS g S )zP
    Check that JavaScript files are resolving to the correct content type.
    zapplication/javascriptztext/javascriptz
toolbar.jsz9JavaScript files are resolving to the wrong content type.a  The Django Debug Toolbar may not load properly while mimetypes are misconfigured. See the Django documentation for an explanation of why this occurs.
https://docs.djangoproject.com/en/stable/ref/contrib/staticfiles/#static-file-development-view

This typically occurs on Windows machines. The suggested solution is to modify HKEY_CLASSES_ROOT in the registry to specify the content type for JavaScript files.

[HKEY_CLASSES_ROOT\.js]
"Content Type"="application/javascript"zdebug_toolbar.W007r-   )set	mimetypes
guess_typeintersectionr   )r:   r;   javascript_typescheck_failedr   r   r   js_mimetype_check   s   
rW   )rG   rR   django.appsr   django.confr   django.core.checksr   r   django.middleware.gzipr   django.utils.module_loadingr   django.utils.translationr   r   r
   rM   r	   r(   rA   rE   r8   rP   rW   r   r   r   r   <module>   s(    $
N


