Page MenuHomeSoftware Heritage

D3647.id12838.diff
No OneTemporary

D3647.id12838.diff

diff --git a/swh/web/common/service.py b/swh/web/common/service.py
--- a/swh/web/common/service.py
+++ b/swh/web/common/service.py
@@ -12,6 +12,7 @@
from swh.model import hashutil
from swh.model.identifiers import CONTENT, DIRECTORY, RELEASE, REVISION, SNAPSHOT
+from swh.model.model import OriginVisit
from swh.storage.algos import diff, revisions_walker
from swh.storage.algos.origin import origin_get_latest_visit_status
from swh.storage.algos.snapshot import snapshot_get_latest
@@ -859,7 +860,7 @@
def _lookup_origin_visits(
origin_url: str, last_visit: Optional[int] = None, limit: int = 10
-) -> Iterator[Dict[str, Any]]:
+) -> Iterator[OriginVisit]:
"""Yields the origin origins' visits.
Args:
@@ -868,15 +869,19 @@
limit (int): Number of elements max to display
Yields:
- Dictionaries of origin_visit for that origin
+ OriginVisit for that origin
"""
limit = min(limit, MAX_LIMIT)
- for visit in storage.origin_visit_get(
- origin_url, last_visit=last_visit, limit=limit
- ):
- visit["origin"] = origin_url
- yield visit
+ page_token: Optional[str]
+ if last_visit is not None:
+ page_token = str(last_visit)
+ else:
+ page_token = None
+ visit_page = storage.origin_visit_get(
+ origin_url, page_token=page_token, limit=limit
+ )
+ yield from visit_page.results
def lookup_origin_visits(
@@ -891,10 +896,11 @@
Dictionaries of origin_visit for that origin
"""
- visits = _lookup_origin_visits(origin, last_visit=last_visit, limit=per_page)
- for visit in visits:
- visit_status = storage.origin_visit_status_get_latest(origin, visit["visit"])
- yield converters.from_origin_visit({**visit, **visit_status.to_dict()})
+ for visit in _lookup_origin_visits(origin, last_visit=last_visit, limit=per_page):
+ visit_status = storage.origin_visit_status_get_latest(origin, visit.visit)
+ yield converters.from_origin_visit(
+ {**visit_status.to_dict(), "type": visit.type}
+ )
def lookup_origin_visit_latest(
diff --git a/swh/web/tests/conftest.py b/swh/web/tests/conftest.py
--- a/swh/web/tests/conftest.py
+++ b/swh/web/tests/conftest.py
@@ -228,14 +228,25 @@
return [converters.from_origin(o.to_dict()) for o in origins]
def origin_visit_get(self, origin_url):
- visits = list(self.storage.origin_visit_get(origin_url))
- for i in range(len(visits)):
- visit_status = self.storage.origin_visit_status_get_latest(
- origin_url, visits[i]["visit"]
- )
- visits[i] = converters.from_origin_visit(
- {**visits[i], **visit_status.to_dict()}
+ next_page_token = None
+ visits = []
+ while True:
+ visit_page = self.storage.origin_visit_get(
+ origin_url, page_token=next_page_token
)
+ next_page_token = visit_page.next_page_token
+
+ for visit in visit_page.results:
+ visit_status = self.storage.origin_visit_status_get_latest(
+ origin_url, visit.visit
+ )
+ visits.append(
+ converters.from_origin_visit(
+ {**visit_status.to_dict(), "type": visit.type}
+ )
+ )
+ if not next_page_token:
+ break
return visits
def origin_visit_get_by(self, origin_url: str, visit_id: int) -> OriginVisitInfo:
diff --git a/swh/web/tests/strategies.py b/swh/web/tests/strategies.py
--- a/swh/web/tests/strategies.py
+++ b/swh/web/tests/strategies.py
@@ -264,9 +264,10 @@
"""
ret = []
tests_data = get_tests_data()
+ storage = tests_data["storage"]
for origin in tests_data["origins"]:
- visits = list(tests_data["storage"].origin_visit_get(origin["url"]))
- if len(visits) > 1:
+ visit_page = storage.origin_visit_get(origin["url"])
+ if len(visit_page.results) > 1:
ret.append(origin)
return sampled_from(ret)

File Metadata

Mime Type
text/plain
Expires
Mon, Aug 18, 12:55 AM (3 w, 1 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3216107

Event Timeline