refactor: make web work again (split project <-> settings)

This commit is contained in:
Dobin Rutishauser
2025-06-18 21:24:35 +02:00
parent fcb40ccb6a
commit 6864656381
20 changed files with 214 additions and 349 deletions
+20 -22
View File
@@ -1,52 +1,50 @@
import pickle
import os
import yaml
import pickle
import logging
from typing import List, Tuple
from model.defs import *
from model.project import WebProject
from model.project import Settings
logger = logging.getLogger("Storage")
class Storage():
def __init__(self):
pass
def get_projects(self) -> List[WebProject]:
projects: List[WebProject] = []
def get_project_settings(self) -> List[Settings]:
project_settings: List[Settings] = []
for project_name in os.listdir(PATH_WEB_PROJECT):
project = self.get_project(project_name)
if project is None:
project_setting = self.get_project_setting(project_name)
if project_setting is None:
continue
projects.append(project)
return projects
project_settings.append(project_setting)
return project_settings
def get_project(self, project_name: str) -> WebProject:
logger.debug("Load project: {}".format(project_name))
def get_project_setting(self, project_name: str) -> Settings| None:
path = "{}/{}".format(PATH_WEB_PROJECT, project_name)
json_path = "{}/project.pickle".format(path)
if not os.path.exists(json_path):
return None
logger.info("Loading project from: {}".format(json_path))
with open(json_path, "rb") as f:
project = pickle.load(f)
return project
settings = pickle.load(f)
return settings
def add_project(self, project: WebProject):
# directories and contents
os.makedirs(PATH_WEB_PROJECT + project.name, exist_ok=True)
with open("{}/{}/project.pickle".format(PATH_WEB_PROJECT, project.name), "wb") as f:
pickle.dump(project, f)
def add_project_setting(self, settings: Settings):
os.makedirs(PATH_WEB_PROJECT + settings.project_name, exist_ok=True)
with open("{}/{}/project.pickle".format(PATH_WEB_PROJECT, settings.project_name), "wb") as f:
pickle.dump(settings, f)
def save_project(self, project: WebProject):
with open("{}/{}/project.pickle".format(PATH_WEB_PROJECT, project.name), "wb") as f:
pickle.dump(project, f)
def save_project_settings(self, settings: Settings):
with open("{}/{}/project.pickle".format(PATH_WEB_PROJECT, settings.project_name), "wb") as f:
pickle.dump(settings, f)
storage = Storage()
storage = Storage()