Model: Add status versioning and update study version to 0.0.10.

0.0.9
Pierre-Antoine Rouby 2024-05-22 17:20:30 +02:00
parent bbe127865b
commit 2ee8420b94
2 changed files with 46 additions and 11 deletions

View File

@ -22,10 +22,19 @@ logger = logging.getLogger()
class SavedStatus(object): class SavedStatus(object):
def __init__(self): def __init__(self, version=0):
super(SavedStatus, self).__init__() super(SavedStatus, self).__init__()
self._version = version
self._saved = True self._saved = True
@property
def version(self):
return self._version
@version.setter
def version(self, version):
self._version = version
def is_saved(self): def is_saved(self):
return self._saved return self._saved
@ -34,5 +43,11 @@ class SavedStatus(object):
self._saved = True self._saved = True
def modified(self): 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 self._saved = False

View File

@ -41,7 +41,7 @@ class Study(SQLModel):
def __init__(self, filename=None, init_new=True): def __init__(self, filename=None, init_new=True):
# Metadata # Metadata
self._version = "0.0.9" self._version = "0.0.10"
self.creation_date = datetime.now() self.creation_date = datetime.now()
self.last_modification_date = datetime.now() self.last_modification_date = datetime.now()
self.last_save_date = datetime.now() self.last_save_date = datetime.now()
@ -209,7 +209,12 @@ class Study(SQLModel):
def _create(self): def _create(self):
# Info (metadata) # Info (metadata)
self.execute( 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( self.execute(
"INSERT INTO info VALUES ('version', " + "INSERT INTO info VALUES ('version', " +
f"'{self._db_format(self._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 ('name', '')")
self.execute("INSERT INTO info VALUES ('description', '')") self.execute("INSERT INTO info VALUES ('description', '')")
self.execute( self.execute(
f"INSERT INTO info VALUES ('time_system', '{self._time_system}')") f"INSERT INTO info VALUES ('time_system', '{self._time_system}')"
)
self.execute( self.execute(
f"INSERT INTO info VALUES ('date', " + "INSERT INTO info VALUES ('date', " +
"'{self._date.timestamp()}')" f"'{self._date.timestamp()}')"
) )
self.execute( self.execute(
f"INSERT INTO info VALUES ('creation_date', " + "INSERT INTO info VALUES ('creation_date', " +
"'{self.creation_time.timestamp()}')" f"'{self.creation_date.timestamp()}')"
) )
self.execute( self.execute(
f"INSERT INTO info VALUES ('last_save_date', " + "INSERT INTO info VALUES ('last_save_date', " +
"'{self.last_save_time.timestamp()}')" f"'{self.last_save_date.timestamp()}')"
) )
self._create_submodel() self._create_submodel()
@ -245,6 +251,12 @@ class Study(SQLModel):
logger.debug("Update database") 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]): if self._update_submodel(version[0]):
self.execute( self.execute(
f"UPDATE info SET value='{self._version}' WHERE key='version'" f"UPDATE info SET value='{self._version}' WHERE key='version'"
@ -258,6 +270,9 @@ class Study(SQLModel):
def _load(cls, filename): def _load(cls, filename):
new = cls(init_new=False, filename=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 # TODO: Load metadata
new.name = new.execute("SELECT value FROM info WHERE key='name'")[0] new.name = new.execute("SELECT value FROM info WHERE key='name'")[0]
new.description = new.execute( new.description = new.execute(
@ -292,6 +307,11 @@ class Study(SQLModel):
def _save(self, progress=None): def _save(self, progress=None):
progress = progress if progress is not None else lambda: 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( self.execute(
f"UPDATE info SET " + f"UPDATE info SET " +
f"value='{self._db_format(self.name)}' WHERE key='name'" f"value='{self._db_format(self.name)}' WHERE key='name'"