From 66b67e2ea99969cae0ce2f5261e5e08fc4cb353a Mon Sep 17 00:00:00 2001 From: David Trattnig <david.trattnig@o94.at> Date: Wed, 18 Nov 2020 19:34:48 +0100 Subject: [PATCH] Recreate DB to model space. #41 --- run.py | 6 +++--- src/scheduling/models.py | 24 ++++++++++++++++++++++++ src/scheduling/scheduler.py | 32 +++----------------------------- 3 files changed, 30 insertions(+), 32 deletions(-) diff --git a/run.py b/run.py index 3fa2d593..eed4cc56 100755 --- a/run.py +++ b/run.py @@ -78,12 +78,12 @@ class EngineRunner: """ Starts Engine Core. """ - from src.scheduling.scheduler import AuraScheduler + from src.scheduling.models import AuraDatabaseModel from src.core.engine import Engine - # Check if the database has to be re-created + # Check if the database has to be re-) created if self.config.get("recreate_db") is not None: - AuraScheduler.init_database() + AuraDatabaseModel.recreate_db() if start_lqs: runner.run_lqs(lqs_debug_flags) diff --git a/src/scheduling/models.py b/src/scheduling/models.py index f0f751e9..89ae33c4 100644 --- a/src/scheduling/models.py +++ b/src/scheduling/models.py @@ -99,6 +99,30 @@ class AuraDatabaseModel(): return self.__dict__ + @staticmethod + def init_database(): + """ + Initializes the database. + + Raises: + sqlalchemy.exc.ProgrammingError: In case the DB model is invalid + """ + if AuraConfig.config().get("recreate_db") is not None: + AuraDatabaseModel.recreate_db(systemexit=True) + + # Check if tables exists, if not create them + try: + Playlist.is_empty() + except sa.exc.ProgrammingError as e: + errcode = e.orig.args[0] + + if errcode == 1146: # Error for no such table + model = AuraDatabaseModel() + model.recreate_db() + else: + raise + + @staticmethod def recreate_db(systemexit = False): """ diff --git a/src/scheduling/scheduler.py b/src/scheduling/scheduler.py index 731ce57d..4aab1ac3 100644 --- a/src/scheduling/scheduler.py +++ b/src/scheduling/scheduler.py @@ -21,12 +21,11 @@ import logging import threading import time -import sqlalchemy from src.base.config import AuraConfig from src.base.utils import SimpleUtil as SU -from src.scheduling.models import AuraDatabaseModel, Playlist +from src.scheduling.models import AuraDatabaseModel from src.base.exceptions import NoActiveTimeslotException, LoadSourceException from src.core.control import EngineExecutor from src.core.engine import Engine @@ -82,14 +81,14 @@ class AuraScheduler(threading.Thread): self.config = AuraConfig.config() self.logger = logging.getLogger("AuraEngine") self.programme = Programme() - self.timeslot_renderer = TimeslotRenderer(self) - AuraScheduler.init_database() + self.timeslot_renderer = TimeslotRenderer(self) self.fallback = fallback_manager self.engine = engine self.engine.scheduler = self self.is_soundsytem_init = False # Scheduler Initialization + AuraDatabaseModel.init_database() self.is_initialized = False self.is_engine_ready = False @@ -364,31 +363,6 @@ class AuraScheduler(threading.Thread): - # FIXME Move to adequate module - @staticmethod - def init_database(): - """ - Initializes the database. - - Raises: - sqlalchemy.exc.ProgrammingError: In case the DB model is invalid - """ - if AuraConfig.config().get("recreate_db") is not None: - AuraDatabaseModel.recreate_db(systemexit=True) - - # Check if tables exists, if not create them - try: - Playlist.is_empty() - except sqlalchemy.exc.ProgrammingError as e: - errcode = e.orig.args[0] - - if errcode == 1146: # Error for no such table - model = AuraDatabaseModel() - model.recreate_db() - else: - raise - - def terminate(self): """ -- GitLab