Status: Rename SavedStatus to StudyStatus and add scenario to StudyStatus.

scenarios
Pierre-Antoine Rouby 2024-08-23 14:35:04 +02:00
parent 7274ff5e2d
commit 71b631fbe4
8 changed files with 56 additions and 28 deletions

View File

@ -21,7 +21,6 @@ import unittest
import warnings import warnings
import tempfile import tempfile
from Model.Saved import SavedStatus
from Model.Study import Study from Model.Study import Study
from Model.River import River from Model.River import River

View File

@ -20,7 +20,7 @@ import os
import unittest import unittest
import tempfile import tempfile
from Model.Saved import SavedStatus from Model.Status import StudyStatus
from Model.Network.Graph import Graph from Model.Network.Graph import Graph
from Model.Network.Edge import Edge from Model.Network.Edge import Edge
@ -28,7 +28,7 @@ from Model.Network.Node import Node
def new_graph(): def new_graph():
status = SavedStatus() status = StudyStatus()
g = Graph(status=status) g = Graph(status=status)
return g return g

View File

@ -30,8 +30,7 @@ class Scenario(SQLSubModel):
name: str = "", name: str = "",
description: str = "", description: str = "",
revision: int = 0, revision: int = 0,
parent=None, parent=None):
status=None):
super(Scenario, self).__init__() super(Scenario, self).__init__()
self._set_id(id) self._set_id(id)
@ -40,7 +39,6 @@ class Scenario(SQLSubModel):
self._description = description self._description = description
self._revision = revision self._revision = revision
self._parent = parent self._parent = parent
self._status = status
def _set_id(self, id): def _set_id(self, id):
if id == -1: if id == -1:
@ -52,6 +50,10 @@ class Scenario(SQLSubModel):
self._id + 1, Scenario._id_cnt + 1 self._id + 1, Scenario._id_cnt + 1
) )
@property
def id(self):
return self._id
@classmethod @classmethod
def _db_create(cls, execute): def _db_create(cls, execute):
execute(""" execute("""
@ -133,8 +135,7 @@ class Scenario(SQLSubModel):
new = cls( new = cls(
id=id, name=name, description=desc, id=id, name=name, description=desc,
revision=revi, parent=parent, revision=revi, parent=parent
status=data["status"]
) )
scenarios[id] = new scenarios[id] = new
@ -177,6 +178,10 @@ class Scenario(SQLSubModel):
def revision(self): def revision(self):
return self._revision return self._revision
@revision.setter
def revision(self, revision):
self._revision = revision
@property @property
def parent(self): def parent(self):
return self._parent return self._parent

View File

@ -1,4 +1,4 @@
# Saved.py -- Pamhyr model status class # Status.py -- Pamhyr model status class
# Copyright (C) 2023-2024 INRAE # Copyright (C) 2023-2024 INRAE
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
@ -21,19 +21,46 @@ import logging
logger = logging.getLogger() logger = logging.getLogger()
class SavedStatus(object): class StudyStatus(object):
def __init__(self, version=0): def __init__(self, scenario=None):
super(SavedStatus, self).__init__() super(StudyStatus, self).__init__()
self._version = version self._scenario = scenario
self._saved = True self._saved = True
@property
def scenario_id(self):
if self._scenario is None:
return -1
return self._scenario.id
@property
def scenario(self):
return self._scenario
@scenario.setter
def scenario(self, scenario):
self._scenario = scenario
@property @property
def version(self): def version(self):
return self._version if self._scenario is None:
return 0
return self._scenario.revision
@version.setter @version.setter
def version(self, version): def version(self, version):
self._version = version if self._scenario is None:
return
self._scenario.revision = version
def str_display(self):
if self._scenario is None:
return ""
return f"{self._scenario.name}"
def is_saved(self): def is_saved(self):
return self._saved return self._saved
@ -44,11 +71,11 @@ class SavedStatus(object):
def modified(self): def modified(self):
if self._saved: if self._saved:
self._version += 1 self.version += 1
logger.debug( logger.debug(
"STATUS: Model status set as modified " + "STATUS: Model status set as modified " +
f"at version {self._version}" f"at version {self.version}"
) )
self._saved = False self._saved = False

View File

@ -18,7 +18,6 @@
from tools import trace, timer from tools import trace, timer
from Model.Saved import SavedStatus
from Model.Tools.PamhyrList import PamhyrModelList from Model.Tools.PamhyrList import PamhyrModelList
from Model.Stricklers.Stricklers import Stricklers from Model.Stricklers.Stricklers import Stricklers

View File

@ -26,8 +26,7 @@ from tools import timer, timestamp
from Model.Tools.PamhyrDB import SQLModel from Model.Tools.PamhyrDB import SQLModel
from Model.Scenarios import Scenarios from Model.Scenarios import Scenarios
from Model.Scenario import Scenario from Model.Scenario import Scenario
from Model.Saved import SavedStatus from Model.Status import StudyStatus
from Model.Serializable import Serializable
from Model.Except import NotImplementedMethodeError from Model.Except import NotImplementedMethodeError
from Model.River import River from Model.River import River
@ -52,7 +51,7 @@ class Study(SQLModel):
self._filename = filename self._filename = filename
super(Study, self).__init__(filename=filename) super(Study, self).__init__(filename=filename)
self.status = SavedStatus() self.status = StudyStatus()
# Study general information # Study general information
self._name = "" self._name = ""
@ -69,7 +68,6 @@ class Study(SQLModel):
Scenario( Scenario(
id=0, name='default', id=0, name='default',
description='Default scenario', description='Default scenario',
status=self.status,
) )
) )
self._river = River(status=self.status) self._river = River(status=self.status)

View File

@ -20,7 +20,7 @@ import os
import unittest import unittest
import tempfile import tempfile
from Model.Saved import SavedStatus from Model.Status import StudyStatus
from Model.Study import Study from Model.Study import Study
from Model.River import River from Model.River import River
@ -61,13 +61,13 @@ class StudyTestCase(unittest.TestCase):
class RiverTestCase(unittest.TestCase): class RiverTestCase(unittest.TestCase):
def test_create_river(self): def test_create_river(self):
status = SavedStatus() status = StudyStatus()
river = River(status=status) river = River(status=status)
self.assertNotEqual(river, None) self.assertNotEqual(river, None)
def test_create_river_nodes(self): def test_create_river_nodes(self):
status = SavedStatus() status = StudyStatus()
river = River(status=status) river = River(status=status)
self.assertNotEqual(river, None) self.assertNotEqual(river, None)
@ -86,7 +86,7 @@ class RiverTestCase(unittest.TestCase):
self.assertEqual(nodes[2], n2) self.assertEqual(nodes[2], n2)
def test_create_river_edges(self): def test_create_river_edges(self):
status = SavedStatus() status = StudyStatus()
river = River(status=status) river = River(status=status)
self.assertNotEqual(river, None) self.assertNotEqual(river, None)

View File

@ -24,7 +24,7 @@ from numpy import mean
from Scripts.AScript import AScript from Scripts.AScript import AScript
from Model.Saved import SavedStatus from Model.Status import StudyStatus
from Model.Geometry.Reach import Reach from Model.Geometry.Reach import Reach
logger = logging.getLogger() logger = logging.getLogger()
@ -81,7 +81,7 @@ class Script3DST(AScript):
return 1 return 1
try: try:
status = SavedStatus() status = StudyStatus()
my_reach = Reach(status=status) my_reach = Reach(status=status)
my_reach.import_geometry(st_file) my_reach.import_geometry(st_file)