diff --git a/src/Model/Saved.py b/src/Model/Saved.py index 90667a92236aa266e9cc8ddf8209b4fe22542f13..6b180b407f5fbcb74016ae959c9abcecefb8b9fb 100644 --- a/src/Model/Saved.py +++ b/src/Model/Saved.py @@ -22,10 +22,19 @@ logger = logging.getLogger() class SavedStatus(object): - def __init__(self): + def __init__(self, version=0): super(SavedStatus, self).__init__() + self._version = version self._saved = True + @property + def version(self): + return self._version + + @version.setter + def version(self, version): + self._version = version + def is_saved(self): return self._saved @@ -34,5 +43,11 @@ class SavedStatus(object): self._saved = True def modified(self): - # logger.debug("model status set as modified") + if self._saved: + self._version += 1 + + logger.debug( + "STATUS: Model status set as modified " + + f"at version {self._version}" + ) self._saved = False diff --git a/src/Model/Study.py b/src/Model/Study.py index c8ce1dd2c7964976223cf018da3b54a419566385..a25241cb0682ba8ab759f6731ba2e6b4fb5402e8 100644 --- a/src/Model/Study.py +++ b/src/Model/Study.py @@ -41,7 +41,7 @@ class Study(SQLModel): def __init__(self, filename=None, init_new=True): # Metadata - self._version = "0.0.9" + self._version = "0.0.10" self.creation_date = datetime.now() self.last_modification_date = datetime.now() self.last_save_date = datetime.now() @@ -209,7 +209,12 @@ class Study(SQLModel): def _create(self): # Info (metadata) self.execute( - "CREATE TABLE info(key TEXT NOT NULL UNIQUE, value TEXT NOT NULL)") + "INSERT INTO info VALUES ('study_release', '0')" + ) + + self.execute( + "CREATE TABLE info(key TEXT NOT NULL UNIQUE, value TEXT NOT NULL)" + ) self.execute( "INSERT INTO info VALUES ('version', " + f"'{self._db_format(self._version)}')", @@ -218,19 +223,20 @@ class Study(SQLModel): self.execute("INSERT INTO info VALUES ('name', '')") self.execute("INSERT INTO info VALUES ('description', '')") self.execute( - f"INSERT INTO info VALUES ('time_system', '{self._time_system}')") + f"INSERT INTO info VALUES ('time_system', '{self._time_system}')" + ) self.execute( - f"INSERT INTO info VALUES ('date', " + - "'{self._date.timestamp()}')" + "INSERT INTO info VALUES ('date', " + + f"'{self._date.timestamp()}')" ) self.execute( - f"INSERT INTO info VALUES ('creation_date', " + - "'{self.creation_time.timestamp()}')" + "INSERT INTO info VALUES ('creation_date', " + + f"'{self.creation_date.timestamp()}')" ) self.execute( - f"INSERT INTO info VALUES ('last_save_date', " + - "'{self.last_save_time.timestamp()}')" + "INSERT INTO info VALUES ('last_save_date', " + + f"'{self.last_save_date.timestamp()}')" ) self._create_submodel() @@ -245,6 +251,12 @@ class Study(SQLModel): logger.debug("Update database") + major, minor, release = version[0].split('.') + if major == "0" and minor == "0" and int(release) < 10: + self.execute( + "INSERT INTO info VALUES ('study_release', '0')" + ) + if self._update_submodel(version[0]): self.execute( f"UPDATE info SET value='{self._version}' WHERE key='version'" @@ -258,6 +270,9 @@ class Study(SQLModel): def _load(cls, filename): new = cls(init_new=False, filename=filename) + version = new.execute("SELECT value FROM info WHERE key='study_release'")[0] + new.status.version = int(version) + # TODO: Load metadata new.name = new.execute("SELECT value FROM info WHERE key='name'")[0] new.description = new.execute( @@ -292,6 +307,11 @@ class Study(SQLModel): def _save(self, progress=None): progress = progress if progress is not None else lambda: None + self.execute( + "INSERT INTO info VALUES ('study_release', "+ + f"'{self.status.version}')" + ) + self.execute( f"UPDATE info SET " + f"value='{self._db_format(self.name)}' WHERE key='name'"