From d09665163fe16ce05477fbe74784aa5928c9a238 Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr> Date: Wed, 5 Jul 2023 10:30:51 +0200 Subject: [PATCH] Study: Copy previous version of DB before all save. --- src/Model/Study.py | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/Model/Study.py b/src/Model/Study.py index 32893e36..a732cb86 100644 --- a/src/Model/Study.py +++ b/src/Model/Study.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- import os +import shutil from datetime import datetime from Model.DB import SQLModel @@ -41,6 +42,8 @@ class Study(SQLModel): else: self._init_db_file(filename, is_new = False) + self._old_save_id = 0 + @classmethod def checkers(cls): lst = [ @@ -62,9 +65,27 @@ class Study(SQLModel): return self.status.is_saved() def save(self): + # Save a copy of database + fdir, fname = os.path.split(self.filename) + + if self._old_save_id == 0: + try: + os.makedirs(os.path.join(fdir, "__old__")) + except FileExistsError as e: + shutil.rmtree(os.path.join(fdir, "__old__")) + os.makedirs(os.path.join(fdir, "__old__")) + except Exception as e: + print(e) + + fname = fname + "." + str(self._old_save_id) + filename = os.path.join(fdir, "__old__", fname) + shutil.copy(self.filename, filename) + self._old_save_id += 1 + + # Save self.last_save_date = datetime.now() - self.status.save() self._save() + self.status.save() @property def name(self): -- GitLab