From 3ca5fe62a65510508ba07e5ec8117815db9a0555 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Wed, 21 Nov 2018 09:34:56 +0200 Subject: Change: use jinj2 templates in files instead of hardcoded strings --- effireg | 50 ++++++++++++++++++++++++++++++++++------------ templates/logged-in.j2 | 14 +++++++++++++ templates/not-logged-in.j2 | 9 +++++++++ 3 files changed, 60 insertions(+), 13 deletions(-) create mode 100644 templates/logged-in.j2 create mode 100644 templates/not-logged-in.j2 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 ''' -

You are NOT logged in. - Log in

- ''' + 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 ''' -

You ARE logged in. Cookie is {}.

-

Token is
{}

-

Log out

-

Members:
{}

- '''.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 @@ + + + + Not logged int + + +

Log out

+

You ARE logged in. Your information:

+
+

Full name: {{ member.fullname }}

+

Email: {{ member.email }}

+
+ + 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 @@ + + + + Not logged int + + +

You are NOT logged in. Log in

+ + -- cgit v1.2.1