diff --git a/AuthApp/js_views.py b/AuthApp/js_views.py index 43a58ea..1824596 100644 --- a/AuthApp/js_views.py +++ b/AuthApp/js_views.py @@ -31,7 +31,7 @@ def chats_ajax(request): from ChatServiceApp.funcs import get_chat_receivers_for_user, get_msgs_for_chat_w_users - receivers = get_chat_receivers_for_user(request.user) + receivers, unread_msgs_count = get_chat_receivers_for_user(request.user) cur_chat_msgs = None diff --git a/ChatServiceApp/funcs.py b/ChatServiceApp/funcs.py index c665e3b..998fec6 100644 --- a/ChatServiceApp/funcs.py +++ b/ChatServiceApp/funcs.py @@ -15,7 +15,7 @@ def get_chat_page_content_Dict(request, receiver_id=None): except User.DoesNotExist: cur_receiver = None - receivers = get_chat_receivers_for_user(request.user) + receivers, unread_msgs_count = get_chat_receivers_for_user(request.user) Dict = { 'cur_receiver': cur_receiver, @@ -35,7 +35,7 @@ def get_msgs_for_chat_w_users(user1, user2): ).order_by('-modifiedDT') return msgs -def get_chat_receivers_for_user(user): +def get_chat_receivers_for_user(user, cur_receiver=None): msgs = Message.objects.filter( Q(sender=user) | Q(receiver=user), group=None @@ -43,6 +43,7 @@ def get_chat_receivers_for_user(user): receivers_list = [] + unread_msgs_count = 0 for msg in msgs: if msg.receiver not in receivers_list and msg.receiver != user: @@ -54,12 +55,13 @@ def get_chat_receivers_for_user(user): receivers_list.append(msg.sender) msg.sender.last_msg = msg.text - if msg.receiver == user: + if msg.receiver == user and (not cur_receiver or msg.sender != cur_receiver): if msg.status == 'sended': i = receivers_list.index(msg.sender) receivers_list[i].unread_msgs_count += 1 + unread_msgs_count += 1 - return receivers_list + return receivers_list, unread_msgs_count # receivers_list.extend((item.sender for item in receivers if item.sender != user)) # receivers_list.extend((item.receiver for item in receivers if item.receiver != user)) diff --git a/ChatServiceApp/js_views.py b/ChatServiceApp/js_views.py index 4cf866f..0df42c3 100644 --- a/ChatServiceApp/js_views.py +++ b/ChatServiceApp/js_views.py @@ -51,6 +51,8 @@ def update_chat_ajax(request): last_message_modifiedDT = None + required_beep = False + try: data = json.loads(request.body) @@ -70,7 +72,7 @@ def update_chat_ajax(request): if 'receiver' in data and data['receiver']: receiver = User.objects.get(id=data['receiver']) - res_Dict.update({'cur_receiver': receiver}) + context_Dict.update({'cur_receiver': receiver}) if ticket: @@ -86,30 +88,39 @@ def update_chat_ajax(request): 'blocks/profile/b_list_of_tickets_support_chat.html', context_Dict, request=request) res_Dict.update({'tickets_list_html': tickets_list_html}) else: - # если есть получатель - получаем сообщения чата - if receiver: - msgs = get_msgs_for_chat_w_users(sender, receiver) - context_Dict.update({'messages': msgs}) - chat_html = render_to_string(tpl_name, context_Dict, request=request) - res_Dict.update({'chat_html': chat_html}) # получаем правую панель с получателями - receivers = get_chat_receivers_for_user(request.user) + receivers, unread_msgs_count = get_chat_receivers_for_user(request.user, receiver) + if unread_msgs_count: + required_beep = True + context_Dict.update({'receivers': receivers}) users_list_html = render_to_string( 'blocks/profile/b_list_of_users_messenger.html', context_Dict, request=request) - res_Dict.update({'users_list_html': users_list_html}) + res_Dict.update({ + 'users_list_html': users_list_html, + 'unread_msgs_count': unread_msgs_count + }) - if not msgs or (request.user != msgs[0].receiver) or (not msgs and not last_message_modifiedDT) or (msgs and last_message_modifiedDT and msgs[0].modifiedDT <= last_message_modifiedDT): - Dict.update({ - 'required_beep': False - }) - return JsonResponse(Dict, status=200) + # если есть получатель - получаем сообщения чата + if receiver: + msgs = get_msgs_for_chat_w_users(sender, receiver) + if msgs and msgs.filter(status='sended'): + context_Dict.update({'messages': msgs}) + chat_html = render_to_string(tpl_name, context_Dict, request=request) + res_Dict.update({'chat_html': chat_html}) + required_beep = True + + # if not msgs or (request.user != msgs[0].receiver) or (not msgs and not last_message_modifiedDT) or (msgs and last_message_modifiedDT and msgs[0].modifiedDT <= last_message_modifiedDT): + # Dict.update({ + # 'required_beep': False + # }) + # return JsonResponse(Dict, status=200) res_Dict.update({ - 'required_beep': True, + 'required_beep': required_beep, }) return JsonResponse(res_Dict, status=200) @@ -206,7 +217,7 @@ def send_msg_ajax(request): else: msgs = get_msgs_for_chat_w_users(sender, receiver) - receivers = get_chat_receivers_for_user(request.user) + receivers, unread_msgs_count = get_chat_receivers_for_user(request.user) res_Dict.update({ diff --git a/GeneralApp/views.py b/GeneralApp/views.py index 6b847a5..93b2e65 100644 --- a/GeneralApp/views.py +++ b/GeneralApp/views.py @@ -11,9 +11,9 @@ from django.conf import settings def MainPage(request): - from ReferenceDataApp.funcs import parse_data, search_cities_in_db, search_airports_in_db - res = search_airports_in_db('ang') - res = parse_data() + # from ReferenceDataApp.funcs import parse_data, search_cities_in_db, search_airports_in_db + # res = search_airports_in_db('ang') + # res = parse_data() page = StaticPage.objects.get(url='main')