mirror of
https://gitlab.com/animath/si/plateforme.git
synced 2025-05-16 23:32:45 +00:00
Compare commits
36 Commits
f817c71043
...
bd416318ac
Author | SHA1 | Date | |
---|---|---|---|
|
bd416318ac | ||
|
90bec6bf5e | ||
|
ed5944e044 | ||
|
a41c17576f | ||
|
80456f4da8 | ||
|
1a641cb2d7 | ||
|
8f3929875f | ||
|
f26f102650 | ||
|
1e5d0ebcfc | ||
|
0cab21f344 | ||
|
a771710094 | ||
|
3b3dcff28b | ||
|
d6aa5eb0cc | ||
|
c6b9a84def | ||
|
675f19492c | ||
|
a5c210e9b6 | ||
|
784002c085 | ||
|
e77cc558de | ||
|
7bb0f78f34 | ||
|
bfd1a76a2d | ||
|
b86dfe7351 | ||
|
d36e97fa2e | ||
|
181bb86e49 | ||
|
a121d1042b | ||
|
2d706b2b81 | ||
|
ca91842c2d | ||
|
d617dd77c1 | ||
|
d59bb75dce | ||
|
4a78e80399 | ||
|
f3a4a99b78 | ||
|
46fc5f39c8 | ||
|
b464e7df1d | ||
|
7498677bbd | ||
|
ea8007aa07 | ||
|
d9bb0a0860 | ||
|
a594b268ea |
@ -3,7 +3,7 @@
|
||||
|
||||
from channels.generic.websocket import AsyncJsonWebsocketConsumer
|
||||
from django.contrib.auth.models import User
|
||||
from django.db.models import Count, Exists, OuterRef, Q
|
||||
from django.db.models import Count, F, Q
|
||||
from registration.models import Registration
|
||||
|
||||
from .models import Channel, Message
|
||||
@ -93,7 +93,9 @@ class ChatConsumer(AsyncJsonWebsocketConsumer):
|
||||
'unread_messages': channel.unread_messages,
|
||||
}
|
||||
async for channel in self.read_channels.prefetch_related('invited')
|
||||
.annotate(unread_messages=Count('messages', filter=~Q(messages__users_read=user))).all()
|
||||
.annotate(total_messages=Count('messages', distinct=True))
|
||||
.annotate(read_messages=Count('messages', filter=Q(messages__users_read=user), distinct=True))
|
||||
.annotate(unread_messages=F('total_messages') - F('read_messages')).all()
|
||||
]
|
||||
}
|
||||
await self.send_json(message)
|
||||
@ -160,8 +162,7 @@ class ChatConsumer(AsyncJsonWebsocketConsumer):
|
||||
|
||||
messages = Message.objects \
|
||||
.filter(channel=channel) \
|
||||
.annotate(read=Exists(User.objects.filter(pk=self.scope['user'].pk)
|
||||
.filter(pk=OuterRef('users_read')))) \
|
||||
.annotate(read=Count('users_read', filter=Q(users_read=self.scope['user']))) \
|
||||
.order_by('-created_at')[offset:offset + limit].all()
|
||||
await self.send_json({
|
||||
'type': 'fetch_messages',
|
||||
@ -173,7 +174,7 @@ class ChatConsumer(AsyncJsonWebsocketConsumer):
|
||||
'author_id': message.author_id,
|
||||
'author': await message.aget_author_name(),
|
||||
'content': message.content,
|
||||
'read': message.read,
|
||||
'read': message.read > 0,
|
||||
}
|
||||
async for message in messages
|
||||
]))
|
||||
@ -239,7 +240,6 @@ class ChatConsumer(AsyncJsonWebsocketConsumer):
|
||||
'content': message['content']})
|
||||
|
||||
async def chat_edit_message(self, message) -> None:
|
||||
print(message)
|
||||
await self.send_json({'type': 'edit_message', 'id': message['id'], 'channel_id': message['channel_id'],
|
||||
'content': message['content']})
|
||||
|
||||
|
@ -157,6 +157,7 @@ function fetchPreviousMessages() {
|
||||
}
|
||||
|
||||
function receiveFetchedMessages(data) {
|
||||
console.log(data)
|
||||
let channel_id = data['channel_id']
|
||||
let new_messages = data['messages']
|
||||
|
||||
@ -189,7 +190,6 @@ function updateUnreadBadges(unreadMessages) {
|
||||
|
||||
for (let channel of Object.values(channels)) {
|
||||
let unreadMessagesChannel = unreadMessages[channel['id']] || 0
|
||||
console.log(channel, unreadMessagesChannel)
|
||||
channel.unread_messages = unreadMessagesChannel
|
||||
|
||||
let unreadBadge = document.getElementById(`unread-messages-${channel['id']}`)
|
||||
|
@ -391,7 +391,7 @@ class TeamAuthorizationsView(LoginRequiredMixin, View):
|
||||
tournament = Tournament.objects.get(pk=kwargs["tournament_id"])
|
||||
|
||||
if user.registration.is_admin or user.registration.is_volunteer \
|
||||
and (user.registration in tournament.organizers
|
||||
and (user.registration in tournament.organizers.all()
|
||||
or (team is not None and team.participation.final
|
||||
and user.registration in Tournament.final_tournament().organizers)):
|
||||
return super().dispatch(request, *args, **kwargs)
|
||||
|
Loading…
x
Reference in New Issue
Block a user