a
    Sic                     @   s   d dl mZmZmZ d dlmZ d dlmZ d dlm	Z	 G dd dZ
G dd dZG d	d
 d
Zeejejejdd Zeejejdd Zeejejdd Zeejdd ZdS )    )TagsWarningregister)import_string)AxesStandaloneBackend)settingsc                   @   s   e Zd ZdZdZdZdZdS )Messagesa]  You are using the django-axes cache handler for login attempt tracking. Your cache configuration is however invalid and will not work correctly with django-axes. This can leave security holes in your login systems as attempts are not tracked correctly. Reconfigure settings.AXES_CACHE and settings.CACHES per django-axes configuration documentation.zMYou do not have 'axes.middleware.AxesMiddleware' in your settings.MIDDLEWARE.zmYou do not have 'axes.backends.AxesStandaloneBackend' or a subclass in your settings.AUTHENTICATION_BACKENDS.zVYou have a deprecated setting {deprecated_setting} configured in your project settingsN__name__
__module____qualname__CACHE_INVALIDMIDDLEWARE_INVALIDBACKEND_INVALIDSETTING_DEPRECATED r   r   G/var/www/html/django/DPS/env/lib/python3.9/site-packages/axes/checks.pyr      s   r   c                   @   s   e Zd ZdZdZdZdZdS )HintsNzQAxesModelBackend was renamed to AxesStandaloneBackend in django-axes version 5.0.r	   r   r   r   r   r      s   r   c                   @   s   e Zd ZdZdZdZdZdS )Codesz	axes.W001z	axes.W002z	axes.W003z	axes.W004Nr	   r   r   r   r   r   !   s   r   c                 K   sl   t tdd}t tdd}tj|i }|dd}g d}g }|dkrh||v rh|ttjtjt	jd |S )	NAXES_HANDLER Z
AXES_CACHEdefaultBACKEND)z+django.core.cache.backends.dummy.DummyCachez-django.core.cache.backends.locmem.LocMemCachez3django.core.cache.backends.filebased.FileBasedCachez$axes.handlers.cache.AxesCacheHandlermsghintid)
getattrr   CACHESgetappendr   r   r   r   r   )app_configskwargsZaxes_handlerZaxes_cache_keyZaxes_cache_configZaxes_cache_backendZaxes_cache_backend_incompatiblewarningsr   r   r   axes_cache_check(   s     r$   c                 K   s,   g }dt jvr(|ttjtjtjd |S )Nzaxes.middleware.AxesMiddlewarer   )r   
MIDDLEWAREr    r   r   r   r   r   )r!   r"   r#   r   r   r   axes_middleware_checkE   s    
r&   c                 K   s   g }d}t jD ]~}zt|}W nZ tyL } ztd|W Y d }~n6d }~0  tyx } ztd|W Y d }~n
d }~0 0 t|trd} qq|s|tt	j
tj
tj
d |S )NFzDCan not find module path defined in settings.AUTHENTICATION_BACKENDSzHCan not import backend class defined in settings.AUTHENTICATION_BACKENDSTr   )r   AUTHENTICATION_BACKENDSr   ModuleNotFoundErrorImportError
issubclassr   r    r   r   r   r   r   )r!   r"   r#   foundnamebackender   r   r   axes_backend_checkU   s:    

r/   c              	   K   s\   g }ddg}|D ]F}z.t t| |ttjj|dd tjd W q tyT   Y q0 q|S )NZAXES_DISABLE_SUCCESS_ACCESS_LOGZAXES_LOGGER)deprecated_settingr   )	r   r   r    r   r   r   formatr   AttributeError)r!   r"   r#   Zdeprecated_settingsr0   r   r   r   axes_deprecation_checkv   s&    
	r3   N)Zdjango.core.checksr   r   r   django.utils.module_loadingr   Zaxes.backendsr   	axes.confr   r   r   r   securitycachescompatibilityr$   r&   r/   r3   r   r   r   r   <module>   s   


 