Changeset View
Changeset View
Standalone View
Standalone View
swh/web/browse/views/release.py
Show First 20 Lines • Show All 45 Lines • ▼ Show 20 Lines | def release_browse(request, sha1_git): | ||||
origin_url = request.GET.get("origin_url") | origin_url = request.GET.get("origin_url") | ||||
if not origin_url: | if not origin_url: | ||||
origin_url = request.GET.get("origin") | origin_url = request.GET.get("origin") | ||||
timestamp = request.GET.get("timestamp") | timestamp = request.GET.get("timestamp") | ||||
visit_id = request.GET.get("visit_id") | visit_id = request.GET.get("visit_id") | ||||
if origin_url: | if origin_url: | ||||
try: | try: | ||||
snapshot_context = get_snapshot_context( | snapshot_context = get_snapshot_context( | ||||
snapshot_id, origin_url, timestamp, visit_id | snapshot_id, | ||||
origin_url, | |||||
timestamp, | |||||
visit_id, | |||||
release_name=release["name"], | |||||
) | ) | ||||
except NotFoundExc as e: | except NotFoundExc as e: | ||||
raw_rel_url = reverse("browse-release", url_args={"sha1_git": sha1_git}) | raw_rel_url = reverse("browse-release", url_args={"sha1_git": sha1_git}) | ||||
error_message = ( | error_message = ( | ||||
"The Software Heritage archive has a release " | "The Software Heritage archive has a release " | ||||
"with the hash you provided but the origin " | "with the hash you provided but the origin " | ||||
"mentioned in your request appears broken: %s. " | "mentioned in your request appears broken: %s. " | ||||
"Please check the URL and try again.\n\n" | "Please check the URL and try again.\n\n" | ||||
"Nevertheless, you can still browse the release " | "Nevertheless, you can still browse the release " | ||||
"without origin information: %s" | "without origin information: %s" | ||||
% (gen_link(origin_url), gen_link(raw_rel_url)) | % (gen_link(origin_url), gen_link(raw_rel_url)) | ||||
) | ) | ||||
if str(e).startswith("Origin"): | if str(e).startswith("Origin"): | ||||
raise NotFoundExc(error_message) | raise NotFoundExc(error_message) | ||||
else: | else: | ||||
raise e | raise e | ||||
origin_info = snapshot_context["origin_info"] | origin_info = snapshot_context["origin_info"] | ||||
elif snapshot_id: | elif snapshot_id: | ||||
snapshot_context = get_snapshot_context(snapshot_id) | snapshot_context = get_snapshot_context( | ||||
snapshot_id, release_name=release["name"] | |||||
) | |||||
snapshot_id = snapshot_context.get("snapshot_id", None) | snapshot_id = snapshot_context.get("snapshot_id", None) | ||||
release_metadata = ReleaseMetadata( | release_metadata = ReleaseMetadata( | ||||
object_type=RELEASE, | object_type=RELEASE, | ||||
object_id=sha1_git, | object_id=sha1_git, | ||||
release=sha1_git, | release=sha1_git, | ||||
author=release["author"]["fullname"] if release["author"] else "None", | author=release["author"]["fullname"] if release["author"] else "None", | ||||
author_url=gen_person_mail_link(release["author"]) | author_url=gen_person_mail_link(release["author"]) | ||||
if release["author"] | if release["author"] | ||||
else "None", | else "None", | ||||
date=format_utc_iso_date(release["date"]), | date=format_utc_iso_date(release["date"]), | ||||
name=release["name"], | name=release["name"], | ||||
synthetic=release["synthetic"], | synthetic=release["synthetic"], | ||||
target=release["target"], | target=release["target"], | ||||
target_type=release["target_type"], | target_type=release["target_type"], | ||||
snapshot=snapshot_id, | snapshot=snapshot_id, | ||||
origin_url=origin_url, | origin_url=origin_url, | ||||
) | ) | ||||
release_note_lines = [] | release_note_lines = [] | ||||
if release["message"]: | if release["message"]: | ||||
release_note_lines = release["message"].split("\n") | release_note_lines = release["message"].split("\n") | ||||
swh_objects = [SWHObjectInfo(object_type=RELEASE, object_id=sha1_git)] | |||||
vault_cooking = None | vault_cooking = None | ||||
rev_directory = None | rev_directory = None | ||||
target_link = None | target_link = None | ||||
if release["target_type"] == REVISION: | if release["target_type"] == REVISION: | ||||
target_link = gen_revision_link( | target_link = gen_revision_link( | ||||
release["target"], | release["target"], | ||||
snapshot_context=snapshot_context, | snapshot_context=snapshot_context, | ||||
link_text=None, | link_text=None, | ||||
link_attrs=None, | link_attrs=None, | ||||
) | ) | ||||
try: | try: | ||||
revision = archive.lookup_revision(release["target"]) | revision = archive.lookup_revision(release["target"]) | ||||
rev_directory = revision["directory"] | rev_directory = revision["directory"] | ||||
vault_cooking = { | vault_cooking = { | ||||
"directory_context": True, | "directory_context": True, | ||||
"directory_id": rev_directory, | "directory_id": rev_directory, | ||||
"revision_context": True, | "revision_context": True, | ||||
"revision_id": release["target"], | "revision_id": release["target"], | ||||
} | } | ||||
swh_objects.append( | |||||
SWHObjectInfo(object_type=REVISION, object_id=release["target"]) | |||||
) | |||||
swh_objects.append( | |||||
SWHObjectInfo(object_type=DIRECTORY, object_id=rev_directory) | |||||
) | |||||
except Exception as exc: | except Exception as exc: | ||||
sentry_sdk.capture_exception(exc) | sentry_sdk.capture_exception(exc) | ||||
elif release["target_type"] == DIRECTORY: | elif release["target_type"] == DIRECTORY: | ||||
target_link = gen_directory_link( | target_link = gen_directory_link( | ||||
release["target"], | release["target"], | ||||
snapshot_context=snapshot_context, | snapshot_context=snapshot_context, | ||||
link_text=None, | link_text=None, | ||||
link_attrs=None, | link_attrs=None, | ||||
) | ) | ||||
try: | try: | ||||
# check directory exists | # check directory exists | ||||
archive.lookup_directory(release["target"]) | archive.lookup_directory(release["target"]) | ||||
vault_cooking = { | vault_cooking = { | ||||
"directory_context": True, | "directory_context": True, | ||||
"directory_id": release["target"], | "directory_id": release["target"], | ||||
"revision_context": False, | "revision_context": False, | ||||
"revision_id": None, | "revision_id": None, | ||||
} | } | ||||
swh_objects.append( | |||||
SWHObjectInfo(object_type=DIRECTORY, object_id=release["target"]) | |||||
) | |||||
except Exception as exc: | except Exception as exc: | ||||
sentry_sdk.capture_exception(exc) | sentry_sdk.capture_exception(exc) | ||||
elif release["target_type"] == CONTENT: | elif release["target_type"] == CONTENT: | ||||
target_link = gen_content_link( | target_link = gen_content_link( | ||||
release["target"], | release["target"], | ||||
snapshot_context=snapshot_context, | snapshot_context=snapshot_context, | ||||
link_text=None, | link_text=None, | ||||
link_attrs=None, | link_attrs=None, | ||||
) | ) | ||||
swh_objects.append( | |||||
SWHObjectInfo(object_type=CONTENT, object_id=release["target"]) | |||||
) | |||||
elif release["target_type"] == RELEASE: | elif release["target_type"] == RELEASE: | ||||
target_link = gen_release_link( | target_link = gen_release_link( | ||||
release["target"], | release["target"], | ||||
snapshot_context=snapshot_context, | snapshot_context=snapshot_context, | ||||
link_text=None, | link_text=None, | ||||
link_attrs=None, | link_attrs=None, | ||||
) | ) | ||||
Show All 20 Lines | if rev_directory is not None: | ||||
) | ) | ||||
directory_link = None | directory_link = None | ||||
if rev_directory_url is not None: | if rev_directory_url is not None: | ||||
directory_link = gen_link(rev_directory_url, rev_directory) | directory_link = gen_link(rev_directory_url, rev_directory) | ||||
release["directory_link"] = directory_link | release["directory_link"] = directory_link | ||||
release["target_link"] = target_link | release["target_link"] = target_link | ||||
swh_objects = [SWHObjectInfo(object_type=RELEASE, object_id=sha1_git)] | |||||
if snapshot_context: | if snapshot_context: | ||||
snapshot_id = snapshot_context["snapshot_id"] | snapshot_id = snapshot_context["snapshot_id"] | ||||
if snapshot_id: | if snapshot_id: | ||||
swh_objects.append(SWHObjectInfo(object_type=SNAPSHOT, object_id=snapshot_id)) | swh_objects.append(SWHObjectInfo(object_type=SNAPSHOT, object_id=snapshot_id)) | ||||
swhids_info = get_swhids_info(swh_objects, snapshot_context) | swhids_info = get_swhids_info(swh_objects, snapshot_context) | ||||
Show All 31 Lines |