Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions backend/users/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,9 @@ class CustomUser(AbstractUser):
USERNAME_FIELD = "email"
REQUIRED_FIELDS = ("username",)

is_active = models.BooleanField(default=False)
delete_time = models.DateTimeField(null=True, blank=True)

class Meta:
verbose_name = _("Пользователь")
verbose_name_plural = _("Пользователи")
Expand Down
9 changes: 9 additions & 0 deletions backend/users/permissions.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
from rest_framework.permissions import BasePermission


class IsActiveUser(BasePermission):
'''
Ограничение доступа для временно удаленного пользователя
'''
def has_permission(self, request, view):
return request.user.is_active
37 changes: 29 additions & 8 deletions backend/users/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
from .serializers import (CoordinateSerializer, CustomUserSerializer,
FriendSerializer, FriendsRelationshipSerializer,
UserpicSerializer, UserStatusSerializer)
from .permissions import IsActiveUser


class CustomUserViewSet(UserViewSet):
Expand Down Expand Up @@ -49,7 +50,7 @@ def friends(self, request):
@action(
methods=["post"],
detail=True,
permission_classes=(IsAuthenticated,),
permission_classes=(IsAuthenticated, IsActiveUser),
url_path="add-friend",
)
def add_friend(self, request, **kwargs):
Expand All @@ -74,7 +75,7 @@ def add_friend(self, request, **kwargs):
@action(
methods=["post"],
detail=True,
permission_classes=(IsAuthenticated,),
permission_classes=(IsAuthenticated, IsActiveUser),
url_path="approved",
)
def approve_request(self, request, **kwargs):
Expand All @@ -97,10 +98,30 @@ def approve_request(self, request, **kwargs):
from_user.friends.add(to_user)
return Response(serializer.data, status=HTTP_201_CREATED)

@action(
methods=["post"],
detail=True,
permission_classes=(IsAuthenticated, ),
url_path="delete-control"
)
def user_active_control(self, request):
import datetime

user = request.user
if user.is_active:
user.is_active = False
user.delete_time = datetime.datetime.now()
else:
user.is_active = True
user.delete_time = None
user.save()
return HttpResponseRedirect(redirect_to=settings.LOGIN_URL_)


@action(
methods=["delete"],
detail=True,
permission_classes=(IsAuthenticated,),
permission_classes=(IsAuthenticated, IsActiveUser),
url_path="delete-friend",
)
def delete_friend(self, request, **kwargs):
Expand All @@ -119,7 +140,7 @@ def delete_friend(self, request, **kwargs):
@action(
methods=["delete"],
detail=True,
permission_classes=(IsAuthenticated,),
permission_classes=(IsAuthenticated, IsActiveUser),
url_path="delete-request",
)
def delete_request(self, request, **kwargs):
Expand All @@ -140,7 +161,7 @@ def delete_request(self, request, **kwargs):
@action(
methods=["get"],
detail=False,
permission_classes=(IsAuthenticated,),
permission_classes=(IsAuthenticated, IsActiveUser),
url_path="all-requests",
)
def all_requests(self, request):
Expand All @@ -153,7 +174,7 @@ def all_requests(self, request):
@action(
methods=["patch"],
detail=True,
permission_classes=(IsAuthenticated,),
permission_classes=(IsAuthenticated, IsActiveUser),
url_path="update-coordinates",
)
def update_coordinates(self, request, **kwargs):
Expand All @@ -174,7 +195,7 @@ def update_coordinates(self, request, **kwargs):
@action(
methods=["get"],
detail=False,
permission_classes=(IsAuthenticated,),
permission_classes=(IsAuthenticated, IsActiveUser),
url_path="get-friends",
)
def get_friends(self, request, **kwargs):
Expand Down Expand Up @@ -224,7 +245,7 @@ def update_friends_category(self, request, **kwargs):
@action(
methods=["patch"],
detail=True,
permission_classes=(IsAuthenticated,),
permission_classes=(IsAuthenticated, IsActiveUser),
url_path="update-user-pic",
)
def update_user_pic(self, request, **kwargs):
Expand Down