from rest_framework import viewsets
from rest_framework import viewsets
from rest_framework.permissions import IsAuthenticated
from .models import Status
from .serializers import StatusSerializer
from permissions import DynamicModelPermission
from organization.mixins import TenantViewSetMixin

class StatusViewSet(TenantViewSetMixin, viewsets.ModelViewSet):
    queryset = Status.objects.all()
    serializer_class = StatusSerializer
    permission_classes = [IsAuthenticated, DynamicModelPermission]

    def get_queryset(self):
        queryset = super().get_queryset()
        status_type = self.request.query_params.get('type')
        if status_type:
            queryset = queryset.filter(type=status_type)
        return queryset

    def perform_create(self, serializer):
        if (
            'is_global' in serializer.validated_data
            and not getattr(self.request.user, 'is_superuser', False)
        ):
            raise PermissionDenied("Only superusers can manage global data.")
        serializer.save()

    def perform_update(self, serializer):
        if (
            'is_global' in serializer.validated_data
            and not getattr(self.request.user, 'is_superuser', False)
        ):
            raise PermissionDenied("Only superusers can manage global data.")
        serializer.save()