profiles: online status and friend rework
This commit is contained in:
@ -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
|
||||
|
Reference in New Issue
Block a user