35 lines
1.2 KiB
Python
35 lines
1.2 KiB
Python
# backend/core/users/services.py
|
|
|
|
import logging
|
|
from django.contrib.auth import get_user_model
|
|
from rest_framework.exceptions import ValidationError
|
|
from .serializers import UserSerializer
|
|
|
|
from typing import TYPE_CHECKING
|
|
if TYPE_CHECKING:
|
|
from .models import CustomUser as User
|
|
else:
|
|
User = get_user_model()
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
class UserService:
|
|
@staticmethod
|
|
def update_user_profile(user, data: dict) -> User:
|
|
"""
|
|
Ažurira profil koristeći serializer za validaciju.
|
|
Ovo osigurava da poslovna pravila definirana u serializeru
|
|
budu poštivana i kod programskog ažuriranja.
|
|
"""
|
|
# Koristimo serializer za validaciju dolaznih podataka
|
|
serializer = UserSerializer(user, data=data, partial=True)
|
|
|
|
if not serializer.is_valid():
|
|
logger.error(f"Neuspješna validacija profila korisnika {user.id}: {serializer.errors}")
|
|
raise ValidationError(serializer.errors)
|
|
|
|
# Spremanje validiranih podataka
|
|
updated_user = serializer.save()
|
|
logger.info(f"Korisnik {user.id} je uspješno ažurirao profil.")
|
|
|
|
return updated_user |