Page MenuHomeSoftware Heritage

D3335.id11818.diff
No OneTemporary

D3335.id11818.diff

diff --git a/swh/web/browse/snapshot_context.py b/swh/web/browse/snapshot_context.py
--- a/swh/web/browse/snapshot_context.py
+++ b/swh/web/browse/snapshot_context.py
@@ -30,6 +30,7 @@
get_directory_entries,
gen_directory_link,
gen_revision_link,
+ gen_revision_url,
request_content,
gen_content_link,
prepare_content_for_display,
@@ -588,7 +589,24 @@
browse_view_name, url_args=url_args, query_params=release_query_params,
)
- return SnapshotContext(
+ revision_info = None
+ if revision_id:
+ try:
+ revision_info = service.lookup_revision(revision_id)
+ except NotFoundExc:
+ pass
+ else:
+ revision_info["date"] = format_utc_iso_date(revision_info["date"])
+ revision_info["committer_date"] = format_utc_iso_date(
+ revision_info["committer_date"]
+ )
+ if revision_info["message"]:
+ message_lines = revision_info["message"].split("\n")
+ revision_info["message_header"] = message_lines[0]
+ else:
+ revision_info["message_header"] = ""
+
+ snapshot_context = SnapshotContext(
branch=branch_name,
branches=branches,
branches_url=branches_url,
@@ -601,6 +619,7 @@
releases=releases,
releases_url=releases_url,
revision_id=revision_id,
+ revision_info=revision_info,
root_directory=root_directory,
snapshot_id=snapshot_id,
snapshot_sizes=snapshot_sizes,
@@ -609,6 +628,11 @@
visit_info=visit_info,
)
+ if revision_info:
+ revision_info["revision_url"] = gen_revision_url(revision_id, snapshot_context)
+
+ return snapshot_context
+
def _build_breadcrumbs(snapshot_context: SnapshotContext, path: str):
origin_info = snapshot_context["origin_info"]
diff --git a/swh/web/common/typing.py b/swh/web/common/typing.py
--- a/swh/web/common/typing.py
+++ b/swh/web/common/typing.py
@@ -98,6 +98,8 @@
"""snapshot releases list browse URL"""
revision_id: Optional[str]
"""optional revision identifier set when browsing snapshot int that scope"""
+ revision_info: Optional[Dict[str, Any]]
+ """optional revision info set when browsing snapshot int that scope"""
root_directory: Optional[str]
"""optional root directory identifier set when browsing snapshot content"""
snapshot_id: str
diff --git a/swh/web/templates/includes/content-display.html b/swh/web/templates/includes/content-display.html
--- a/swh/web/templates/includes/content-display.html
+++ b/swh/web/templates/includes/content-display.html
@@ -1,5 +1,5 @@
{% comment %}
-Copyright (C) 2017-2019 The Software Heritage developers
+Copyright (C) 2017-2020 The Software Heritage developers
See the AUTHORS file at the top-level directory of this distribution
License: GNU Affero General Public License version 3, or any later version
See top-level LICENSE file for more information
@@ -7,6 +7,8 @@
{% load swh_templatetags %}
+{% include "includes/revision-info.html" %}
+
{% if snapshot_context and snapshot_context.is_empty %}
{% include "includes/empty-snapshot.html" %}
{% else %}
diff --git a/swh/web/templates/includes/directory-display.html b/swh/web/templates/includes/directory-display.html
--- a/swh/web/templates/includes/directory-display.html
+++ b/swh/web/templates/includes/directory-display.html
@@ -1,10 +1,12 @@
{% comment %}
-Copyright (C) 2017-2019 The Software Heritage developers
+Copyright (C) 2017-2020 The Software Heritage developers
See the AUTHORS file at the top-level directory of this distribution
License: GNU Affero General Public License version 3, or any later version
See top-level LICENSE file for more information
{% endcomment %}
+{% include "includes/revision-info.html" %}
+
{% if snapshot_context and snapshot_context.is_empty %}
{% include "includes/empty-snapshot.html" %}
{% elif dirs|length > 0 or files|length > 0 %}
diff --git a/swh/web/templates/includes/revision-info.html b/swh/web/templates/includes/revision-info.html
new file mode 100644
--- /dev/null
+++ b/swh/web/templates/includes/revision-info.html
@@ -0,0 +1,35 @@
+{% comment %}
+Copyright (C) 2020 The Software Heritage developers
+See the AUTHORS file at the top-level directory of this distribution
+License: GNU Affero General Public License version 3, or any later version
+See top-level LICENSE file for more information
+{% endcomment %}
+
+{% if snapshot_context and snapshot_context.revision_id %}
+ <div class="card d-none d-md-block">
+ <div class="card-body pt-2 pb-1 d-flex align-items-start justify-content-between">
+ <i style="min-width: 36px;" class="{{ swh_object_icons.revision }} mdi-36px mdi-fw" aria-hidden="true"></i>
+ <div class="flex-grow-1 pl-3">
+ Tip revision:
+ <a href="{{ snapshot_context.revision_info.revision_url }}">
+ <b>{{ snapshot_context.revision_id }}</b>
+ </a>
+ authored by <b>{{ snapshot_context.revision_info.author.name }}</b>
+ on <b>{{ snapshot_context.revision_info.date }}</b>
+ <br/>
+ <b>{{ snapshot_context.revision_info.message_header }}</b>
+ </div>
+ </div>
+ </div>
+ <div class="card d-sm-block d-md-none">
+ <div class="card-body pt-1 pb-1 d-flex align-items-center justify-content-between">
+ <i class="{{ swh_object_icons.revision }} mdi-24px mdi-fw" aria-hidden="true"></i>
+ <div class="flex-grow-1 pl-3 align-middle">
+ Tip revision:
+ <a href="{{ snapshot_context.revision_info.revision_url }}">
+ <b>{{ snapshot_context.revision_id|slice:"0:7" }}</b>
+ </a>
+ </div>
+ </div>
+ </div>
+{% endif %}
\ No newline at end of file
diff --git a/swh/web/tests/browse/test_snapshot_context.py b/swh/web/tests/browse/test_snapshot_context.py
--- a/swh/web/tests/browse/test_snapshot_context.py
+++ b/swh/web/tests/browse/test_snapshot_context.py
@@ -13,6 +13,7 @@
get_snapshot_context,
_get_release,
)
+from swh.web.browse.utils import gen_revision_url
from swh.web.common.identifiers import get_swh_persistent_id
from swh.web.common.origin_visits import get_origin_visit, get_origin_visits
from swh.web.common.typing import (
@@ -140,6 +141,7 @@
releases=releases,
releases_url=releases_url,
revision_id=revision_id,
+ revision_info=_get_revision_info(archive_data, revision_id),
root_directory=root_directory,
snapshot_id=snapshot,
snapshot_sizes=snapshot_sizes,
@@ -148,6 +150,11 @@
visit_info=None,
)
+ if revision_id:
+ expected["revision_info"]["revision_url"] = gen_revision_url(
+ revision_id, snapshot_context
+ )
+
assert snapshot_context == expected
_check_branch_release_revision_parameters(
@@ -233,6 +240,7 @@
releases=releases,
releases_url=releases_url,
revision_id=revision_id,
+ revision_info=_get_revision_info(archive_data, revision_id),
root_directory=root_directory,
snapshot_id=snapshot,
snapshot_sizes=snapshot_sizes,
@@ -241,6 +249,11 @@
visit_info=visit_info,
)
+ if revision_id:
+ expected["revision_info"]["revision_url"] = gen_revision_url(
+ revision_id, snapshot_context
+ )
+
assert snapshot_context == expected
_check_branch_release_revision_parameters(
@@ -269,8 +282,14 @@
expected_branch = dict(base_expected_context)
expected_branch["branch"] = branch["name"]
expected_branch["revision_id"] = branch["revision"]
+ expected_branch["revision_info"] = _get_revision_info(
+ archive_data, branch["revision"]
+ )
expected_branch["root_directory"] = branch["directory"]
expected_branch["query_params"] = {"branch": branch["name"], **query_params}
+ expected_branch["revision_info"]["revision_url"] = gen_revision_url(
+ branch["revision"], expected_branch
+ )
assert snapshot_context == expected_branch
@@ -288,8 +307,14 @@
expected_release["release_id"] = release["id"]
if release["target_type"] == "revision":
expected_release["revision_id"] = release["target"]
+ expected_release["revision_info"] = _get_revision_info(
+ archive_data, release["target"]
+ )
expected_release["root_directory"] = release["directory"]
expected_release["query_params"] = {"release": release["name"], **query_params}
+ expected_release["revision_info"]["revision_url"] = gen_revision_url(
+ release["target"], expected_release
+ )
assert snapshot_context == expected_release
@@ -328,8 +353,14 @@
expected_revision["branch"] = revision["id"]
expected_revision["branches"] = branches
expected_revision["revision_id"] = revision["id"]
+ expected_revision["revision_info"] = _get_revision_info(
+ archive_data, revision["id"]
+ )
expected_revision["root_directory"] = revision["directory"]
expected_revision["query_params"] = {"revision": revision["id"], **query_params}
+ expected_revision["revision_info"]["revision_url"] = gen_revision_url(
+ revision["id"], expected_revision
+ )
assert snapshot_context == expected_revision
@@ -353,3 +384,15 @@
assert release_data["name"] == release["name"]
assert release_data["id"] == release["id"]
+
+
+def _get_revision_info(archive_data, revision_id):
+ revision_info = None
+ if revision_id:
+ revision_info = archive_data.revision_get(revision_id)
+ revision_info["message_header"] = revision_info["message"].split("\n")[0]
+ revision_info["date"] = format_utc_iso_date(revision_info["date"])
+ revision_info["committer_date"] = format_utc_iso_date(
+ revision_info["committer_date"]
+ )
+ return revision_info

File Metadata

Mime Type
text/plain
Expires
Thu, Jan 23, 2:42 AM (1 w, 3 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3222138

Event Timeline