profiles: online status and friend rework

This commit is contained in:
AdrienLSH
2024-05-07 19:53:28 +02:00
parent c2aafe9a42
commit 17bcee764b
9 changed files with 111 additions and 53 deletions

View File

@ -11,19 +11,19 @@ class ProfileSerializer(serializers.ModelSerializer):
username = serializers.ReadOnlyField(source='user.username')
avatar = serializers.ImageField(required=False)
online = serializers.SerializerMethodField()
is_friend = serializers.SerializerMethodField()
has_incoming_request = serializers.SerializerMethodField()
has_outgoing_request = serializers.SerializerMethodField()
class Meta:
model = ProfileModel
fields = ["username", "avatar", "id", 'online']
fields = ["username", "avatar", "id", 'online', 'is_friend',
'has_outgoing_request', 'has_incoming_request']
def get_online(self, obj: ProfileModel):
from notice.consumers import notice_manager
user = None
request = self.context.get("request")
if request and hasattr(request, "user"):
user = request.user
user = self.context.get('user')
if user is None or not user.is_authenticated:
return None
@ -32,6 +32,27 @@ class ProfileSerializer(serializers.ModelSerializer):
return notice_manager.get_consumer_by_user(obj.user) is not None
def get_is_friend(self, obj: ProfileModel):
user = self.context.get('user')
if user is None or not user.is_authenticated or user.pk == obj.pk:
return False
return obj.is_friend(user.profilemodel)
def get_has_incoming_request(self, obj: ProfileModel):
user = self.context.get('user')
if user is None or not user.is_authenticated or user.pk == obj.pk:
return False
return obj.is_friend_requesting(user.profilemodel)
def get_has_outgoing_request(self, obj: ProfileModel):
user = self.context.get('user')
if user is None or not user.is_authenticated or user.pk == obj.pk:
return False
return obj.is_friend_requested_by(user.profilemodel)
def validate_avatar(self, value):
'''
Check that the image is not too large