diff --git a/app/storage.py b/app/storage.py
index 036dd37..40dd94e 100644
--- a/app/storage.py
+++ b/app/storage.py
@@ -1,4 +1,6 @@
import pickle
+import os
+import yaml
from typing import List, Tuple
from model.settings import Settings
@@ -14,20 +16,31 @@ class Storage():
def __init__(self):
self.data: List[Project] = self.get_data()
- def get_project(self, name):
+ def get_project(self, name: str) -> Project:
for project in self.data:
if project.name == name:
return project
return None
- def add_project(self, project):
+ def add_project(self, project: Project):
+ # data
self.data.append(project)
self.save_data()
- def get_data(self):
+ # directories and contents
+ os.makedirs("app/projects/{}".format(project.name), exist_ok=True)
+ with open("app/projects/{}/settings.yaml".format(project.name), "w") as f:
+ f.write(yaml.dump(project.settings))
+
+ 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 = f.read()
- data = pickle.loads(data)
+ data_raw = f.read()
+ data: List[Project] = pickle.loads(data_raw)
return data
def save_data(self):
diff --git a/app/templates/index.html b/app/templates/index.html
index 442d97a..8b45358 100644
--- a/app/templates/index.html
+++ b/app/templates/index.html
@@ -17,7 +17,7 @@
{% endfor %}
- Add
+ Add Project