import logging from rest_framework import viewsets, permissions from rest_framework.exceptions import ValidationError from .models import Client from .serializers import ClientSerializer from .services import ClientService logger = logging.getLogger(__name__) class ClientViewSet(viewsets.ModelViewSet): queryset = Client.objects.filter(is_active=True) serializer_class = ClientSerializer permission_classes = [permissions.IsAuthenticated] def perform_create(self, serializer): try: instance = serializer.save() serializer.instance = instance except ValidationError as e: logger.warning(f"Validation error creating client by {self.request.user}: {e}") raise e except Exception as e: logger.error(f"Unexpected error creating client: {e}", exc_info=True) raise ValidationError({"detail": "Došlo je do greške pri stvaranju klijenta."}) def perform_update(self, serializer): try: instance = serializer.save() serializer.instance = instance except ValidationError as e: logger.warning(f"Validation error updating client by {self.request.user}: {e}") raise e except Exception as e: logger.error(f"Unexpected error updating client: {e}", exc_info=True) raise ValidationError({"detail": "Došlo je do greške pri ažuriranju klijenta."}) def perform_destroy(self, instance): # Delegate deletion (soft-delete) to service layer ClientService.delete_client(instance, user=self.request.user) logger.info(f"Client {instance.id} soft-deleted by {self.request.user}")