
^Q\                 @   s\   d  Z  d d l m Z d d l Z d d l m Z d d l m Z Gd d   d e  Z d S)z|
Daily cleanup job.

Can be run as a cronjob to clean out old data from the database (only expired
sessions at the moment).
    )contextmanagerN)timezone)DailyJobc               @   s"   e  Z d  Z d Z d d   Z d S)JobzCache (db) cleanup Jobc                s  d d l  m } d d l m   d d  l } t   d  rG   j } n t d    f d d   } t | d  r5d d l m	 } d d	 l m
 } m } x t j | j  D] \ } } | d
 j d  r | | }	 | j |	 j  }
 | d |
  4 | |
 j   } t j   } |	 j |
 | |  Wd  QXq q Wd  St | d  r| j j d  rd d l m } | j | j d <| j d d   } |   @ | j   } | j d | j j |  | j j d  f  Wd  QXqn  d  S)Nr   )settings)transactionatomicc             3   s   d  V  j  d |   d  S)Nusing)Zcommit_unless_managed)r	   )r    [/var/www/dbchiro/venv/build/django-extensions/django_extensions/jobs/daily/cache_cleanup.pyr      s    zJob.execute.<locals>.atomicCACHES)caches)routerconnectionsZBACKENDZDatabaseCacher	   CACHE_BACKENDzdb://)
connectionZTZ   z,DELETE FROM %s WHERE %s < current_timestamp;expires)Zdjango.confr   Z	django.dbr   oshasattrr   r   Zdjango.core.cacher   r   r   six	iteritemsr   endswithZdb_for_writeZcache_model_classcursorr   nowZ_cullr   
startswithr   Z	TIME_ZONEenvironexecuteopsZ
quote_name)selfr   r   r   r   r   r   Z
cache_nameZcache_optionscachedbr   r   r   Z
table_namer
   )r   r   r      s<    
 
zJob.executeN)__name__
__module____qualname__helpr   r
   r
   r
   r   r      s   r   )	__doc__
contextlibr   r   Zdjango.utilsr   Z!django_extensions.management.jobsr   r   r
   r
   r
   r   <module>   s
   