o
    ˜¨ÊhS
  ã                   @   s–   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	m
Z
mZmZ e	de dd	�Zee
jƒd
d„ ƒZee
jdd�dd„ ƒZee
jƒdd„ ƒZdS )é    N)Úsettings)ÚDEFAULT_CACHE_ALIASÚcaches)ÚFileBasedCacheé   )ÚErrorÚTagsÚWarningÚregisterz4You must define a '%s' cache in your CACHES setting.zcaches.E001©Úidc                 K   s   t tjvrtgS g S ©N)r   r   ÚCACHESÚE001)Úapp_configsÚkwargs© r   úK/var/www/html/env/lib/python3.10/site-packages/django/core/checks/caches.pyÚ!check_default_cache_is_configured   s   
r   T)Údeployc                    s$  g }dD ]‹}t t|d ƒ}|sq|dkr1tƒ }|D ]}t|ttfƒr%|\}}| t |¡ 	¡ ¡ qnt |¡ 	¡ h}tj
D ]R}t| }	t|	tƒsHq<t |	j¡ 	¡ ‰ t‡ fdd„|D ƒƒr^d}
nt‡ fdd„|D ƒƒrld}
nt‡ fdd„|D ƒƒrzd	}
nq<| td
|› d|
› d|› d�dd�¡ q<q|S )N)Ú
MEDIA_ROOTÚSTATIC_ROOTÚSTATICFILES_DIRSr   c                 3   s   � | ]}|ˆ kV  qd S r   r   ©Ú.0Úpath©Ú
cache_pathr   r   Ú	<genexpr>*   s   € z3check_cache_location_not_exposed.<locals>.<genexpr>Úmatchesc                 3   s   � | ]}|ˆ j v V  qd S r   ©Úparentsr   r   r   r   r   ,   ó   € z	is insidec                 3   s   � | ]}ˆ |j v V  qd S r   r    r   r   r   r   r   .   r"   ÚcontainsúYour 'zf' cache configuration might expose your cache or lead to corruption of your data because its LOCATION ú Ú.zcaches.W002r   )Úgetattrr   ÚsetÚ
isinstanceÚlistÚtupleÚaddÚpathlibÚPathÚresolver   r   r   Ú_dirÚanyÚappendr	   )r   r   ÚerrorsÚnameÚsettingÚpathsÚstaticfiles_dirÚ_ÚaliasÚcacheÚrelationr   r   r   Ú check_cache_location_not_exposed   sJ   ý

þþüÿór<   c                 K   s\   g }t j ¡ D ]$\}}t| }t|tƒsqt |d ¡ ¡ s+| 	t
d|› d�dd�¡ q|S )NÚLOCATIONr$   z@' cache LOCATION path is relative. Use an absolute path instead.zcaches.W003r   )r   r   Úitemsr   r)   r   r-   r.   Úis_absoluter2   r	   )r   r   r3   r9   Úconfigr:   r   r   r   Ú"check_file_based_cache_is_absolute=   s   

ýÿ€rA   )r-   Údjango.confr   Údjango.core.cacher   r   Ú$django.core.cache.backends.filebasedr   Ú r   r   r	   r
   r   r   r<   rA   r   r   r   r   Ú<module>   s    þ

&