diff --git a/asyncron/admin.py b/asyncron/admin.py index bad4a71..a6c1232 100644 --- a/asyncron/admin.py +++ b/asyncron/admin.py @@ -39,7 +39,7 @@ class WorkerAdmin( BaseModelAdmin ): @admin.register( Task ) class TaskAdmin( BaseModelAdmin ): order = 1 - list_display = 'name', 'timeout', 'gracetime', 'jitter', 'type', 'worker_type', 'logged_executions', 'last_execution', 'scheduled' + list_display = 'name', 'timeout', 'gracetime', 'jitter', 'type', 'worker_type', 'logged', 'last_execution', 'scheduled' fields = ["name", "description", "type", "on_model_change", "jitter", "self_aware"] actions = 'schedule_execution', 'execution_now', 'delete_script_missing' @@ -80,12 +80,16 @@ class TaskAdmin( BaseModelAdmin ): try: return ", ".join( f"{m.__module__}.{m.__name__}" for m in obj.registered_tasks[obj.name].watching_models ) except: return "N/A" - def logged_executions( self, obj ): - return obj.trace_set.exclude( status = "S" ).count() + def logged( self, obj ): + count = obj.trace_set.exclude( status = "S" ).count() + if count == 1: return "1 trace" + return f"{count} traces" def last_execution( self, obj ): last_trace = obj.trace_set.exclude( status = "S" ).exclude( last_run_datetime = None ).order_by('last_run_datetime').last() - return humanize.naturaltime( last_trace.last_run_datetime ) if last_trace else "Never" + if not last_trace: return "Never" + + return "Ongoing..." if last_trace.status == "R" else humanize.naturaltime( last_trace.last_run_datetime ) def scheduled( self, obj ): return obj.trace_set.filter( status = "S" ).exists()