aboutsummaryrefslogtreecommitdiff
path: root/bcst/theme.py
diff options
context:
space:
mode:
Diffstat (limited to 'bcst/theme.py')
-rw-r--r--bcst/theme.py48
1 files changed, 48 insertions, 0 deletions
diff --git a/bcst/theme.py b/bcst/theme.py
new file mode 100644
index 0000000..58e7902
--- /dev/null
+++ b/bcst/theme.py
@@ -0,0 +1,48 @@
+#!/usr/bin/env python
+
+from bcst.resource import Resource
+from shutil import copytree, ignore_patterns
+from jinja2 import Template
+import os
+from os import path
+
+themes_location=path.join(path.dirname(path.abspath(__file__)),"themes")
+
+
+def list_themes():
+ themes=list()
+ for f in os.listdir(themes_location):
+ if(not(os.path.isfile(os.path.join(themes_location,f)))):
+ themes.append(f)
+ return(themes)
+
+def get_theme_path(name):
+ p=path.join(themes_location,name)
+ if(path.isdir(p)):
+ return(p)
+ else:
+ print("Could not find theme: "+name)
+ exit(1)
+
+class Theme:
+
+ def __init__(self, name, resource_data):
+ self.theme_path=get_theme_path(name)
+ res=Resource(self.theme_path+"/resources.json")
+ self.data=res.json
+ self.data.update(resource_data)
+ # Read theme
+ try:
+ with open(self.theme_path+"/index.html",'r') as f:
+ self.template=Template(f.read())
+ except IOError:
+ print("Unable to found "+resource)
+ exit(1)
+
+
+ def deploy(self, dest_path):
+ copytree(self.theme_path, dest_path, dirs_exist_ok=True,ignore=ignore_patterns("*.json","index.html"))
+ themes_dir=os.path.split(self.theme_path)[0]
+ theme_dir=os.path.split(self.theme_path)[1]
+ with open(dest_path+"/index.html", "w") as index:
+ index.write(self.template.render(self.data))