fix(observatory): offer only uncalculated profiles without completion badges
This commit is contained in:
@@ -2080,12 +2080,15 @@ class ObservatoryRecordedJobQueue:
|
||||
*,
|
||||
source_session_id: str | None = None,
|
||||
setup_id: str | None = None,
|
||||
definition_sha256: str | None = None,
|
||||
limit: int = 100,
|
||||
) -> tuple[ObservatoryRecordedJob, ...]:
|
||||
if source_session_id is not None:
|
||||
_validate_pattern(source_session_id, _SESSION_ID, "source session id")
|
||||
if setup_id is not None:
|
||||
_validate_pattern(setup_id, _IDENTIFIER, "setup id")
|
||||
if definition_sha256 is not None:
|
||||
_validate_pattern(definition_sha256, _SHA256, "definition sha256")
|
||||
if not isinstance(limit, int) or isinstance(limit, bool) or not 1 <= limit <= 500:
|
||||
raise ValueError("recorded-job list limit is invalid")
|
||||
clauses: list[str] = []
|
||||
@@ -2096,6 +2099,9 @@ class ObservatoryRecordedJobQueue:
|
||||
if setup_id is not None:
|
||||
clauses.append("setup_id = ?")
|
||||
parameters.append(setup_id)
|
||||
if definition_sha256 is not None:
|
||||
clauses.append("definition_sha256 = ?")
|
||||
parameters.append(definition_sha256)
|
||||
where = f" WHERE {' AND '.join(clauses)}" if clauses else ""
|
||||
parameters.append(limit)
|
||||
with self._read_connection() as connection:
|
||||
|
||||
@@ -1131,11 +1131,13 @@ def build_observatory_router(
|
||||
pattern=r"^[a-z][a-z0-9-]{2,95}$",
|
||||
),
|
||||
limit: int = Query(default=20, ge=1, le=100),
|
||||
definition_sha256: str | None = Query(default=None, pattern=r"^[a-f0-9]{64}$"),
|
||||
) -> dict[str, object]:
|
||||
try:
|
||||
jobs = recorded_job_queue.list_jobs(
|
||||
source_session_id=source_session_id,
|
||||
setup_id=setup_id,
|
||||
definition_sha256=definition_sha256,
|
||||
limit=limit,
|
||||
)
|
||||
except (ObservatoryRecordedQueueError, ValueError) as exc:
|
||||
|
||||
Reference in New Issue
Block a user