Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
6c16155
Merge branch 'develop' of https://github.com/Conversation-Exchange/ba…
Aug 4, 2023
d68ae9b
Merge branch 'develop' of https://github.com/Conversation-Exchange/ba…
Aug 4, 2023
fb2bbb0
Merge branch 'develop' of https://github.com/Conversation-Exchange/ba…
Aug 12, 2023
b476ccc
Merge branch 'feat-chats' of https://github.com/Conversation-Exchange…
Aug 13, 2023
ba14069
add blocking_user in model
Aug 14, 2023
9769522
Merge branch 'develop' of https://github.com/Conversation-Exchange/ba…
Aug 19, 2023
6ecda29
Merge branch 'develop' of https://github.com/Conversation-Exchange/ba…
Aug 19, 2023
72f130d
added block user in chat
Aug 20, 2023
a23a358
Merge branch 'develop' of https://github.com/Conversation-Exchange/ba…
Aug 20, 2023
8d0683c
upd message and chat
Aug 20, 2023
322efc4
correct message in block chat
Aug 20, 2023
1c16403
isors
Aug 20, 2023
40495bb
fix flake8
Aug 20, 2023
09e9156
fix flake 8
Aug 20, 2023
a68ed9e
isort fix
Aug 20, 2023
b53d130
upd
Aug 21, 2023
fb3a90f
add creator and upd bloc func
Aug 21, 2023
2810ce5
merge
Aug 23, 2023
2590731
update messages
Aug 23, 2023
846eb61
upd seria
Aug 23, 2023
18ee253
flake8
Aug 23, 2023
301219b
Merge branch 'develop' of https://github.com/Conversation-Exchange/ba…
Aug 24, 2023
ee1847b
upd func send_message
Aug 25, 2023
5c530b8
isort
Aug 25, 2023
0c1467e
modify is_read
Aug 25, 2023
11c9d9f
upd
Aug 26, 2023
94a992f
upd r504
Aug 26, 2023
ead875c
merge
Aug 26, 2023
f9a603a
delete creator
Aug 26, 2023
b39afdb
upd block func
Aug 26, 2023
404da78
upd admin
Aug 26, 2023
6568b7a
redact admin chats
Aug 27, 2023
ec6957a
add WS for block/unblock func
Aug 27, 2023
6386279
add func block in consumer
Aug 27, 2023
8fef9e2
redact admin group members fields
Aug 27, 2023
30df74b
upd group chats
Aug 27, 2023
d8c3754
Merge branch 'develop' of https://github.com/Conversation-Exchange/ba…
Aug 29, 2023
85f522a
more upd report and serializer user repr
Aug 29, 2023
02a8817
fix linter
Aug 29, 2023
1258d59
Merge pull request #68 from Conversation-Exchange/feat-black_list_and…
BU-Marina Aug 29, 2023
5f13da5
fix is_blocked field in UserReprSerializer
BU-Marina Aug 29, 2023
e5b0e83
update logic block in chat
Aug 30, 2023
57dad13
upd validator reports
Aug 31, 2023
d0d471e
update user profile field `country`; update user filters field `country`
BU-Marina Aug 31, 2023
8856851
Merge pull request #19 from Conversation-Exchange/develop
BU-Marina Sep 7, 2023
60519c7
Merge pull request #77 from Conversation-Exchange/feat-black_list_and…
BU-Marina Sep 7, 2023
18ce4de
Merge branch 'develop' into feat-messages
BU-Marina Sep 7, 2023
cdacd8e
Merge pull request #71 from Conversation-Exchange/feat-messages
BU-Marina Sep 7, 2023
702d6c2
Merge branch 'main' into develop
BU-Marina Sep 7, 2023
972cc37
upd model review
Sep 16, 2023
20f377c
upd correct func view blocked user in chats
Sep 16, 2023
48e853c
upd merge
Sep 16, 2023
5909fc3
upd ser and view
Sep 16, 2023
eaba0d1
added reviews
Sep 24, 2023
82a3046
upd reviews
Sep 24, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 18 additions & 2 deletions backend/backend/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,24 @@

DEBUG = os.getenv('DEBUG', default=False)

ALLOWED_HOSTS = os.getenv('ALLOWED_HOSTS', default='localhost,127.0.0.1,').split(',')

ALLOWED_HOSTS = os.getenv(
'ALLOWED_HOSTS', default='localhost,127.0.0.1,').split(',')

LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': 'debug.log',
},
},
'root': {
'handlers': ['file'],
'level': 'DEBUG',
},
}
INSTALLED_APPS = [
"daphne",
'django.contrib.admin',
Expand Down
44 changes: 37 additions & 7 deletions backend/chats/admin.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,45 @@
"""Административные настройки приложения chats."""

from django.contrib import admin
from django.contrib.auth import get_user_model

from .models import Attachment, Chat, GroupChat, Message, PersonalChat

User = get_user_model()

class ChatAdmin(admin.ModelAdmin):
filter_horizontal = ('blocked_users',)

def get_name(self, obj):
return str(obj)

get_name.short_description = 'Имя'

def get_blocked_users(self, obj):
return ", ".join([str(user) for user in obj.blocked_users.all()])

get_blocked_users.short_description = 'Заблокированные участники'

def initiator(self, obj):
return obj.initiator

initiator.short_description = 'Инициатор'
initiator.admin_order_field = 'initiator'


class PersonalChatAdmin(ChatAdmin):
list_display = ('id', 'get_name', 'get_blocked_users',
'initiator', 'receiver', 'date_created')


class GroupChatAdmin(ChatAdmin):
list_display = ('id', 'get_name', 'get_blocked_users',
'initiator', 'display_members', 'date_created')

def display_members(self, obj):
return ", ".join([str(user) for user in obj.members.all()])

display_members.short_description = 'Участники'

admin.site.register(Chat)

admin.site.register(Chat, ChatAdmin)
admin.site.register(Attachment)
admin.site.register(Message)
admin.site.register(PersonalChat)
admin.site.register(GroupChat)
admin.site.register(PersonalChat, PersonalChatAdmin)
admin.site.register(GroupChat, GroupChatAdmin)
22 changes: 22 additions & 0 deletions backend/chats/consumers.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,19 @@ def disconnect(self, close_code):
def receive(self, text_data=None, bytes_data=None):
# parse the json data into dictionary object
text_data_json = json.loads(text_data)
if text_data_json['type'] == 'block_user':
user_slug = text_data_json['user_slug']
blocked = text_data_json['blocked']

# Отправить уведомление о блокировке/разблокировке через WebSocket
async_to_sync(self.channel_layer.group_send)(
self.room_group_name,
{
'type': 'block_user_notification',
'user_slug': user_slug,
'blocked': blocked,
}
)

# Send message to room group
chat_type = {"type": "chat_message"}
Expand Down Expand Up @@ -90,3 +103,12 @@ def chat_message(self, event):
serializer.data
)
)

def block_user_notification(self, event):
user_slug = event['user_slug']
blocked = event['blocked']
self.send(text_data=json.dumps({
'type': 'block_user',
'user_slug': user_slug,
'blocked': blocked
}))
35 changes: 35 additions & 0 deletions backend/chats/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,24 @@ class Chat(DateCreatedModel, DateEditedModel):
null=True,
related_name="chat_starter"
)
blocked_users = models.ManyToManyField(
User,
verbose_name='Заблокированные пользователи',
related_name='bloked_chats',
blank=True,
help_text='Список пользователей, которых вы заблокировали в этом чате.'
)

def block_user(self, user):
if user not in self.blocked_users.all():
self.blocked_users.add(user)

def unblock_user(self, user):
if user in self.blocked_users.all():
self.blocked_users.remove(user)

def is_user_blocked(self, user):
return user in self.blocked_users.all()

objects = InheritanceManager()

Expand Down Expand Up @@ -49,6 +67,10 @@ class Meta:
verbose_name = 'Личный чат'
verbose_name_plural = 'Личные чаты'

def block_user(self, user):
if user not in [self.initiator, self.receiver]:
self.blocked_users.add(user)


class GroupChat(Chat):
"""Модель группового чата."""
Expand Down Expand Up @@ -124,6 +146,19 @@ class Message(DateEditedModel):
verbose_name='Фото для отправки',
help_text='Фото для отправки'
)
voice_message = models.FileField(
upload_to='voice_messages/',
blank=True,
null=True,
verbose_name='Голосовое сообщение',
help_text='Голосовое сообщение'
)
emojis = models.CharField(
max_length=255,
blank=True,
verbose_name='Смайлы',
help_text='Текстовые символы смайлов'
)
responding_to = models.ForeignKey(
'self',
on_delete=models.CASCADE,
Expand Down
Loading