Código-fonte para django_celery_task_monitor.views

"""Endpoint REST genérico e independente de admin para polling de status.

Este módulo é **opcional**: :class:`~django_celery_task_monitor.admin.CeleryTaskMonitorMixin`
já registra sua própria rota de polling por ``ModelAdmin`` via ``get_urls()``.
Use ``TaskStatusView`` quando quiser um único endpoint compartilhado fora do
admin (ex.: para uma página customizada do projeto host).
"""

from __future__ import annotations

from django.contrib.auth.mixins import LoginRequiredMixin
from django.http import HttpRequest, JsonResponse
from django.shortcuts import get_object_or_404
from django.views import View

from .models import TaskLog


[documentos] class TaskStatusView(LoginRequiredMixin, View): """View genérica que retorna o status (JSON) de um :class:`TaskLog` pelo ``task_id``. Para usar, registre a rota no ``urls.py`` do projeto host:: from django_celery_task_monitor.views import TaskStatusView urlpatterns = [ path("task-status/<str:task_id>/", TaskStatusView.as_view(), name="task-status"), ] """ raise_exception = False
[documentos] def get(self, request: HttpRequest, task_id: str) -> JsonResponse: """Retorna o payload de status da tarefa, ou 404 se ``task_id`` não existir.""" task_log = get_object_or_404(TaskLog, task_id=task_id) return JsonResponse(task_log.as_status_payload(request.user))