diff --git a/src/Model/Study.py b/src/Model/Study.py index 32893e3648f725a253d75f9c68af12e953a8b04e..a732cb862fb18a6ee03c7d2db5be56613705f4a3 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):