Commit d6c8c0ed authored by matograine's avatar matograine

Add a function to retrieve backups

parent a607908a
......@@ -9,7 +9,7 @@
# pour le click context
from utils.common import Creating # Generator
from utils.retrieve import Retrieve
from utils.retrieve import Retrieve, BackupRetrieve
from utils.utils import CheckConfig
from utils.constants import DEFAULT_FOLDER, WALLETS_FOLDER, BACKUP_FOLDER
from sys import argv
......@@ -21,6 +21,8 @@ def help():
print ("Récupérer des dons : \"recuperer\"")
print ("Récupérer des dons depuis un dossier : \"recuperer <dossier>\"")
print ("Récupérer des dons depuis un fichier : \"recuperer fichier <fichier>\"")
print ("En cas de mauvaise récupération, tenter une récupération des backups : \"recuperer backup <année>\"")
print ("La récupération des backups est possible à plusieurs reprises.")
print ("Configurer le noeud Duniter : \"noeud <noeud> <port>\"")
print ("\nLes Ğ1Dons sont enregistrés dans {0}.".format(DEFAULT_FOLDER))
print ("Les fichiers de récupération sont enregistrés dans {0}.".format(DEFAULT_FOLDER + WALLETS_FOLDER))
......@@ -45,6 +47,10 @@ if len(argv) > 1:
Retrieve(folder=argv[2]).retrieve()
elif len(argv) == 4 and argv[2] == "fichier":
Retrieve(_file=argv[3]).retrieve()
elif len(argv) == 4 and argv[2] == "backup":
copy = BackupRetrieve(argv[3])
Retrieve(folder=copy.dest).retrieve()
copy.delete()
else:
print ("Erreur : information mal formatées.")
help()
......
import os
import shutil
import json
import re
from datetime import datetime
......@@ -194,4 +195,33 @@ class Retrieve():
for n in range (0, limit):
retrieving_wallets.pop(0)
class BackupRetrieve():
def __init__(self, year):
year = self.check_year(year)
self.orig = os.path.expanduser(DEFAULT_FOLDER + BACKUP_FOLDER + year)
self.dest = os.path.expanduser(DEFAULT_FOLDER + year)
if not os.path.isdir(self.orig):
message_exit("ERREUR : {0} n'a pas de dossier correspondant dans {1}.".format(year, DEFAULT_FOLDER + BACKUP_FOLDER))
if os.path.exists(self.dest):
try:
shutil.rmtree(self.dest)
except:
message_exit("ERREUR : le dossier {0} n'a pas pu être supprimé. Supprimez-le et recommencez.".format(self.dest))
shutil.copytree(self.orig, self.dest)
print("Récupération des backups {0}".format(year))
print("Dossier {0} copié dans {1}".format(self.orig, self.dest))
print("Si le processus ne se termine pas, vous pouvez le relancer.")
def __call__(self):
return self
def delete(self):
try:
shutil.rmtree(self.dest)
except:
message_exit("ERREUR : le dossier {0} n'a pas pu être supprimé. Supprimez-le manuellement.".format(self.dest))
def check_year(self, year):
if re.search(re.compile("^[0-9]{4}$"), year):
return str(year + "/")
message_exit("ERREUR : {0} n'est pas une année valide.".format(str(year)))
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment