from rest_framework.permissions import SAFE_METHODS

from config.permissions import IsActiveUser, IsAdmin


class ReadAllWriteAdminMixin:
    """Leitura para qualquer utilizador autenticado; escrita apenas para admin.

    Aplicável a dados de referência (corredores, infraestrutura, comboios).
    Baseia-se no método HTTP: métodos seguros (GET/HEAD/OPTIONS) são leitura.
    """

    def get_permissions(self):
        if self.request.method in SAFE_METHODS:
            return [IsActiveUser()]
        return [IsAdmin()]
