Use jinja template engine
This commit is contained in:
parent
49bcc7bf52
commit
46f7eb7089
3 changed files with 90 additions and 16 deletions
35
http/web.py
35
http/web.py
|
|
@ -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
22
templates/header.html
Normal 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
49
templates/layout.html
Normal 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>
|
||||
Loading…
Reference in a new issue