summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2018-11-21 09:34:56 +0200
committerLars Wirzenius <liw@liw.fi>2018-11-21 09:34:56 +0200
commit3ca5fe62a65510508ba07e5ec8117815db9a0555 (patch)
tree229ea4f1c4bbce9a4907d391e37b0a5c51a50e2e
parent152f3f269aef562061f282857bab2798dc3e1e2c (diff)
downloadeffi-reg-3ca5fe62a65510508ba07e5ec8117815db9a0555.tar.gz
Change: use jinj2 templates in files instead of hardcoded strings
-rwxr-xr-xeffireg50
-rw-r--r--templates/logged-in.j214
-rw-r--r--templates/not-logged-in.j29
3 files changed, 60 insertions, 13 deletions
diff --git a/effireg b/effireg
index c9e9528..17cfa77 100755
--- a/effireg
+++ b/effireg
@@ -23,6 +23,7 @@ import urllib
import uuid
import bottle
+import jinja2
import requests
@@ -39,7 +40,7 @@ class EffiAPI:
'super',
]
- def __init__(self, app, our_url, apiurl, client_id, client_secret):
+ def __init__(self, app, our_url, apiurl, client_id, client_secret, template_dir):
self._add_routes(app)
self._our_url = our_url
self._apiurl = apiurl
@@ -48,6 +49,7 @@ class EffiAPI:
self._client_id = client_id
self._client_secret = client_secret
self._sessions = Sessions()
+ self._pagemaker = PageMaker(template_dir)
def _add_routes(self, bottleapp):
routes = [
@@ -100,22 +102,24 @@ class EffiAPI:
return self._logged_in_page(cookie)
def _not_logged_in_page(self):
- return '''
- <p>You are NOT logged in.
- <a href="/login">Log in</a></p>
- '''
+ return self._pagemaker.page('not-logged-in', {'foo': 'bar'})
+
def _logged_in_page(self, cookie):
session = self._sessions.find_by_cookie(cookie)
if not session:
return self._not_logged_in_page()
-
+
members = self._get_members(session.token)
- return '''
- <p>You ARE logged in. Cookie is {}.</p>
- <p>Token is <br/><code>{}</code></p>
- <p><a href="/logout">Log out</a></p>
- <p>Members: <br/>{}</p>
- '''.format(cookie, session.token, json.dumps(members, indent=4))
+ if not members:
+ return self._not_logged_in_page()
+
+ return self._pagemaker.page(
+ 'logged-in',
+ {
+ 'cookie': session.cookie,
+ 'token': session.token,
+ 'member': members[0],
+ })
def _get_members(self, token):
rids = self._find_ids_of_resources_owned_by_user(token)
@@ -251,6 +255,25 @@ class EffiAPI:
return None
+class PageMaker:
+
+ def __init__(self, dirname):
+ self._dirname = os.path.abspath(dirname)
+
+ def page(self, basename, variables):
+ logging.debug(
+ 'PageMaker: dirname=%s basename=%s variables=%r',
+ self._dirname, basename, variables)
+ loader = jinja2.FileSystemLoader(self._dirname)
+ env = jinja2.Environment(
+ loader=loader,
+ autoescape=lambda foo: True,
+ extensions=['jinja2.ext.autoescape'])
+
+ template = env.get_template('{}.j2'.format(basename))
+ return template.render(**variables)
+
+
class Session:
def __init__(self):
@@ -304,7 +327,8 @@ def main():
app = bottle.default_app()
api = EffiAPI(
app, config['our-url'], config['api-url'],
- config['client-id'], config['client-secret'])
+ config['client-id'], config['client-secret'],
+ config['templates'])
app.run(host='127.0.0.1', port=8181)
diff --git a/templates/logged-in.j2 b/templates/logged-in.j2
new file mode 100644
index 0000000..4fe6c28
--- /dev/null
+++ b/templates/logged-in.j2
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Not logged int</title>
+</head>
+<body>
+ <p><a href="/logout">Log out</a></p>
+ <p>You ARE logged in. Your information:</p>
+ <blockquote>
+ <p>Full name: {{ member.fullname }}</p>
+ <p>Email: {{ member.email }}</p>
+ </blockquote>
+</body>
+</html>
diff --git a/templates/not-logged-in.j2 b/templates/not-logged-in.j2
new file mode 100644
index 0000000..4ac097b
--- /dev/null
+++ b/templates/not-logged-in.j2
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>Not logged int</title>
+</head>
+<body>
+ <p>You are NOT logged in. <a href="/login">Log in</a></p>
+</body>
+</html>