Files
004.erp.generic/backend/modules/crm/serializers.py
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

50 lines
1.7 KiB
Python

from rest_framework import serializers
from rest_framework.exceptions import ValidationError as DRFValidationError
from .models import Client
from .services import ClientService
class ClientSerializer(serializers.ModelSerializer):
class Meta:
model = Client
fields = [
'id', 'name', 'client_type', 'tax_id',
'email', 'phone', 'address', 'city', 'postal_code',
'created_at', 'is_active'
]
read_only_fields = ['id', 'created_at', 'is_active']
def _get_request_user(self):
"""
Sigurno dohvaćanje korisnika iz contexta serializer-a.
Request iz RequestFactory može biti WSGIRequest bez atributa 'user',
zato koristimo getattr.
"""
request = self.context.get('request') if self.context else None
return getattr(request, 'user', None)
def create(self, validated_data):
"""
Delegate creation to service layer.
"""
try:
user = self._get_request_user()
return ClientService.create_client(validated_data, user=user)
except DRFValidationError:
# re-raise as-is
raise
except Exception as exc:
# wrap non-DRF exceptions
raise DRFValidationError({"detail": str(exc)})
def update(self, instance, validated_data):
"""
Delegate update to service layer.
"""
try:
user = self._get_request_user()
return ClientService.update_client(instance, validated_data, user=user)
except DRFValidationError:
raise
except Exception as exc:
raise DRFValidationError({"detail": str(exc)})