Código-fonte para django_celery_task_monitor.permissions

"""Utilitários de controle de permissão para o monitoramento de tarefas.

A permissão ``view_task_trace`` (registrada em :class:`TaskLog.Meta.permissions
<django_celery_task_monitor.models.TaskLog>`) controla quem pode ver o
stacktrace completo de uma tarefa que falhou. Usuários sem essa permissão
recebem apenas uma mensagem amigável, conforme
:data:`django_celery_task_monitor.settings.FRIENDLY_ERROR_MESSAGE`.
"""

from __future__ import annotations

from typing import Any

from . import settings as app_settings


[documentos] def user_can_view_task_trace(user: Any) -> bool: """Retorna ``True`` se ``user`` pode ver o stacktrace completo de uma tarefa. Superusuários sempre podem. Usuários anônimos (ou ``None``) nunca podem. Demais usuários precisam da permissão configurada em :data:`django_celery_task_monitor.settings.TASK_TRACE_PERMISSION`. ``user`` aceita tanto um ``AbstractBaseUser`` autenticado quanto um ``AnonymousUser``/``None``, por isso o tipo é deliberadamente duck-typed (``has_perm`` existe em ambos, mas com bases distintas no Django). """ if user is None or not getattr(user, "is_authenticated", False): return False if getattr(user, "is_superuser", False): return True has_perm = getattr(user, "has_perm", None) return bool(has_perm(app_settings.TASK_TRACE_PERMISSION)) if has_perm else False