Use jinja template engine

This commit is contained in:
zo 2017-05-12 15:19:17 +02:00
parent 49bcc7bf52
commit 46f7eb7089
3 changed files with 90 additions and 16 deletions

View file

@ -117,10 +117,12 @@ if version == 'latest':
else:
tag = version
head = open ('template-head').read()
head = sub ('{{baseurl}}', 'http://' + os.environ['HTTP_HOST'] + '/' + project + '/', head)
head = sub ('{{tag}}', tag, head)
head = sub ('{{version}}', version, head)
data = {
'baseurl': 'http://' + os.environ['HTTP_HOST'] + '/' + project + '/',
'tag': tag,
'version': version,
'url': url,
}
lines = do_query ('versions')
va = OrderedDict()
@ -155,7 +157,7 @@ for v1k in va:
v += ' </ul></li>\n'
v += '</ul>\n'
head = sub ('{{versions}}', v, head)
data['versions'] = v
if mode == 'source':
breadcrumb = '<a href="'+version+'/source">'+project+'</a>'
@ -165,10 +167,9 @@ if mode == 'source':
p2 += '/'+p
breadcrumb += '/<a href="'+version+'/source'+p2+'">'+p+'</a>'
head = sub ('{{breadcrumb}}', breadcrumb, head)
head = sub ('{{ident}}', ident, head)
head = sub ('{{title}}', project+path+' - Elixir - Free Electrons', head)
print (head, end='')
data['breadcrumb'] = breadcrumb
data['ident'] = ident
data['title'] = project+path+' - Elixir - Free Electrons'
lines = ['null - -']
@ -251,9 +252,8 @@ if mode == 'source':
elif mode == 'ident':
field = '</h1>\n<form method="get" action="'+version+'/ident">\nIdentifier: <input type="text" name="i" value="'+ident+'"size="60"/>\n<input type="submit" value="Go get it"/>\n</form>\n<h1>' + ident
head = sub ('{{breadcrumb}}', field, head)
head = sub ('{{title}}', ident+' - Elixir - Free Electrons', head)
print (head, end='')
data['breadcrumb'] = field
data['title'] = ident+' - Elixir - Free Electrons'
lines = do_query ('ident', tag, ident)
lines = iter (lines)
@ -305,13 +305,16 @@ elif mode == 'ident':
status = 404
else:
print (head)
print ('Invalid request')
print (open ('template-tail').read(), end='')
if status == 404:
realprint ('Status: 404 Not Found')
import jinja2
loader = jinja2.FileSystemLoader (os.path.join (os.path.dirname (__file__), '../templates/'))
environment = jinja2.Environment (loader=loader)
template = environment.get_template ('layout.html')
realprint ('Content-Type: text/html;charset=utf-8\n')
realprint (outputBuffer.getvalue(), end='')
data['main'] = outputBuffer.getvalue()
realprint (template.render(data), end='')

22
templates/header.html Normal file
View file

@ -0,0 +1,22 @@
<link rel="stylesheet" href="/header.css">
<header class="header">
<h1><a href="http://free-electrons.com/">free electrons</a></h1>
<h2>Embedded Linux Experts</h2>
<nav>
<ul class="nav-links">
<li><a href="http://free-electrons.com/">Home</a></li>
<li><a href="http://free-electrons.com/engineering/">Engineering</a></li>
<li><a href="http://free-electrons.com/training/">Training</a></li>
<li><a href="http://free-electrons.com/docs/">Docs</a></li>
<li><a href="http://free-electrons.com/community/">Community</a></li>
<li><a href="http://free-electrons.com/company/">Company</a></li>
<li><a href="http://free-electrons.com/blog/">Blog</a></li>
</ul>
<ul class="social-icons">
<li><a target="_blank" class="icon-twitter" href="http://twitter.com/free_electrons">twitter</a></li>
<li><a target="_blank" class="icon-googleplus" href="https://plus.google.com/+FreeElectronsDevelopers">google+</a></li>
<li><a target="_blank" class="icon-linkedin" href="http://www.linkedin.com/groups/Free-Electrons-4501089">linkedin</a></li>
<li><a target="_blank" class="icon-github" href="https://github.com/free-electrons">github</a></li>
</ul>
</nav>
</header>

49
templates/layout.html Normal file
View file

@ -0,0 +1,49 @@
<!doctype html>
<html class="no-js">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<title>{{title}}</title>
<meta name="description" content="Elixir Cross Referencer">
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1" />
<base href="{{baseurl}}"/>
<script>document.documentElement.className = 'js'</script>
</head>
<body>
{% include 'header.html' %}
<div class="wrapper">
<main>
<header class="topbar">
<div class="breadcrumb">
<a href="{{version}}/{{url}}#menu" class="open-menu icon-menu screenreader" title="Open Menu">Open Menu</a>
{{breadcrumb}}
</div>
<div class="search">
<form method="post" action="{{version}}/ident">
<input placeholder="Search Identifier" type="text" name="i" value="{{ident}}"/>
<button class="icon-search"><span class="screenreader">Go get it</span></button>
</form>
</div>
</header>
<div class="scrollable">
{{main}}
</div>
<footer class="footer">
<span class="version">version : <strong>{{tag}}</strong></span>
<a title="Go to top of the page" class="go-top icon-up screenreader" href="{{version}}/{{url}}#">Top</a>
<span class="poweredby">powered by <a target="_blank" href="https://github.com/free-electrons/elixir">Elixir 0.1.2</a></span>
</footer>
</main>
<aside class="sidebar" id="menu">
<nav>
<h3 class="screenreader">Projects</h3>
<h3 class="screenreader">Versions</h3>
<ul class="versions">
{{versions}}
</ul>
</nav>
</aside>
</div>
<script src="/script.js"></script>
</body>
</html>