summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimo Sorce <simo@redhat.com>2013-12-04 22:42:09 -0500
committerSimo Sorce <simo@redhat.com>2013-12-11 15:35:39 -0500
commit62e6fff6cf4b5c8a5c33c3143f995d047fe6c384 (patch)
tree9c62da6256708b011a0318738d3d08b4235b1931
parent92496ab03df595a19b61cfe4d0f0b3050262241d (diff)
downloadipsilon-62e6fff6cf4b5c8a5c33c3143f995d047fe6c384.tar.gz
ipsilon-62e6fff6cf4b5c8a5c33c3143f995d047fe6c384.tar.xz
ipsilon-62e6fff6cf4b5c8a5c33c3143f995d047fe6c384.zip
Use jinja2 as the templating system
Add flashy css to indicate this is development stuff
-rw-r--r--examples/ipsilon.conf1
-rwxr-xr-xsrc/ipsilon.py17
-rwxr-xr-xsrc/root.py34
-rw-r--r--templates/index.html23
-rw-r--r--ui/ipsilon.css42
5 files changed, 109 insertions, 8 deletions
diff --git a/examples/ipsilon.conf b/examples/ipsilon.conf
index 8329d01..d536d96 100644
--- a/examples/ipsilon.conf
+++ b/examples/ipsilon.conf
@@ -1,4 +1,5 @@
[global]
log.iscreen = "error"
+base.dir = "../"
providers.dir = "../src/providers"
admin.config.db = "/var/lib/ipsilon/adminconfig.sqlite"
diff --git a/src/ipsilon.py b/src/ipsilon.py
index 15b0ec8..20c2c66 100755
--- a/src/ipsilon.py
+++ b/src/ipsilon.py
@@ -20,17 +20,14 @@
import sys
sys.stdout = sys.stderr
+import os
import atexit
import threading
import cherrypy
from util import plugin
from util import data
-
-class Root(object):
-
- @cherrypy.expose
- def index(self):
- return '/'
+from jinja2 import Environment, FileSystemLoader
+import root
cherrypy.config.update('ipsilon.conf')
@@ -43,8 +40,11 @@ datastore = data.Store()
admin_config = datastore.get_admin_config()
cherrypy.config.update(admin_config)
+templates = os.path.join(cherrypy.config['base.dir'], 'templates')
+env = Environment(loader=FileSystemLoader(templates))
+
if __name__ == "__main__":
- cherrypy.quickstart(Root())
+ cherrypy.quickstart(root.Root(env))
else:
cherrypy.config.update({'environment': 'embedded'})
@@ -53,4 +53,5 @@ else:
cherrypy.engine.start(blocking=False)
atexit.register(cherrypy.engine.stop)
- application = cherrypy.Application(Root(), script_name=None, config=None)
+ application = cherrypy.Application(root.Root(env),
+ script_name=None, config=None)
diff --git a/src/root.py b/src/root.py
new file mode 100755
index 0000000..d4cd900
--- /dev/null
+++ b/src/root.py
@@ -0,0 +1,34 @@
+#!/usr/bin/python
+#
+# Copyright (C) 2013 Simo Sorce <simo@redhat.com>
+#
+# see file 'COPYING' for use and warranty information
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+import cherrypy
+
+class Root(object):
+
+ def __init__(self, template_env):
+ self._env = template_env
+
+ @cherrypy.expose
+ def index_html(self):
+ tmpl = self._env.get_template('index.html')
+ return tmpl.render(title='Root', content='Awesome!')
+
+ @cherrypy.expose
+ def index(self):
+ return self.index_html()
diff --git a/templates/index.html b/templates/index.html
new file mode 100644
index 0000000..230edc7
--- /dev/null
+++ b/templates/index.html
@@ -0,0 +1,23 @@
+<!doctype html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8"></meta>
+ <title>{{ title }}</title>
+ <link href="ui/ipsilon.css" type="text/css" rel="stylesheet"></link>
+ <link href="ui/favicon.ico" type="image/ico" rel="icon"></link>
+</head>
+<body>
+ <div id="container">
+ <div id="background">
+ <div id="background-header"></div>
+ <div id="background-navigation"></div>
+ <div id="background-left"></div>
+ <div id="background-center"></div>
+ <div id="background-right"></div>
+ </div>
+ <div id="content">
+ <p>{{ content }}</p>
+ </div>
+ </div>
+</body>
+</html>
diff --git a/ui/ipsilon.css b/ui/ipsilon.css
new file mode 100644
index 0000000..a73b838
--- /dev/null
+++ b/ui/ipsilon.css
@@ -0,0 +1,42 @@
+/* Intentionally shocking, for development purpose */
+
+html {
+ height: 100%;
+}
+
+body {
+ overflow: auto;
+ position: relative;
+ background-color: #DEAD42;
+ border-width: 0;
+ font-family: "Liberation Sans",Arial,Sans;
+ font-size: 14px;
+ margin: 0;
+ padding: 0;
+ height: 100%;
+}
+
+textarea[readonly] {
+ color: Gray;
+}
+
+/* ---- Container ---- */
+
+#container {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ margin: 0 auto 0;
+}
+
+/* ---- Content ---- */
+#content {
+ position: absolute;
+ top: 42%;
+ left: 42%;
+ right: 42%;
+ bottom: 42%;
+}
+