o
    Dju                     @   s\   d dl mZ d dlmZ d dlmZmZ d dlZd dl	Z	d dl
Z
d dlZG dd deZdS )    )Command)DEFAULT_DB_ALIAS)BACKUP_ROOT
MEDIA_ROOTNc                       s4   e Zd Zdd Z fddZdd Zdd Z  ZS )	r   c                 C   s   |j dddddd d S )Nz-mz--media
store_truebackup_mediazjinclude media files in the backup,
            which can increase drastically the size disk space required)actiondesthelp)add_argument)selfparser r   </home/reyt/e-colle-new/accueil/management/commands/backup.pyadd_arguments   s   
zCommand.add_argumentsc                    s,  t jtd}t jtdtj  }| j	
d t jg ddddtdd	d	d	g |d
 | j	
d t j|}| j	
d t|d-}t|d}|
t|  t | W d    n1 sgw   Y  W d    n1 svw   Y  t j|}d||  d }| j	
d| ||fS )Nzecolle.jsonzecolle_{}.json.bz2u-   Début de la sauvegarde de la base de donnée)authcontenttypessessionsjson      TF)excludeformat	verbosityindentdatabase	tracebackuse_natural_foreign_keysuse_natural_primary_keysuse_base_managerprimary_keysoutputu+   sauvegarde de la base de donnée terminée
u$   Début compression de la sauvegarde
rbwbd   uG   Compression de la sauvegarde terminée (taux de compression: {:.02f}%)
)ospathjoinr   r   datetimedatetoday	isoformatstdoutwritesuperhandler   getsizeopenbz2compressreadremove)r   r!   
bz2_outputtaille_fichierfichierfichier_bz2
taille_bz2compression	__class__r   r   json_backup   s,   zCommand.json_backupc           	      C   s  t jtdtj  }| j	
d d}t|d>}t tD ]0\}}}|D ](}|dkrR|t jt j||7 }|t j||t jt j||t q*q#W d    n1 s^w   Y  |dkrtdt j||  d }nd}| j	
d| ||fS )	Nzecolle-media_{}.tar.xzu+   Début de la sauvegarde des fichiers media
r   zw:xzz
.gitignorer   r$   uH   Sauvegarde des fichiers media terminée (taux de compression: {:.02f}%)
)r%   r&   r'   r   r   r(   r)   r*   r+   r,   r-   tarfiler1   walkr   r0   addrelpath)	r   media_outputtaille_repertoirearchive_zipfolder
subfoldersfilesfiler;   r   r   r   media_backup%   s$   *zCommand.media_backupc                 O   s$   |d }|    |r|   d S d S )Nr   )r>   rJ   )r   
app_labelsoptionsr   r   r   r   r/   6   s
   zCommand.handle)__name__
__module____qualname__r   r>   rJ   r/   __classcell__r   r   r<   r   r   	   s
    r   )(django.core.management.commands.dumpdatar   Backup	django.dbr   ecolle.settingsr   r   r%   r?   r2   r(   r   r   r   r   <module>   s    