profiles: rearranged models
This commit is contained in:
parent
26fa52b136
commit
0f9a4d1690
@ -2,7 +2,7 @@ from rest_framework import serializers
|
|||||||
|
|
||||||
from django.utils.translation import gettext as _
|
from django.utils.translation import gettext as _
|
||||||
|
|
||||||
from profiles.models.ProfileModel import ProfileModel
|
from profiles.models import ProfileModel
|
||||||
from .models import ChatChannelModel, ChatMessageModel
|
from .models import ChatChannelModel, ChatMessageModel
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,12 +1,9 @@
|
|||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
|
||||||
from .models.BlockModel import BlockModel
|
from .models import ProfileModel, FriendModel, FriendRequestModel, BlockModel
|
||||||
from .models.FriendModel import FriendModel
|
|
||||||
# from .models.FriendRequestModel import FriendRequestModel
|
|
||||||
from .models.ProfileModel import ProfileModel
|
|
||||||
|
|
||||||
# Register your models here.
|
# Register your models here.
|
||||||
admin.site.register(ProfileModel)
|
admin.site.register(ProfileModel)
|
||||||
admin.site.register(BlockModel)
|
admin.site.register(BlockModel)
|
||||||
admin.site.register(FriendModel)
|
admin.site.register(FriendModel)
|
||||||
# admin.site.register(AskFriendModel)
|
admin.site.register(FriendRequestModel)
|
||||||
|
@ -7,7 +7,6 @@ from django.db.models.signals import post_save, pre_delete
|
|||||||
from django.dispatch import receiver
|
from django.dispatch import receiver
|
||||||
|
|
||||||
from games.consumers import game_manager
|
from games.consumers import game_manager
|
||||||
from . import FriendModel
|
|
||||||
|
|
||||||
|
|
||||||
def upload_to(instance, filename: str):
|
def upload_to(instance, filename: str):
|
||||||
@ -28,21 +27,38 @@ class ProfileModel(Model):
|
|||||||
def get_friends(self) -> list[ProfileModel]:
|
def get_friends(self) -> list[ProfileModel]:
|
||||||
friends: list[ProfileModel] = []
|
friends: list[ProfileModel] = []
|
||||||
|
|
||||||
for friendship in FriendModel.FriendModel.objects.filter(Q(friend1=self) | Q(friend2=self)):
|
for friendship in FriendModel.objects.filter(Q(friend1=self) | Q(friend2=self)):
|
||||||
friends.append(friendship.friend1 if friendship.friend1 != self else friendship.friend2)
|
friends.append(friendship.friend1 if friendship.friend1 != self else friendship.friend2)
|
||||||
|
|
||||||
return friends
|
return friends
|
||||||
|
|
||||||
def is_friend(self, friend):
|
def is_friend(self, friend):
|
||||||
return friend in self.get_friends()
|
return FriendModel.objects.filter(
|
||||||
|
(Q(friend1=self) & Q(friend2=friend)) |
|
||||||
|
(Q(friend2=self) & Q(friend1=friend))
|
||||||
|
).exists()
|
||||||
|
|
||||||
def delete_friend(self, friend):
|
def delete_friend(self, friend):
|
||||||
print(friend)
|
FriendModel.objects.get(
|
||||||
FriendModel.FriendModel.objects.get(
|
|
||||||
(Q(friend1=self) & Q(friend2=friend)) |
|
(Q(friend1=self) & Q(friend2=friend)) |
|
||||||
(Q(friend2=self) & Q(friend1=friend))
|
(Q(friend2=self) & Q(friend1=friend))
|
||||||
).delete()
|
).delete()
|
||||||
|
|
||||||
|
def is_friend_requested_by(self, profile):
|
||||||
|
return self.get_received_friend_request_from(profile) is None
|
||||||
|
|
||||||
|
def get_received_friend_request_from(self, profile):
|
||||||
|
return FriendRequestModel.objects.filter(author=profile, target=self).first()
|
||||||
|
|
||||||
|
def is_friend_requesting(self, profile):
|
||||||
|
return FriendRequestModel.objects.filter(author=self, target=profile).exists()
|
||||||
|
|
||||||
|
def get_sent_friend_requests(self) -> list[ProfileModel]:
|
||||||
|
return FriendRequestModel.objects.filter(author=self)
|
||||||
|
|
||||||
|
def get_received_friend_requests(self) -> list[ProfileModel]:
|
||||||
|
return FriendRequestModel.objects.filter(target=self)
|
||||||
|
|
||||||
|
|
||||||
@receiver(pre_delete, sender=ProfileModel)
|
@receiver(pre_delete, sender=ProfileModel)
|
||||||
def delete_profile_picture(sender, instance, **kwargs):
|
def delete_profile_picture(sender, instance, **kwargs):
|
||||||
@ -55,3 +71,22 @@ def on_user_created(sender, instance, created, **kwargs):
|
|||||||
if created:
|
if created:
|
||||||
profile: ProfileModel = ProfileModel.objects.create(pk=instance.pk, user=instance)
|
profile: ProfileModel = ProfileModel.objects.create(pk=instance.pk, user=instance)
|
||||||
profile.save()
|
profile.save()
|
||||||
|
|
||||||
|
|
||||||
|
class FriendModel(Model):
|
||||||
|
friend1 = ForeignKey(ProfileModel, on_delete=CASCADE, related_name='friend1')
|
||||||
|
friend2 = ForeignKey(ProfileModel, on_delete=CASCADE, related_name='friend2')
|
||||||
|
|
||||||
|
|
||||||
|
class FriendRequestModel(Model):
|
||||||
|
author = ForeignKey(ProfileModel, on_delete=CASCADE, related_name='author')
|
||||||
|
target = ForeignKey(ProfileModel, on_delete=CASCADE, related_name='target')
|
||||||
|
|
||||||
|
def accept(self):
|
||||||
|
FriendModel(friend1=self.author, friend2=self.target).save()
|
||||||
|
self.delete()
|
||||||
|
|
||||||
|
|
||||||
|
class BlockModel(Model):
|
||||||
|
blocker = ForeignKey(ProfileModel, on_delete=CASCADE, related_name='blocker')
|
||||||
|
blocked = ForeignKey(ProfileModel, on_delete=CASCADE, related_name='blocked')
|
@ -1,7 +0,0 @@
|
|||||||
from django.db import models
|
|
||||||
from django.contrib.auth.models import User
|
|
||||||
|
|
||||||
|
|
||||||
class BlockModel(models.Model):
|
|
||||||
blocker = models.ForeignKey(User, on_delete=models.CASCADE, related_name='blocker')
|
|
||||||
blocked = models.ForeignKey(User, on_delete=models.CASCADE, related_name='blocked')
|
|
@ -1,8 +0,0 @@
|
|||||||
from django.db import models
|
|
||||||
|
|
||||||
from . import ProfileModel
|
|
||||||
|
|
||||||
|
|
||||||
class FriendModel(models.Model):
|
|
||||||
friend1 = models.ForeignKey(ProfileModel.ProfileModel, on_delete=models.CASCADE, related_name='friend1')
|
|
||||||
friend2 = models.ForeignKey(ProfileModel.ProfileModel, on_delete=models.CASCADE, related_name='friend2')
|
|
@ -3,7 +3,7 @@ from django.utils.translation import gettext as _
|
|||||||
|
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
|
||||||
from ..models.ProfileModel import ProfileModel
|
from ..models import ProfileModel
|
||||||
|
|
||||||
|
|
||||||
class ProfileSerializer(serializers.ModelSerializer):
|
class ProfileSerializer(serializers.ModelSerializer):
|
||||||
|
@ -7,8 +7,7 @@ from rest_framework.request import Request
|
|||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.utils.translation import gettext as _
|
from django.utils.translation import gettext as _
|
||||||
|
|
||||||
from ..models.BlockModel import BlockModel
|
from ..models import BlockModel, ProfileModel
|
||||||
from ..models.ProfileModel import ProfileModel
|
|
||||||
from ..serializers.ProfileSerializer import ProfileSerializer
|
from ..serializers.ProfileSerializer import ProfileSerializer
|
||||||
|
|
||||||
|
|
||||||
|
@ -7,8 +7,7 @@ from django.utils.translation import gettext as _
|
|||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
from django.shortcuts import get_object_or_404
|
from django.shortcuts import get_object_or_404
|
||||||
|
|
||||||
from ..models.FriendModel import FriendModel
|
from ..models import ProfileModel, FriendModel
|
||||||
from ..models.ProfileModel import ProfileModel
|
|
||||||
from ..serializers.ProfileSerializer import ProfileSerializer
|
from ..serializers.ProfileSerializer import ProfileSerializer
|
||||||
|
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ from rest_framework.response import Response
|
|||||||
from rest_framework.authentication import SessionAuthentication
|
from rest_framework.authentication import SessionAuthentication
|
||||||
|
|
||||||
from ..serializers.ProfileSerializer import ProfileSerializer
|
from ..serializers.ProfileSerializer import ProfileSerializer
|
||||||
from ..models.ProfileModel import ProfileModel
|
from ..models import ProfileModel
|
||||||
|
|
||||||
|
|
||||||
class MyProfileViewSet(viewsets.ModelViewSet):
|
class MyProfileViewSet(viewsets.ModelViewSet):
|
||||||
|
@ -6,7 +6,7 @@ from rest_framework import viewsets
|
|||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
|
|
||||||
from ..serializers.ProfileSerializer import ProfileSerializer
|
from ..serializers.ProfileSerializer import ProfileSerializer
|
||||||
from ..models.ProfileModel import ProfileModel
|
from ..models import ProfileModel
|
||||||
|
|
||||||
|
|
||||||
class ProfileViewSet(viewsets.ModelViewSet):
|
class ProfileViewSet(viewsets.ModelViewSet):
|
||||||
|
Loading…
Reference in New Issue
Block a user