Chat finish; add invitation; friend; see online users if he is your friend
This commit is contained in:
@ -1,7 +1,9 @@
|
||||
from django.contrib import admin
|
||||
|
||||
from .models import ProfileModel, BlockModel
|
||||
from .models import ProfileModel, BlockModel, FriendModel, AskFriendModel
|
||||
|
||||
# Register your models here.
|
||||
admin.site.register(ProfileModel)
|
||||
admin.site.register(BlockModel)
|
||||
admin.site.register(FriendModel)
|
||||
admin.site.register(AskFriendModel)
|
||||
|
@ -26,3 +26,67 @@ class BlockModel(models.Model):
|
||||
|
||||
def __str__(self):
|
||||
return "blocker_id: " + str(self.blocker) + ", blocked_id: " + str(self.blocked)
|
||||
|
||||
class AskFriendModel(models.Model):
|
||||
asker = IntegerField(primary_key=False)
|
||||
asked = IntegerField(primary_key=False)
|
||||
|
||||
def getAsked(self, asker):
|
||||
askeds = []
|
||||
|
||||
for ask in AskFriendModel.objects.filter(asker=asker):
|
||||
askeds.append(ask.asked)
|
||||
|
||||
return askeds
|
||||
|
||||
def getAsker(self, asked):
|
||||
askers = []
|
||||
|
||||
for ask in AskFriendModel.objects.filter(asked=asked):
|
||||
askers.append(ask.asker)
|
||||
|
||||
return askers
|
||||
|
||||
def deleteAsk(self, asker, asked):
|
||||
|
||||
deleted = AskFriendModel.objects.filter(asker=asker, asked=asked)
|
||||
|
||||
if (deleted.count() == 0 or not deleted):
|
||||
return False
|
||||
|
||||
deleted.delete()
|
||||
return True
|
||||
|
||||
class FriendModel(models.Model):
|
||||
user_id1 = IntegerField(primary_key=False)
|
||||
user_id2 = IntegerField(primary_key=False)
|
||||
|
||||
def getFriends(self, user_id):
|
||||
friends = []
|
||||
|
||||
for friend in FriendModel.objects.filter(user_id1=user_id):
|
||||
friends.append(friend.user_id2)
|
||||
|
||||
for friend in FriendModel.objects.filter(user_id2=user_id):
|
||||
friends.append(friend.user_id1)
|
||||
|
||||
return friends
|
||||
|
||||
def isFriend(self, user_id1, user_id2):
|
||||
|
||||
return user_id2 in self.getFriends(user_id1)
|
||||
|
||||
def deleteFriend(self, user_id1, user_id2):
|
||||
|
||||
first = FriendModel.objects.filter(user_id1=user_id1, user_id2=user_id2)
|
||||
if (first.count() == 1):
|
||||
first.delete()
|
||||
return True
|
||||
|
||||
second = FriendModel.objects.filter(user_id1=user_id2, user_id2=user_id1)
|
||||
if (second.count() == 1):
|
||||
second.delete()
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
|
@ -11,5 +11,6 @@ urlpatterns = [
|
||||
path("", viewsets.ProfileViewSet.as_view({'get': 'list'}), name="profiles_list"),
|
||||
path("block", views.BlocksView.as_view(), name="block_page"),
|
||||
path("block/<int:pk>", views.BlockView.as_view(), name="block_page"),
|
||||
path("friend", views.FriendsView.as_view(), name="friend_page"),
|
||||
|
||||
] + static("/static/avatars/", document_root="./avatars")
|
||||
|
@ -4,7 +4,7 @@ from rest_framework import authentication, permissions, status
|
||||
from rest_framework.authentication import SessionAuthentication
|
||||
from rest_framework.renderers import JSONRenderer
|
||||
from django.core import serializers
|
||||
from .models import BlockModel
|
||||
from .models import BlockModel, FriendModel
|
||||
|
||||
class BlockView(APIView):
|
||||
permission_classes = (permissions.IsAuthenticated,)
|
||||
@ -25,7 +25,7 @@ class BlocksView(APIView):
|
||||
def get(self, request):
|
||||
blocks = BlockModel.objects.filter(blocker=request.user.pk)
|
||||
if (blocks):
|
||||
return Response(serializers.serialize("json", BlockModel.objects.filter(blocker=request.user.pk)), status=status.HTTP_200_OK)
|
||||
return Response({"blockeds": serializers.serialize("json", BlockModel.objects.filter(blocker=request.user.pk)), "user_id": request.user.pk}, status=status.HTTP_200_OK)
|
||||
return Response({}, status=status.HTTP_204_NO_CONTENT)
|
||||
|
||||
def post(self, request):
|
||||
@ -60,7 +60,6 @@ class BlocksView(APIView):
|
||||
|
||||
block = BlockModel.objects.filter(blocker=users_id[0], blocked=users_id[1])
|
||||
|
||||
print(list(block))
|
||||
if (block.count() > 1):
|
||||
return Response("Not normal >:[", status=status.HTTP_500_INTERNAL_SERVER_ERROR)
|
||||
|
||||
@ -69,3 +68,11 @@ class BlocksView(APIView):
|
||||
|
||||
block.delete()
|
||||
return Response("Deleted", status=status.HTTP_200_OK)
|
||||
|
||||
class FriendsView(APIView):
|
||||
|
||||
def get(self, request):
|
||||
friends = FriendModel().getFriends(request.user.pk)
|
||||
if (friends):
|
||||
return Response({"friends": friends, "user_id": request.user.pk}, status=status.HTTP_200_OK)
|
||||
return Response({}, status=status.HTTP_204_NO_CONTENT)
|
||||
|
Reference in New Issue
Block a user