Page MenuHomeSoftware Heritage

D2384.id8393.diff
No OneTemporary

D2384.id8393.diff

diff --git a/swh/web/api/views/snapshot.py b/swh/web/api/views/snapshot.py
--- a/swh/web/api/views/snapshot.py
+++ b/swh/web/api/views/snapshot.py
@@ -68,6 +68,20 @@
:swh_web_api:`snapshot/6a3a2cf0b2b90ce7ae1cf0a221ed68035b686f5a/`
"""
+ def _resolve_alias(snapshot, branch):
+ while branch and branch['target_type'] == 'alias':
+ if branch['target'] in snapshot['branches']:
+ branch = snapshot['branches'][branch['target']]
+ else:
+ snp = service.lookup_snapshot(
+ snapshot['id'], branches_from=branch['target'],
+ branches_count=1)
+ if snp and branch['target'] in snp['branches']:
+ branch = snp['branches'][branch['target']]
+ else:
+ branch = None
+ return branch
+
def _enrich_snapshot(snapshot):
s = snapshot.copy()
if 'branches' in s:
@@ -77,19 +91,10 @@
}
for k, v in s['branches'].items():
if v and v['target_type'] == 'alias':
- if v['target'] in s['branches']:
- branch_alias = s['branches'][v['target']]
- if branch_alias:
- v['target_url'] = branch_alias['target_url']
- else:
- snp = \
- service.lookup_snapshot(s['id'],
- branches_from=v['target'],
- branches_count=1)
- if snp and v['target'] in snp['branches']:
- branch = snp['branches'][v['target']]
- branch = utils.enrich_object(branch)
- v['target_url'] = branch['target_url']
+ branch = _resolve_alias(snapshot, v)
+ if branch:
+ branch = utils.enrich_object(branch)
+ v['target_url'] = branch['target_url']
return s
snapshot_content_max_size = get_config()['snapshot_content_max_size']

File Metadata

Mime Type
text/plain
Expires
Thu, Jan 30, 11:03 AM (1 w, 20 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3224263

Event Timeline