This commit is contained in:
35
backend/core/users/services.py
Normal file
35
backend/core/users/services.py
Normal file
@@ -0,0 +1,35 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user