Compare commits

...

2 Commits

4 changed files with 29 additions and 4 deletions

View File

@ -37,6 +37,8 @@ logger = logging.getLogger()
class Study(SQLModel): class Study(SQLModel):
_version = "0.2.0"
_sub_classes = [ _sub_classes = [
Scenario, Scenario,
River, River,
@ -44,7 +46,6 @@ class Study(SQLModel):
def __init__(self, filename=None, init_new=True): def __init__(self, filename=None, init_new=True):
# Metadata # Metadata
self._version = "0.2.0"
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()

View File

@ -127,6 +127,7 @@ class TableModel(PamhyrTableModel):
) )
self.endRemoveRows() self.endRemoveRows()
self.update()
def sort(self, _reverse, parent=QModelIndex()): def sort(self, _reverse, parent=QModelIndex()):
self.layoutAboutToBeChanged.emit() self.layoutAboutToBeChanged.emit()

View File

@ -31,7 +31,7 @@ from platformdirs import user_cache_dir
from Solver.AdisTS import AdisTS from Solver.AdisTS import AdisTS
from Solver.Mage import Mage8 from Solver.Mage import Mage8
from tools import logger_exception from tools import logger_exception, pamhyr_db_need_update
from PyQt5 import QtGui from PyQt5 import QtGui
from PyQt5.QtGui import ( from PyQt5.QtGui import (
@ -1087,10 +1087,13 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
dialog.setDirectory(os.path.dirname(self.conf.last_study)) dialog.setDirectory(os.path.dirname(self.conf.last_study))
if dialog.exec_(): if dialog.exec_():
file_name = dialog.selectedFiles() file_name = dialog.selectedFiles()[0]
if pamhyr_db_need_update(file_name, Study._version):
shutil.copyfile(file_name, file_name + ".old")
def fn(): def fn():
self._tmp_study = Study.open(file_name[0]) self._tmp_study = Study.open(file_name)
dlg = WaitingDialog( dlg = WaitingDialog(
payload_fn=fn, payload_fn=fn,

View File

@ -19,6 +19,7 @@
import os import os
import time import time
import logging import logging
import sqlite3
import traceback import traceback
from datetime import datetime, timedelta from datetime import datetime, timedelta
@ -456,3 +457,22 @@ def _parse_word_up_to_next_sep(words, sep=" "):
rest = words[i+1:] rest = words[i+1:]
return word, rest return word, rest
######
# DB #
######
def pamhyr_db_need_update(db_file, expected_version):
db = sqlite3.connect(db_file, check_same_thread=False)
cur = db.cursor()
data = cur.execute(
"SELECT value FROM info WHERE key='version'"
).fetchall()
db.close()
if len(data) == 0:
return True
return expected_version != data[0]