Merge branch 'main' of codeberg.org:adrien-lsh/ft_transcendence
This commit is contained in:
commit
188de86f8d
@ -18,7 +18,7 @@ class NoticeManager:
|
|||||||
|
|
||||||
unsend_notices = NoticeModel.objects.filter(user=consumer.user)
|
unsend_notices = NoticeModel.objects.filter(user=consumer.user)
|
||||||
for notice in unsend_notices:
|
for notice in unsend_notices:
|
||||||
self.notify_user(consumer.user, json_data=notice.data)
|
consumer.send(notice.data)
|
||||||
notice.delete()
|
notice.delete()
|
||||||
|
|
||||||
def remove(self, consumer: NoticeConsumer):
|
def remove(self, consumer: NoticeConsumer):
|
||||||
@ -29,9 +29,9 @@ class NoticeManager:
|
|||||||
if consumer.user == user:
|
if consumer.user == user:
|
||||||
return consumer
|
return consumer
|
||||||
|
|
||||||
def notify_user(self, user: User, data: dict = None, json_data: str = None):
|
def notify_user(self, user: User, data: dict):
|
||||||
consumer = self.get_consumer_by_user(user)
|
consumer = self.get_consumer_by_user(user)
|
||||||
data_str: str = json.dumps(data) if json_data is None else json_data
|
data_str: str = json.dumps(data)
|
||||||
if consumer:
|
if consumer:
|
||||||
consumer.send(data_str)
|
consumer.send(data_str)
|
||||||
else:
|
else:
|
||||||
|
@ -10,10 +10,30 @@ class ProfileSerializer(serializers.ModelSerializer):
|
|||||||
|
|
||||||
username = serializers.ReadOnlyField(source='user.username')
|
username = serializers.ReadOnlyField(source='user.username')
|
||||||
avatar = serializers.ImageField(required=False)
|
avatar = serializers.ImageField(required=False)
|
||||||
|
online = serializers.SerializerMethodField()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = ProfileModel
|
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):
|
def validate_avatar(self, value):
|
||||||
'''
|
'''
|
||||||
|
@ -16,12 +16,12 @@ class ProfileViewSet(viewsets.ModelViewSet):
|
|||||||
|
|
||||||
def retrieve(self, request, username=None):
|
def retrieve(self, request, username=None):
|
||||||
user = get_object_or_404(User, username=username)
|
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):
|
def retrieve_id(self, request, pk=None):
|
||||||
user = get_object_or_404(User, pk=pk)
|
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):
|
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)
|
return Response(serializer.data)
|
||||||
|
Loading…
Reference in New Issue
Block a user