Compare commits

...

5 Commits

7 changed files with 70 additions and 26 deletions

View File

@ -102,7 +102,7 @@ class OutputRKAdists(SQLSubModel):
cls._db_create(execute)
created = True
if major == "0" and int(minor) <= 2:
if major == "0" and int(minor) < 2:
if not created:
cls._db_update_to_0_2_0(execute, data)

View File

@ -116,9 +116,16 @@ class Results(SQLSubModel):
@classmethod
def _db_update(cls, execute, version, data=None):
major, minor, release = version.strip().split(".")
create = False
if major == "0" and int(minor) <= 2:
if major == "0" and int(minor) < 2:
cls._db_create(execute)
create = True
if major == "0" and int(minor) == 2:
if int(release) < 1 and not create:
cls._db_create(execute)
create = True
return cls._update_submodel(execute, version, data)
@ -138,6 +145,9 @@ class Results(SQLSubModel):
f"WHERE scenario = {scenario.id}"
)
if table is None:
yield new
if len(table) > 1:
logger.warning("Multiple results for this scenario")
@ -169,7 +179,7 @@ class Results(SQLSubModel):
new = new_results
return new
yield new
def _db_save(self, execute, data=None):
if self._status.scenario.id != self._owner_scenario:

View File

@ -105,9 +105,16 @@ class Profile(SQLSubModel):
@classmethod
def _db_update(cls, execute, version, data=None):
major, minor, release = version.strip().split(".")
create = False
if major == "0" and int(minor) <= 2:
if major == "0" and int(minor) < 2:
cls._db_create(execute)
create = True
if major == "0" and int(minor) == 2:
if int(release) < 1 and not create:
cls._db_create(execute)
create = True
return cls._update_submodel(execute, version, data)
@ -155,7 +162,9 @@ class Profile(SQLSubModel):
elif key in ["sl"]:
sf = ">" + ''.join(itertools.repeat("f", len_data))
values = struct.unpack(sf, data)
values = cls._db_load_data_sl_format(values, len_data, timestamps)
values = cls._db_load_data_sl_format(
values, len_data, timestamps
)
for timestamp, value in zip(timestamps, values):
new_data.set(timestamp, key, value)

View File

@ -16,6 +16,7 @@
# -*- coding: utf-8 -*-
import types
import logging
from tools import flatten, logger_exception
@ -617,8 +618,8 @@ class River(Graph):
objs.append(self._D90AdisTS)
objs.append(self._DIFAdisTS)
if self._results is not None:
objs.append(self._results)
if self.results is not None:
objs.append(self.results)
self._save_submodel(execute, objs, data)
return True
@ -861,3 +862,15 @@ Last export at: @date."""
)
return has
@property
def results(self):
results = self._results
if isinstance(results, types.GeneratorType):
self._results = next(results)
return self._results
@results.setter
def results(self, results):
self._results = results

View File

@ -94,7 +94,7 @@ class Scenario(SQLSubModel):
def _db_update(cls, execute, version, data=None):
major, minor, release = version.strip().split(".")
if major == "0" and int(minor) <= 2:
if major == "0" and int(minor) < 2:
cls._db_create(execute)
cls._db_add_default(execute)

View File

@ -37,7 +37,7 @@ logger = logging.getLogger()
class Study(SQLModel):
_version = "0.2.0"
_version = "0.2.1"
_sub_classes = [
Scenario,
@ -275,7 +275,7 @@ class Study(SQLModel):
"INSERT INTO info VALUES ('study_release', '0')"
)
if major == "0" and int(minor) <= 2:
if major == "0" and int(minor) < 2:
self._add_into_info_if_not_exists('current_scenario', '0')
if major == "0" and int(minor) < 2:
@ -492,9 +492,11 @@ class Study(SQLModel):
# Reload river data
river = River._db_load(
sql_exec,
data=data
sql_exec, data=data
)
data["study"] = self
river._db_load_results(sql_exec, data=data)
self._river_scenario_cache[scenario] = river
self._river = river
@ -530,8 +532,8 @@ class Study(SQLModel):
@property
def results(self):
return self._river._results
return self._river.results
@results.setter
def results(self, results):
self._river._results = results
self._river.results = results

View File

@ -573,7 +573,7 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
def setup_results(self):
self._last_solver = None
self._last_results = None
self.last_results = None
default = None
@ -590,10 +590,23 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
# Last solver note found, use default-mage if exists
self._last_solver = default
@property
def last_results(self):
if self._study is None:
return None
return self._study.results
@last_results.setter
def last_results(self, results):
if self._study is None:
return
self._study.results = results
def set_results(self, solver, results):
self._last_solver = solver
self._last_results = results
self._study.results = results
self.last_results = results
self.enable_actions("action_menu_results_last", True)
@ -1479,9 +1492,9 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
# If no specific results, get last results
if results is None:
def reading_fn():
self._tmp_results = self._last_results
self._tmp_results = self.last_results
if self._last_results is None:
if self.last_results is None:
def reading_fn():
self._tmp_results = solver.results(
self._study,
@ -1543,9 +1556,9 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
# If no specific results, get last results
if results is None:
def reading_fn():
self._tmp_results = self._last_results
self._tmp_results = self.last_results
if self._last_results is None:
if self.last_results is None:
def reading_fn():
self._tmp_results = solver.results(
self._study,
@ -1608,15 +1621,12 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
if self._last_solver is None:
return
if self._study is not None and self._study.results is not None:
self._last_results = self._study.results
if self._last_solver._type == "mage8":
self.open_solver_results(self._last_solver,
self._last_results)
self.last_results)
elif self._last_solver._type == "adistswc":
self.open_solver_results_adists(self._last_solver,
self._last_results)
self.last_results)
def open_results_from_file(self):
if self._study is None: