address comments

This commit is contained in:
Richard Yu 2025-12-08 14:54:53 -08:00
parent 86590ca403
commit 460b848669
3 changed files with 14 additions and 12 deletions

View File

@ -10,9 +10,8 @@ class JobStatus:
IN_PROGRESS = 'in_progress' IN_PROGRESS = 'in_progress'
COMPLETED = 'completed' COMPLETED = 'completed'
FAILED = 'failed' FAILED = 'failed'
CANCELLED = 'cancelled'
ALL = [PENDING, IN_PROGRESS, COMPLETED, FAILED, CANCELLED] ALL = [PENDING, IN_PROGRESS, COMPLETED, FAILED]
# Media types that can be previewed in the frontend # Media types that can be previewed in the frontend
@ -86,7 +85,7 @@ def normalize_history_item(prompt_id, history_item, include_outputs=False):
else: else:
status = JobStatus.COMPLETED status = JobStatus.COMPLETED
outputs = history_item.get('outputs', {}) outputs = history_item.get('outputs') or {}
outputs_count, preview_output = get_outputs_summary(outputs) outputs_count, preview_output = get_outputs_summary(outputs)
execution_error = None execution_error = None
@ -150,6 +149,8 @@ def get_outputs_summary(outputs):
continue continue
for item in items: for item in items:
if not isinstance(item, dict):
continue
count += 1 count += 1
if preview_output is None and is_previewable(media_type, item): if preview_output is None and is_previewable(media_type, item):

View File

@ -703,20 +703,23 @@ class PromptServer():
status_param = query.get("status", None) status_param = query.get("status", None)
status_filter = None status_filter = None
if status_param: if status_param:
status_filter = [s.strip() for s in status_param.split(',') if s.strip()] status_filter = [s.strip().lower() for s in status_param.split(',') if s.strip()]
valid_statuses = set(JobStatus.ALL) valid_statuses = set(JobStatus.ALL)
status_filter = [s for s in status_filter if s in valid_statuses] invalid_statuses = [s for s in status_filter if s not in valid_statuses]
if not status_filter: if invalid_statuses:
status_filter = None return web.json_response(
{"error": f"Invalid status value(s): {', '.join(invalid_statuses)}. Valid values: {', '.join(JobStatus.ALL)}"},
status=400
)
sort_by = query.get('sort_by', 'created_at') sort_by = query.get('sort_by', 'created_at').lower()
if sort_by not in {'created_at', 'execution_duration'}: if sort_by not in {'created_at', 'execution_duration'}:
return web.json_response( return web.json_response(
{"error": "sort_by must be 'created_at' or 'execution_duration'"}, {"error": "sort_by must be 'created_at' or 'execution_duration'"},
status=400 status=400
) )
sort_order = query.get('sort_order', 'desc') sort_order = query.get('sort_order', 'desc').lower()
if sort_order not in {'asc', 'desc'}: if sort_order not in {'asc', 'desc'}:
return web.json_response( return web.json_response(
{"error": "sort_order must be 'asc' or 'desc'"}, {"error": "sort_order must be 'asc' or 'desc'"},

View File

@ -19,7 +19,6 @@ class TestJobStatus:
assert JobStatus.IN_PROGRESS == 'in_progress' assert JobStatus.IN_PROGRESS == 'in_progress'
assert JobStatus.COMPLETED == 'completed' assert JobStatus.COMPLETED == 'completed'
assert JobStatus.FAILED == 'failed' assert JobStatus.FAILED == 'failed'
assert JobStatus.CANCELLED == 'cancelled'
def test_all_contains_all_statuses(self): def test_all_contains_all_statuses(self):
"""ALL should contain all status values.""" """ALL should contain all status values."""
@ -27,8 +26,7 @@ class TestJobStatus:
assert JobStatus.IN_PROGRESS in JobStatus.ALL assert JobStatus.IN_PROGRESS in JobStatus.ALL
assert JobStatus.COMPLETED in JobStatus.ALL assert JobStatus.COMPLETED in JobStatus.ALL
assert JobStatus.FAILED in JobStatus.ALL assert JobStatus.FAILED in JobStatus.ALL
assert JobStatus.CANCELLED in JobStatus.ALL assert len(JobStatus.ALL) == 4
assert len(JobStatus.ALL) == 5
class TestIsPreviewable: class TestIsPreviewable: