From 62e6fff6cf4b5c8a5c33c3143f995d047fe6c384 Mon Sep 17 00:00:00 2001 From: Simo Sorce Date: Wed, 4 Dec 2013 22:42:09 -0500 Subject: [PATCH] Use jinja2 as the templating system Add flashy css to indicate this is development stuff --- examples/ipsilon.conf | 1 + src/ipsilon.py | 17 +++++++++-------- src/root.py | 34 ++++++++++++++++++++++++++++++++++ templates/index.html | 23 +++++++++++++++++++++++ ui/ipsilon.css | 42 ++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 109 insertions(+), 8 deletions(-) create mode 100755 src/root.py create mode 100644 templates/index.html create mode 100644 ui/ipsilon.css 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 +# +# 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 . + +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 @@ + + + + + {{ title }} + + + + +
+
+
+
+
+
+
+
+
+

{{ content }}

+
+
+ + 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%; +} + -- 2.20.1