|
|
|
|
@ -1,6 +1,8 @@ |
|
|
|
|
from django.contrib.auth import get_user_model |
|
|
|
|
|
|
|
|
|
from rest_framework import viewsets |
|
|
|
|
from rest_framework.decorators import detail_route, list_route |
|
|
|
|
from rest_framework.response import Response |
|
|
|
|
|
|
|
|
|
from . import ExtendedModelViewSet |
|
|
|
|
from .serializers import ( |
|
|
|
|
@ -9,7 +11,8 @@ from .serializers import ( |
|
|
|
|
ImageSerializer, TextSerializer, |
|
|
|
|
ImageTextSerializer, VideoSerializer, |
|
|
|
|
GallerySerializer, GalleryImageSerializer, |
|
|
|
|
UserSerializer, LessonSerializer, |
|
|
|
|
UserSerializer, UserPhotoSerializer, |
|
|
|
|
LessonSerializer, |
|
|
|
|
) |
|
|
|
|
from .permissions import IsAdmin, IsAdminOrIsSelf, IsAuthorOrAdmin, IsAuthorObjectOrAdmin |
|
|
|
|
|
|
|
|
|
@ -152,13 +155,29 @@ class GalleryImageViewSet(ExtendedModelViewSet): |
|
|
|
|
class UserViewSet(ExtendedModelViewSet): |
|
|
|
|
queryset = User.objects.all() |
|
|
|
|
serializer_class = UserSerializer |
|
|
|
|
serializer_class_map = { |
|
|
|
|
'upload_photo': UserPhotoSerializer, |
|
|
|
|
} |
|
|
|
|
filter_fields = ('is_staff', 'is_active', 'role', |
|
|
|
|
'gender', 'is_email_proved', 'fb_id',) |
|
|
|
|
search_fields = ('email', 'first_name', 'last_name', |
|
|
|
|
'country', 'city', 'fb_id',) |
|
|
|
|
ordering_fields = ('email', 'first_name', 'last_name', |
|
|
|
|
'country', 'city', 'date_joined',) |
|
|
|
|
|
|
|
|
|
# permission_classes = (IsAdminOrIsSelf,) |
|
|
|
|
# permission_map = { |
|
|
|
|
# 'delete': IsAdmin, |
|
|
|
|
# } |
|
|
|
|
|
|
|
|
|
@detail_route(methods=['post'], url_path='upload-photo') |
|
|
|
|
def upload_photo(self, request, pk=None): |
|
|
|
|
user = self.get_object() |
|
|
|
|
serializer = self.get_serializer() |
|
|
|
|
serialized_data = serializer(data=request.data) |
|
|
|
|
if serialized_data.is_valid(): |
|
|
|
|
user.photo = serialized_data['photo'] |
|
|
|
|
user.save() |
|
|
|
|
return Response({'success': True}) |
|
|
|
|
else: |
|
|
|
|
return Response({'success': False}) |
|
|
|
|
|