profiles: get online status if friend
This commit is contained in:
parent
55d29d5763
commit
743988c883
@ -10,10 +10,30 @@ class ProfileSerializer(serializers.ModelSerializer):
|
||||
|
||||
username = serializers.ReadOnlyField(source='user.username')
|
||||
avatar = serializers.ImageField(required=False)
|
||||
online = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
model = ProfileModel
|
||||
fields = ["username", "avatar", "id"]
|
||||
fields = ["username", "avatar", "id", 'online']
|
||||
|
||||
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
|
||||
|
||||
if user is None:
|
||||
return False
|
||||
|
||||
if user.pk == obj.pk:
|
||||
return True
|
||||
|
||||
if not user.profilemodel.is_friend(obj):
|
||||
return None
|
||||
|
||||
return notice_manager.get_consumer_by_user(obj.user) is not None
|
||||
|
||||
def validate_avatar(self, value):
|
||||
'''
|
||||
|
@ -16,12 +16,12 @@ class ProfileViewSet(viewsets.ModelViewSet):
|
||||
|
||||
def retrieve(self, request, username=None):
|
||||
user = get_object_or_404(User, username=username)
|
||||
return Response(self.serializer_class(user.profilemodel).data)
|
||||
return Response(self.serializer_class(user.profilemodel, context={'request': request}).data)
|
||||
|
||||
def retrieve_id(self, request, pk=None):
|
||||
user = get_object_or_404(User, pk=pk)
|
||||
return Response(self.serializer_class(user.profilemodel).data)
|
||||
return Response(self.serializer_class(user.profilemodel, context={'request': request}).data)
|
||||
|
||||
def list(self, request):
|
||||
serializer = ProfileSerializer(self.get_queryset(), many=True)
|
||||
serializer = ProfileSerializer(self.get_queryset(), many=True, context={'request': request})
|
||||
return Response(serializer.data)
|
||||
|
Loading…
Reference in New Issue
Block a user