a
    Dg
                     @   sz   d dl 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 e d	Ze
 dd
dZdS )    N)defaultdict)urlsplit
urlunsplit)settings)task)get_content_languages   )get_backendszwagtail.frontendcachec              
      s`  | sd S t ||}|sd S ttdd}|r0t ni }ttdt| }tjr|rdd| }g }|D ]T}| D ]J}	t|	}
t	|
j
|
jt|d| |
j|
j|
jf}||v rqp|| qpqh|} tt}| D ]}	|t|	j |	 q| D ]j\ }  fdd| D }|s"td	  q| D ].\}}| D ]}	td
||	 q6||  q*qd S )NZWAGTAIL_I18N_ENABLEDFZWAGTAILFRONTENDCACHE_LANGUAGESz^/(%s)/|z/%s/c                    s    i | ]\}}|  r||qS  )Zinvalidates_hostname).0backend_namebackendhostnamer   c/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/wagtail/contrib/frontend_cache/tasks.py
<dictcomp>E   s   
z.purge_urls_from_cache_task.<locals>.<dictcomp>z#Unable to find purge backend for %sz[%s] Purging URL: %s)r	   getattrr   r   listkeysZUSE_I18Njoinr   r   schemenetlocresubpathqueryfragmentappendr   itemsloggerinfoZpurge_batch)urlsZbackend_settingsbackendsZwagtail_i18n_enabledZcontent_languages	languagesZlangs_regexZnew_urlsZisocodeurlZupnew_urlZurls_by_hostnameZbackends_for_hostnamer   r   r   r   r   purge_urls_from_cache_task   sT    


r'   )NN)loggingr   collectionsr   urllib.parser   r   Zdjango.confr   Zdjango_tasksr   Zwagtail.coreutilsr   utilsr	   	getLoggerr    r'   r   r   r   r   <module>   s   
