Files
mariomitte 5d39e048ba
Some checks failed
ERP CI Pipeline / test (push) Has been cancelled
prvi kod za live uporabu
2026-07-09 21:21:17 +02:00

41 lines
1.7 KiB
Python

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}")