# backend/core/users/views.py from rest_framework import viewsets, permissions from rest_framework.decorators import action from rest_framework.response import Response from django.contrib.auth import get_user_model from .serializers import TeamMemberSerializer, UserSerializer from .services import UserService User = get_user_model() class IsOwner(permissions.BasePermission): """Prilagođeni permission: Korisnik može uređivati samo sebe.""" def has_object_permission(self, request, view, obj): return obj.id == request.user.id class UserViewSet(viewsets.ModelViewSet): queryset = User.objects.all() serializer_class = UserSerializer permission_classes = [permissions.IsAuthenticated] @action(detail=False, methods=['get']) def me(self, request): serializer = self.get_serializer(request.user) return Response(serializer.data) @action(detail=False, methods=['get'], url_path='team-members') def team_members(self, request): queryset = User.objects.filter(is_active=True, is_team_member=True).order_by('first_name', 'last_name', 'email') serializer = TeamMemberSerializer(queryset, many=True) return Response(serializer.data) @action(detail=False, methods=['get'], url_path='servicers') def servicers(self, request): queryset = User.objects.filter(is_active=True, is_serviser=True).order_by('first_name', 'last_name', 'email') serializer = TeamMemberSerializer(queryset, many=True) return Response(serializer.data) def perform_update(self, serializer): # Delegiramo logiku servisu UserService.update_user_profile( user=self.request.user, data=serializer.validated_data ) def get_queryset(self): # Korisnik vidi samo sebe (ili admini vide sve) if self.request.user.is_staff: return User.objects.all() return User.objects.filter(id=self.request.user.id)