This commit is contained in:
50
backend/modules/crm/serializers.py
Normal file
50
backend/modules/crm/serializers.py
Normal file
@@ -0,0 +1,50 @@
|
||||
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)})
|
||||
Reference in New Issue
Block a user