mirror of
https://github.com/dobin/SuperMega
synced 2026-06-02 17:27:10 +00:00
refactor: move working directory to projects/ for web
This commit is contained in:
+32
-25
@@ -1,50 +1,57 @@
|
||||
import pickle
|
||||
import os
|
||||
import yaml
|
||||
import pickle
|
||||
|
||||
from typing import List, Tuple
|
||||
from model.settings import Settings
|
||||
from model.defs import *
|
||||
|
||||
class Project():
|
||||
|
||||
class WebProject():
|
||||
def __init__(self, name: str, settings: Settings):
|
||||
self.name = name
|
||||
self.settings: Settings = settings
|
||||
self.comment: str = ""
|
||||
|
||||
|
||||
class Storage():
|
||||
def __init__(self):
|
||||
self.data: List[Project] = self.get_data()
|
||||
pass
|
||||
|
||||
def get_project(self, name: str) -> Project:
|
||||
for project in self.data:
|
||||
if project.name == name:
|
||||
return project
|
||||
return None
|
||||
|
||||
def get_projects(self) -> List[WebProject]:
|
||||
projects: List[WebProject] = []
|
||||
for project_name in os.listdir(PATH_WEB_PROJECT):
|
||||
project = self.get_project(project_name)
|
||||
if project is None:
|
||||
continue
|
||||
project.settings.prep_web(project_name)
|
||||
projects.append(project)
|
||||
return projects
|
||||
|
||||
def add_project(self, project: Project):
|
||||
# data
|
||||
self.data.append(project)
|
||||
self.save_data()
|
||||
|
||||
def get_project(self, project_name: str) -> WebProject:
|
||||
path = "{}/{}".format(PATH_WEB_PROJECT, project_name)
|
||||
json_path = "{}/project.pickle".format(path)
|
||||
if not os.path.exists(json_path):
|
||||
return None
|
||||
with open(json_path, "rb") as f:
|
||||
project = pickle.load(f)
|
||||
project.settings.prep_web(project_name)
|
||||
return project
|
||||
|
||||
|
||||
def add_project(self, project: WebProject):
|
||||
# directories and contents
|
||||
os.makedirs(PATH_WEB_PROJECT + project.name, exist_ok=True)
|
||||
with open("{}/{}/settings.yaml".format(PATH_WEB_PROJECT, project.name), "w") as f:
|
||||
f.write(yaml.dump(project.settings))
|
||||
with open("{}/{}/project.pickle".format(PATH_WEB_PROJECT, project.name), "wb") as f:
|
||||
pickle.dump(project, f)
|
||||
|
||||
def get_data(self) -> List[Project]:
|
||||
# if file does not exist, create an empty one
|
||||
if not os.path.exists("app/data.pickle"):
|
||||
with open("app/data.pickle", "wb") as f:
|
||||
f.write(pickle.dumps([]))
|
||||
|
||||
with open("app/data.pickle", "rb") as f:
|
||||
data_raw = f.read()
|
||||
data: List[Project] = pickle.loads(data_raw)
|
||||
return data
|
||||
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_data(self):
|
||||
with open("app/data.pickle", "wb") as f:
|
||||
f.write(pickle.dumps(self.data))
|
||||
|
||||
storage = Storage()
|
||||
Reference in New Issue
Block a user