From 2dd7f21ef53c6bd05741a4360105ea270558f8e1 Mon Sep 17 00:00:00 2001 From: Frederick Muriuki Muriithi Date: Tue, 3 Dec 2024 15:03:48 -0600 Subject: Enable limiting of number of errors to fetch. --- uploader/jobs.py | 18 ++++++++++++----- uploader/templates/phenotypes/job-status.html | 29 +++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 5 deletions(-) (limited to 'uploader') diff --git a/uploader/jobs.py b/uploader/jobs.py index ff6a3c7..270028a 100644 --- a/uploader/jobs.py +++ b/uploader/jobs.py @@ -10,6 +10,7 @@ from datetime import timedelta from typing import Union, Optional from redis import Redis +from functional_tools import take from flask import current_app as app JOBS_PREFIX = "jobs" @@ -132,9 +133,16 @@ def update_stdout_stderr(rconn: Redis, rconn.hset(name=job_key(rprefix, jobid), key=stream, value=new_contents) -def job_errors(rconn: Redis, prefix: str, job_id: Union[str, uuid.UUID]) -> tuple[dict, ...]: +def job_errors( + rconn: Redis, + prefix: str, + job_id: Union[str, uuid.UUID], + count: int = 100 +) -> tuple[dict, ...]: """Fetch job errors""" - return tuple( - json.loads(error) - for key in rconn.keys(f"{prefix}:{str(job_id)}:*:errors:*") - for error in rconn.lrange(key, 0, -1)) + return take( + ( + json.loads(error) + for key in rconn.keys(f"{prefix}:{str(job_id)}:*:errors:*") + for error in rconn.lrange(key, 0, -1)), + count) diff --git a/uploader/templates/phenotypes/job-status.html b/uploader/templates/phenotypes/job-status.html index d531a71..cfbedd5 100644 --- a/uploader/templates/phenotypes/job-status.html +++ b/uploader/templates/phenotypes/job-status.html @@ -40,6 +40,35 @@ {%endif%} +
File | +Row | +Column | +Message | +
---|---|---|---|
{{error.filename}} | +{{error.rowtitle}} | +{{error.coltitle}} | +{{error.message}} | +
+ No errors found so far. + | +