mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-08-07 19:08:32 -05:00
Add sanity check to system status
This commit is contained in:
@@ -62,13 +62,13 @@ class SanityCheckFailedException(Exception):
|
||||
|
||||
|
||||
def check_sanity(*, progress=False, scheduled=True) -> SanityCheckMessages:
|
||||
task = PaperlessTask.objects.create(
|
||||
paperless_task = PaperlessTask.objects.create(
|
||||
task_id=uuid.uuid4(),
|
||||
type=PaperlessTask.TaskType.SCHEDULED_TASK
|
||||
if scheduled
|
||||
else PaperlessTask.TaskType.MANUAL_TASK,
|
||||
task_name="check_sanity",
|
||||
status=PaperlessTask.TASK_STATE_CHOICES.STARTED,
|
||||
status=states.STARTED,
|
||||
date_created=timezone.now(),
|
||||
date_started=timezone.now(),
|
||||
)
|
||||
@@ -156,8 +156,11 @@ def check_sanity(*, progress=False, scheduled=True) -> SanityCheckMessages:
|
||||
for extra_file in present_files:
|
||||
messages.warning(None, f"Orphaned file in media dir: {extra_file}")
|
||||
|
||||
task.status = states.SUCCESS if not messages.has_error else states.FAILED
|
||||
paperless_task.status = states.SUCCESS if not messages.has_error else states.FAILURE
|
||||
# result is concatenated messages
|
||||
task.result = str(messages)
|
||||
task.date_done = timezone.now()
|
||||
paperless_task.result = f"{len(messages)} issues found."
|
||||
if messages.has_error:
|
||||
paperless_task.result += " Check logs for details."
|
||||
paperless_task.date_done = timezone.now()
|
||||
paperless_task.save(update_fields=["status", "result", "date_done"])
|
||||
return messages
|
||||
|
@@ -2568,6 +2568,14 @@ class CustomFieldViewSet(ModelViewSet):
|
||||
"last_trained": serializers.DateTimeField(),
|
||||
},
|
||||
),
|
||||
"sanity_check": inline_serializer(
|
||||
name="SanityCheck",
|
||||
fields={
|
||||
"status": serializers.CharField(),
|
||||
"error": serializers.CharField(),
|
||||
"last_run": serializers.DateTimeField(),
|
||||
},
|
||||
),
|
||||
},
|
||||
),
|
||||
},
|
||||
@@ -2672,6 +2680,27 @@ class SystemStatusView(PassUserMixin):
|
||||
last_trained_task.date_done if last_trained_task else None
|
||||
)
|
||||
|
||||
last_sanity_check = (
|
||||
PaperlessTask.objects.filter(
|
||||
task_name__icontains="check_sanity",
|
||||
)
|
||||
.order_by("-date_done")
|
||||
.first()
|
||||
)
|
||||
|
||||
sanity_check_status = (
|
||||
"OK"
|
||||
if last_sanity_check is not None
|
||||
and last_sanity_check.status == states.SUCCESS
|
||||
else "ERROR"
|
||||
)
|
||||
sanity_check_error = None
|
||||
if last_sanity_check.status == states.FAILURE:
|
||||
sanity_check_error = last_sanity_check.result
|
||||
sanity_check_last_run = (
|
||||
last_sanity_check.date_done if last_sanity_check else None
|
||||
)
|
||||
|
||||
return Response(
|
||||
{
|
||||
"pngx_version": current_version,
|
||||
@@ -2704,6 +2733,9 @@ class SystemStatusView(PassUserMixin):
|
||||
"classifier_status": classifier_status,
|
||||
"classifier_last_trained": classifier_last_trained,
|
||||
"classifier_error": classifier_error,
|
||||
"sanity_check_status": sanity_check_status,
|
||||
"sanity_check_last_run": sanity_check_last_run,
|
||||
"sanity_check_error": sanity_check_error,
|
||||
},
|
||||
},
|
||||
)
|
||||
|
Reference in New Issue
Block a user