From 3b16799a46b20609a20a8bc75e8b06f866777544 Mon Sep 17 00:00:00 2001 From: Antoine Lambert <antoine.lambert@inria.fr> Date: Tue, 6 Feb 2018 15:35:12 +0100 Subject: [PATCH] browse: Add link to revision history in revision view --- swh/web/browse/utils.py | 39 ++++++++++++++----- swh/web/browse/views/revision.py | 18 +++++---- .../templates/includes/top-navigation.html | 2 +- swh/web/templates/revision.html | 4 +- 4 files changed, 42 insertions(+), 21 deletions(-) diff --git a/swh/web/browse/utils.py b/swh/web/browse/utils.py index 3dcbd7138..5ba5f21dc 100644 --- a/swh/web/browse/utils.py +++ b/swh/web/browse/utils.py @@ -570,23 +570,17 @@ def gen_origin_directory_link(origin_context, revision_id=None, return gen_link(directory_url, link_text, link_attrs) -def gen_revision_log_link(revision_id, origin_context=None, link_text=None, - link_attrs={}): +def get_revision_log_url(revision_id, origin_context=None): """ - Utility function for generating a link to a SWH revision log HTML view - (possibly in the context of an origin) to insert in Django templates. + Utility function for getting the URL for a SWH revision log HTML view + (possibly in the context of an origin). Args: revision_id (str): revision identifier the history heads to origin_context (dict): if provided, generate origin-dependent browsing link (see :func:`swh.web.browse.utils.get_origin_context`) - link_text (str): optional text to use for the generated link - link_attrs (dict): optional attributes (e.g. class) - to add to the link - Returns: - An HTML link in the form - '<a href="revision_log_view_url">link_text</a>' + The SWH revision log view URL """ if origin_context: origin_info = origin_context['origin_info'] @@ -605,6 +599,29 @@ def gen_revision_log_link(revision_id, origin_context=None, link_text=None, else: revision_log_url = reverse('browse-revision-log', kwargs={'sha1_git': revision_id}) + return revision_log_url + + +def gen_revision_log_link(revision_id, origin_context=None, link_text=None, + link_attrs={}): + """ + Utility function for generating a link to a SWH revision log HTML view + (possibly in the context of an origin) to insert in Django templates. + + Args: + revision_id (str): revision identifier the history heads to + origin_context (dict): if provided, generate origin-dependent browsing + link (see :func:`swh.web.browse.utils.get_origin_context`) + link_text (str): optional text to use for the generated link + link_attrs (dict): optional attributes (e.g. class) + to add to the link + + Returns: + An HTML link in the form + '<a href="revision_log_view_url">link_text</a>' + """ + + revision_log_url = get_revision_log_url(revision_id, origin_context) if not link_text: link_text = revision_log_url return gen_link(revision_log_url, link_text, link_attrs) @@ -756,6 +773,8 @@ def get_origin_context(origin_type, origin_url, timestamp, visit_id=None): 'visit_info': visit_info, 'branches': branches, 'releases': releases, + 'branch': None, + 'release': None, 'origin_browse_url': origin_browse_url, 'origin_branches_url': origin_branches_url, 'origin_releases_url': origin_releases_url, diff --git a/swh/web/browse/views/revision.py b/swh/web/browse/views/revision.py index 738e6ea18..c9462ea19 100644 --- a/swh/web/browse/views/revision.py +++ b/swh/web/browse/views/revision.py @@ -16,8 +16,8 @@ from swh.web.browse.utils import ( gen_link, gen_person_link, gen_revision_link, prepare_revision_log_for_display, get_origin_context, gen_origin_directory_link, - gen_revision_log_link, get_directory_entries, - gen_directory_link, request_content, prepare_content_for_display + get_revision_log_url, get_directory_entries, + gen_directory_link, request_content, prepare_content_for_display, ) @@ -82,14 +82,9 @@ def revision_browse(request, sha1_git): revision_data['directory'] = \ gen_origin_directory_link(origin_context, sha1_git, link_text='Browse') - revision_data['history log'] = \ - gen_revision_log_link(sha1_git, origin_context, - link_text='Browse') else: revision_data['directory'] = \ gen_directory_link(revision['directory'], link_text='Browse') - revision_data['history log'] = \ - gen_revision_log_link(sha1_git, link_text='Browse') revision_data['id'] = sha1_git revision_data['merge'] = revision['merge'] revision_data['metadata'] = json.dumps(revision['metadata'], @@ -169,6 +164,8 @@ def revision_browse(request, sha1_git): kwargs={'sha1_git': sha1_git}, query_params=query_params) + history_url = get_revision_log_url(sha1_git, origin_context) + return render(request, 'revision.html', {'empty_browse': False, 'heading': 'Revision information', @@ -186,7 +183,12 @@ def revision_browse(request, sha1_git): 'content': content, 'mimetype': mimetype, 'language': language, - 'breadcrumbs': breadcrumbs}) + 'breadcrumbs': breadcrumbs, + 'top_right_link': history_url, + 'top_right_link_text': mark_safe( + '<i class="fa fa-history fa-fw" aria-hidden="true"></i>' + 'History' + )}) NB_LOG_ENTRIES = 20 diff --git a/swh/web/templates/includes/top-navigation.html b/swh/web/templates/includes/top-navigation.html index 47bf575eb..629e65a40 100644 --- a/swh/web/templates/includes/top-navigation.html +++ b/swh/web/templates/includes/top-navigation.html @@ -1,6 +1,6 @@ <div class="swh-browse-top-navigation"> - {% if origin_context %} + {% if origin_context and origin_context.branch %} <div class="dropdown" style="float: left;" id="swh-branches-releases-dd"> <button class="btn btn-md btn-swh dropdown-toggle" type="button" data-toggle="dropdown"> {% if origin_context.branch %} diff --git a/swh/web/templates/revision.html b/swh/web/templates/revision.html index 88e835fdb..ec7bf29a8 100644 --- a/swh/web/templates/revision.html +++ b/swh/web/templates/revision.html @@ -23,8 +23,8 @@ {{ parents_links }} </div> -<div style="padding-bottom:5px; border-top: 1px solid #ddd; border-bottom: 1px solid #ddd;"> -{% include "includes/breadcrumbs.html" %} +<div style="padding-bottom:5px; border-top: 1px solid #ddd;"> +{% include "includes/top-navigation.html" %} </div> {% if content %} -- GitLab