
    X@	gJ                         d dl mZ d dlmZ 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e          ZdS )    )Command)BaseCommand)DEFAULT_DB_ALIAS)BACKUP_ROOT
MEDIA_ROOTNc                        e Zd Zd Zd Zd ZdS )r   c           	      .   | j                             d           t                                          t          dd           | j                             d           | j                             d           t
          j                            t          d          }t          j
        t
          j                            t          |          d          5 }t          |d	          5 }|                    t          j        |                                                     d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   	 t                                          |t          d
g dd d           | j                             d           nQ# t          $ rD}| j                             d                    t!          |                               Y d }~nd }~ww xY wt          j        |           d S # t          j        |           w xY w)Nu+   Début du nettoyage de la base de données.   F)database	verbosityinteractiveu*   Nettoyage de la base de données terminé.u;   début insertion de la sauvegarde dans la base de données.ze-colle.jsonrbwbjson)r   formatexcludeignore	app_labelr   u>   Insertion de la sauvegarde dans la base de données terminée.u+   Erreur lors de l'insertion des données: {})stdoutwriteFlushhandler   ospathjoinr   bz2open
decompressreadLoaddata	Exceptionr   strremove)selffichierfichier_jsonfichier_bz2fichierjsones         3/opt/e-colle/accueil/management/commands/restore.py	gere_jsonzCommand.gere_json   sX   +ABBB''..,u.MMM+@AAA+QRRRk.99,
x[11$77 :;\4   :Kcn[%5%5%7%788999: : : : : : : : : : : : : : :: : : : : : : : : : : : : : :::\,<Vu  ; ; ;
 ;UVVVV 
 S S S;BII#a&&QQRRRRRRRRS
 9\29\sf   E&:D, E,D0	0E3D0	4EE
E-F <G> 
G%!:G G>  G%%G> >Hc                 z   |dk    rt          j        t                    }d |D             }d |D             }|D ]Q}t          j        |          D ]:}|dk    r2t          j        t           j                            ||                     ;R|dv r*| j                            d           	 t          j	        t           j                            t          |          d          }|                    t                     	 t          j        dd	d
t          g           n*# t          $ r | j                            d           Y nw xY w| j                            d           n*# t          $ r | j                            d           Y nw xY w|                                 dS # |                                 w xY wdS )u=   vide la bdd puis y insère les données de la sauvegarde json2c                 X    g | ]'}t           j                            t          |          (S  )r   r   r   r   ).0files     r*   
<listcomp>z&Command.gere_media.<locals>.<listcomp>$   s(    IIIT"',,z400III    c                 P    g | ]#}t           j                            |          !|$S r/   )r   r   isdir)r0   ds     r*   r2   z&Command.gere_media.<locals>.<listcomp>%   s+    ===BGMM!,<,<=!===r3   z
.gitignore23u&   Début restauration des fichiers mediazr:xzchgrpz-Rwebu:   Problème dans l'attribution des droits des fichiers mediau)   Restauration des fichiers media terminéez1Erreur lors de la restauration des fichiers mediaN)r   listdirr   r#   r   r   r   r   tarfiler   r   
extractall
subprocessrunr!   close)r$   fichier_mediachoixrepertoires
repertoirefichiermediaarchive_zips          r*   
gere_mediazCommand.gere_media    s   
c\\J'';II[III;==[===;  7 7z
:.. 7 7%%iZ556667 d]];=>>>,rw||KFFvNNK:&&&U^WT%
34444 U U U	[STTTTTU
 	KABBBB  K K KKIJJJJJK
 K ]sO   ,AE" ?D E" $EE" EE" F" "$F	F" F		F" "F8c                    t          d t          j        t                    D                       }|s| j                            d           d S t          t          dt          |          dz             |          D ]3\  }}| j                            d	                    ||                     4t          d          }|dk    s|                                r)dt          |          cxk     rt          |          k    son | j                            d           t          d          }|dk    s>|                                Cdt          |          cxk     rt          |          k    jn m|dk    r| j                            d	           d S t          |          }||dz
           }|                    d
          d                             d          d         }d	                    |          }d}t          j                            t          j                            t          |                    r| j                            d           t                      }|dvr,| j                            d           t                      }|dv,|dk    r| j                            d	           n|                     ||           |dk    r|                     |           d S d S )Nc                 .    g | ]}|d d         dk    |S )Nz.bz2r/   )r0   fs     r*   r2   z"Command.handle.<locals>.<listcomp><   s*    PPPqqv?O?O?O?O?Or3   uc   Aucune sauvegarde des données n'est présente,
				impossible de charger des données antérieuresr
   z{}: {}uM   Quelle sauvegarde voulez-vous charger? (Taper le numéro ou a pour abandon): ar   u   numéro inexistant, recommencezabandon_.zecolle-media_{}.tar.xz1u1  Il existe une sauvegarde des fichiers media associée, que voulez-vous faire?
1. l'ignorer
2. effacer tous les fichiers media existants et mettre ceux de la sauvegarde à la place
3. conserver les fichiers media existants et ajouter en plus ceux de la sauvegarde (en écrasant les doublons)
a. abandonner
a123zchoix invalide, recommencez)sortedr   r:   r   r   r   ziprangelenr   input	isnumericintsplitr   isfiler   rF   r+   )	r$   
app_labelsoptionsfichiers_bz2numr%   dater@   rA   s	            r*   r   zCommand.handle;   s   PPBJ{$;$;PPPQQ,	 "; 7 8 8 8 8 8 53|#4#4Q#677EE 5 5|sGKhooc7334444	^	_	_3SjjCMMOOjCHH0Q0Q0Q0QL@Q@Q0Q0Q0Q0QK7888
_
`
`C SjjCMMOOjCHH0Q0Q0Q0QL@Q@Q0Q0Q0Q0Q0Q 
3hhKi     
c((C3q5!G==a &&s++A.D,33D99M
E	w~~bgll;}==>> ,	[    
 WWU
k5666gge  	
k	""""
oomU+++||	^^G |r3   N)__name__
__module____qualname__r+   rF   r   r/   r3   r*   r   r      sA          &  6$ $ $ $ $r3   r   )(django.core.management.commands.loaddatar   r    %django.core.management.commands.flushr   django.core.management.baser   	django.dbr   ecolle.settingsr   r   r   r   r;   r=   r/   r3   r*   <module>rg      s    H H H H H H B B B B B B 3 3 3 3 3 3 & & & & & & 3 3 3 3 3 3 3 3 				 



     T T T T Tk T T T T Tr3   