Merge branch 'main' of codeberg.org:adrien-lsh/ft_transcendence

This commit is contained in:
Xamora 2024-04-28 18:01:02 +02:00
commit 188de86f8d
3 changed files with 27 additions and 7 deletions

View File

@ -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:

View File

@ -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):
''' '''

View File

@ -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)