Merge with Xamora
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)
|
||||
|
@ -35,3 +35,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("block", views.BlocksView.as_view(), name="block_page"),
|
||||
path("block/<int:pk>", views.BlockView.as_view(), name="block_page"),
|
||||
path("<str:username>", viewsets.ProfileViewSet.as_view({'get': 'retrieve'}), name="profile_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):
|
||||
@ -33,7 +33,10 @@ class BlocksView(APIView):
|
||||
users_id = request.data.get("users_id", None)
|
||||
|
||||
if (users_id == None):
|
||||
return Response({"Error"}, status=status.HTTP_400_BAD_REQUEST)
|
||||
return Response({"Error send None"}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
if (users_id[0] == None or users_id[1] == None):
|
||||
return Response({"Error send blocker/ed None"}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
if (BlockModel.objects.filter(blocker=users_id[0], blocked=users_id[1])):
|
||||
return Response({"Already Exist"}, status=status.HTTP_409_CONFLICT)
|
||||
@ -52,9 +55,11 @@ class BlocksView(APIView):
|
||||
if (users_id == None):
|
||||
return Response({"Error"}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
if (users_id[0] == None or users_id[1] == None):
|
||||
return Response({"Error send blocker/ed None"}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
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)
|
||||
|
||||
@ -63,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