From 04ce1ef4e0778b6387739a4ba5b56fdbe90d0567 Mon Sep 17 00:00:00 2001
From: Valerie R Young
Date: Thu, 21 Jul 2016 14:23:26 -0400
Subject: reproducible debian: decouple navigation and page writing logic
Decoupling the navigation and page writing logic made it easier to
do the following:
- fix a bug introduced by adding headers at the top of the mainbody div
(fixed in this commit)
- make package pages to use the same structure as all other pages that
contain a left navigation (to do in future)
Signed-off-by: Holger Levsen
---
bin/reproducible_common.py | 52 +++++++++++-------------------------
bin/reproducible_html_breakages.py | 5 +++-
bin/reproducible_html_dd_list.py | 6 +++--
bin/reproducible_html_indexes.py | 16 +++++++----
bin/reproducible_html_live_status.py | 9 +++++--
bin/reproducible_html_notes.py | 9 ++++---
bin/reproducible_html_packages.py | 4 +--
bin/reproducible_html_pkg_sets.py | 26 ++++++++++++------
bin/templates/basic_page.mustache | 14 ++++++----
9 files changed, 75 insertions(+), 66 deletions(-)
diff --git a/bin/reproducible_common.py b/bin/reproducible_common.py
index e9d93566..13ef358f 100755
--- a/bin/reproducible_common.py
+++ b/bin/reproducible_common.py
@@ -159,17 +159,6 @@ main_navigation_template = renderer.load_template(
basic_page_template = renderer.load_template(
os.path.join(TEMPLATE_PATH, 'basic_page'))
-html_header = Template("""
-
-
-
-
- $meta_refresh
-
- $page_title
-
- """)
-
try:
JOB_URL = os.environ['JOB_URL']
except KeyError:
@@ -285,15 +274,13 @@ def gen_suite_arch_nav_context(suite, arch, suite_arch_nav_template=None,
})
return (suite_list, arch_list)
-
# See bash equivelent: reproducible_common.sh's "write_page_header()"
-def create_main_navigation(page_title, suite, arch, displayed_page=None,
- suite_arch_nav_template=None,
+def create_main_navigation(suite=defaultsuite, arch=defaultarch,
+ displayed_page=None, suite_arch_nav_template=None,
ignore_experimental=False):
suite_list, arch_list = gen_suite_arch_nav_context(suite, arch,
suite_arch_nav_template, ignore_experimental)
context = {
- 'page_title': page_title,
'suite': suite,
'arch': arch,
'project_links_html': renderer.render(project_links_template),
@@ -312,32 +299,23 @@ def create_main_navigation(page_title, suite, arch, displayed_page=None,
return renderer.render(main_navigation_template, context)
-def write_html_page(title, body, destfile, suite=defaultsuite, arch=defaultarch,
- noheader=False, style_note=False, noendpage=False,
- packages=False, refresh_every=None, displayed_page=None,
- suite_arch_nav_template=None, ignore_experimental=False):
- meta_refresh = '' % \
+def write_html_page(title, body, destfile, no_header=False, style_note=False,
+ noendpage=False, refresh_every=None, displayed_page=None,
+ left_nav_html=None):
+ meta_refresh_html = '' % \
refresh_every if refresh_every is not None else ''
- context = {
- 'page_title': title,
- 'meta_refresh': meta_refresh,
- }
- if not noheader:
- context['main_navigation_html'] = create_main_navigation(
- page_title=title,
- suite=suite,
- arch=arch,
- displayed_page=displayed_page,
- suite_arch_nav_template=suite_arch_nav_template,
- ignore_experimental=ignore_experimental,
- )
- main_html = body
if style_note:
- main_html += renderer.render(pkg_legend_template, {})
+ body += renderer.render(pkg_legend_template, {})
if not noendpage:
now = datetime.utcnow().strftime('%Y-%m-%d %H:%M UTC')
- main_html += create_default_page_footer(now)
- context['main_html'] = main_html
+ body += create_default_page_footer(now)
+ context = {
+ 'page_title': title,
+ 'meta_refresh_html': meta_refresh_html,
+ 'navigation_html': left_nav_html,
+ 'main_header': title if not no_header else "",
+ 'main_html': body,
+ }
html = renderer.render(basic_page_template, context)
try:
diff --git a/bin/reproducible_html_breakages.py b/bin/reproducible_html_breakages.py
index 1fec3c1f..2d7f2658 100755
--- a/bin/reproducible_html_breakages.py
+++ b/bin/reproducible_html_breakages.py
@@ -312,5 +312,8 @@ if __name__ == '__main__':
title = 'Breakage on the Debian pages of tests.reproducible-builds.org'
destfile = DEBIAN_BASE + '/index_breakages.html'
desturl = DEBIAN_URL + '/index_breakages.html'
- write_html_page(title, html, destfile, style_note=True, displayed_page='breakages')
+
+ left_nav_html = create_main_navigation(displayed_page='breakages')
+ write_html_page(title, html, destfile, style_note=True,
+ left_nav_html=left_nav_html)
log.info('Breackages page created at ' + desturl)
diff --git a/bin/reproducible_html_dd_list.py b/bin/reproducible_html_dd_list.py
index 702d7fb6..1b75ef1a 100755
--- a/bin/reproducible_html_dd_list.py
+++ b/bin/reproducible_html_dd_list.py
@@ -73,6 +73,8 @@ for suite in SUITES:
html += '
'
title = 'Maintainers of unreproducible packages in ' + suite
destfile = DEBIAN_BASE + '/' + suite + '/index_dd-list.html'
- write_html_page(title, html, destfile, suite, arch, style_note=True,
- displayed_page='dd_list')
+ left_nav_html = create_main_navigation(suite=suite, arch=arch,
+ displayed_page='dd_list')
+ write_html_page(title, html, destfile, style_note=True,
+ left_nav_html=left_nav_html)
log.info('%s/%s/index_dd-list.html published', DEBIAN_URL, suite)
diff --git a/bin/reproducible_html_indexes.py b/bin/reproducible_html_indexes.py
index a46f62a6..c704c9ca 100755
--- a/bin/reproducible_html_indexes.py
+++ b/bin/reproducible_html_indexes.py
@@ -526,16 +526,22 @@ def build_page(page, suite=None, arch=None):
if gpage:
destfile = DEBIAN_BASE + '/index_' + page + '.html'
desturl = DEBIAN_URL + '/index_' + page + '.html'
- suite = defaultsuite # used for the links generated by write_html_page
+ suite = defaultsuite # used for the links in create_main_navigation
else:
- destfile = DEBIAN_BASE + '/' + suite + '/' + arch + '/index_' + page + '.html'
+ destfile = DEBIAN_BASE + '/' + suite + '/' + arch + '/index_' + \
+ page + '.html'
desturl = DEBIAN_URL + '/' + suite + '/' + arch + '/index_' + \
page + '.html'
suite_arch_nav_template = DEBIAN_URI + '/{{suite}}/{{arch}}/index_' + \
page + '.html'
- write_html_page(title=title, body=html, destfile=destfile, suite=suite,
- arch=arch, style_note=True, displayed_page=page,
- suite_arch_nav_template=suite_arch_nav_template)
+ left_nav_html = create_main_navigation(
+ suite=suite,
+ arch=arch,
+ displayed_page=page,
+ suite_arch_nav_template=suite_arch_nav_template,
+ )
+ write_html_page(title=title, body=html, destfile=destfile, style_note=True,
+ left_nav_html=left_nav_html)
log.info('"' + title + '" now available at ' + desturl)
diff --git a/bin/reproducible_html_live_status.py b/bin/reproducible_html_live_status.py
index 59f4b1e2..f10c2151 100755
--- a/bin/reproducible_html_live_status.py
+++ b/bin/reproducible_html_live_status.py
@@ -52,7 +52,10 @@ def generate_schedule(arch):
html += '\n'
destfile = DEBIAN_BASE + '/index_' + arch + '_scheduled.html'
desturl = DEBIAN_URL + '/index_' + arch + '_scheduled.html'
- write_html_page(title=title, body=html, destfile=destfile, arch=arch, style_note=True, refresh_every=60, displayed_page='scheduled')
+ left_nav_html = create_main_navigation(arch=arch,
+ displayed_page='scheduled')
+ write_html_page(title=title, body=html, destfile=destfile, style_note=True,
+ refresh_every=60, left_nav_html=left_nav_html)
log.info("Page generated at " + desturl)
@@ -122,7 +125,9 @@ def generate_oldies(arch):
html += '\n'
destfile = DEBIAN_BASE + '/index_' + arch + '_oldies.html'
desturl = DEBIAN_URL + '/index_' + arch + '_oldies.html'
- write_html_page(title=title, body=html, destfile=destfile, arch=arch, style_note=True, refresh_every=60)
+ left_nav_html = create_main_navigation(arch=arch)
+ write_html_page(title=title, body=html, destfile=destfile, style_note=True,
+ refresh_every=60, left_nav_html=left_nav_html)
log.info("Page generated at " + desturl)
if __name__ == '__main__':
diff --git a/bin/reproducible_html_notes.py b/bin/reproducible_html_notes.py
index 535ea9cc..8fc3cb06 100755
--- a/bin/reproducible_html_notes.py
+++ b/bin/reproducible_html_notes.py
@@ -366,8 +366,7 @@ def iterate_over_notes(notes):
title = 'Notes for ' + package + ' - reproducible builds result'
destfile = NOTES_PATH + '/' + package + '_note.html'
- write_html_page(title=title, body=html, destfile=destfile,
- noheader=True)
+ write_html_page(title=title, body=html, destfile=destfile)
desturl = REPRODUCIBLE_URL + NOTES_URI + '/' + package + '_note.html'
log.debug("Note created: " + desturl)
@@ -386,8 +385,9 @@ def iterate_over_issues(issues):
title = 'Notes about issue ' + issue + ' in ' + suite
destfile = ISSUES_PATH + '/' + suite + '/' + issue + '_issue.html'
+ left_nav_html = create_main_navigation(displayed_page='issues')
write_html_page(title=title, body=html, destfile=destfile,
- style_note=True, displayed_page='issues')
+ style_note=True, left_nav_html=left_nav_html)
desturl = REPRODUCIBLE_URL + ISSUES_URI + '/' + suite + '/' + issue + '_issue.html'
log.debug("Issue created: " + desturl)
@@ -450,8 +450,9 @@ def index_issues(issues, scorefuncs):
title = 'Known issues related to reproducible builds'
destfile = DEBIAN_BASE + '/index_issues.html'
desturl = DEBIAN_URL + '/index_issues.html'
+ left_nav_html = create_main_navigation(displayed_page='issues')
write_html_page(title=title, body=html, destfile=destfile,
- displayed_page='issues')
+ left_nav_html=left_nav_html)
log.info('Issues index now available at ' + desturl)
diff --git a/bin/reproducible_html_packages.py b/bin/reproducible_html_packages.py
index e323853f..2a018d8d 100755
--- a/bin/reproducible_html_packages.py
+++ b/bin/reproducible_html_packages.py
@@ -259,7 +259,7 @@ def gen_history_page(package):
destfile = os.path.join(HISTORY_PATH, package.name+'.html')
title = 'build history of {}'.format(package.name)
write_html_page(title=title, body=html, destfile=destfile,
- noheader=True, noendpage=True)
+ noendpage=True)
def gen_packages_html(packages, no_clean=False):
@@ -317,7 +317,7 @@ def gen_packages_html(packages, no_clean=False):
'/' + arch + '/' + pkg + '.html'
title = pkg + ' - reproducible build results'
write_html_page(title=title, body=html, destfile=destfile,
- noheader=True, noendpage=True, packages=True)
+ no_header=True, noendpage=True)
log.debug("Package page generated at " + desturl)
if not no_clean:
purge_old_pages() # housekeep is always good
diff --git a/bin/reproducible_html_pkg_sets.py b/bin/reproducible_html_pkg_sets.py
index 7a81ac6c..dbdca135 100755
--- a/bin/reproducible_html_pkg_sets.py
+++ b/bin/reproducible_html_pkg_sets.py
@@ -143,12 +143,17 @@ def create_index_page(suite, arch):
"index_pkg_sets.html")
suite_arch_nav_template = DEBIAN_URI + \
'/{{suite}}/{{arch}}/index_pkg_sets.html'
+ left_nav_html = create_main_navigation(
+ suite=suite,
+ arch=arch,
+ displayed_page='pkg_set',
+ suite_arch_nav_template=suite_arch_nav_template,
+ ignore_experimental=True,
+ )
log.info("Creating pkgset index page for %s/%s.",
suite, arch)
- write_html_page(title=title, body=body, destfile=destfile, suite=suite,
- arch=arch, displayed_page='pkg_set',
- suite_arch_nav_template=suite_arch_nav_template,
- ignore_experimental=True)
+ write_html_page(title=title, body=body, destfile=destfile,
+ left_nav_html=left_nav_html)
def gen_other_arch_context(archs, suite, pkgset_name):
@@ -242,12 +247,17 @@ def create_pkgset_page_and_graphs(suite, arch, stats, pkgset_name):
page = "pkg_set_" + pkgset_name + ".html"
destfile = os.path.join(DEBIAN_BASE, suite, arch, page)
suite_arch_nav_template = DEBIAN_URI + '/{{suite}}/{{arch}}/' + page
+ left_nav_html = create_main_navigation(
+ suite=suite,
+ arch=arch,
+ displayed_page='pkg_set',
+ suite_arch_nav_template=suite_arch_nav_template,
+ ignore_experimental=True,
+ )
log.info("Creating meta pkgset page for %s in %s/%s.",
pkgset_name, suite, arch)
- write_html_page(title=title, body=html_body, destfile=destfile, suite=suite,
- arch=arch, displayed_page='pkg_set',
- suite_arch_nav_template=suite_arch_nav_template,
- ignore_experimental=True)
+ write_html_page(title=title, body=html_body, destfile=destfile,
+ left_nav_html=left_nav_html)
def create_pkgset_graph(png_file, suite, arch, pkgset_name):
diff --git a/bin/templates/basic_page.mustache b/bin/templates/basic_page.mustache
index 97a60d06..0263a3a2 100644
--- a/bin/templates/basic_page.mustache
+++ b/bin/templates/basic_page.mustache
@@ -3,17 +3,21 @@
- {{meta_refresh}}
+ {{{meta_refresh}}}
{{page_title}}
+ {{#navigation_html}}
- {{{main_navigation_html}}}
+ {{{navigation_html}}}
-
-
{{page_title}}
+ {{/navigation_html}}
+ {{#navigation_html}}
{{/navigation_html}}
+ {{#main_header}}
+
{{main_header}}
+ {{/main_header}}
{{{main_html}}}
-
+ {{#navigation_html}}
{{/navigation_html}}
--
cgit v1.2.3-70-g09d2