From 198dac6ad0999f9a368a0f834c8eb7d779d5ed69 Mon Sep 17 00:00:00 2001 From: SDE Date: Fri, 11 Aug 2023 16:50:51 +0300 Subject: [PATCH 1/6] 0.2.18 chat v2 --- AuthApp/js_views.py | 2 +- ChatServiceApp/funcs.py | 10 +++++---- ChatServiceApp/js_views.py | 43 ++++++++++++++++++++++++-------------- GeneralApp/views.py | 6 +++--- 4 files changed, 37 insertions(+), 24 deletions(-) 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') From 0664a89c4d5f680f16eec847ccdb6c6db4563853 Mon Sep 17 00:00:00 2001 From: borissedw Date: Fri, 11 Aug 2023 17:00:25 +0300 Subject: [PATCH 2/6] 0.0.106 --- static/js/check_new_messages.js | 65 +++++++++++++++++++++++---------- static/js/global_js.js | 8 +++- templates/blocks/b_header.html | 2 +- 3 files changed, 53 insertions(+), 22 deletions(-) diff --git a/static/js/check_new_messages.js b/static/js/check_new_messages.js index 0c8e535..1884f1c 100644 --- a/static/js/check_new_messages.js +++ b/static/js/check_new_messages.js @@ -8,11 +8,16 @@ window.onload = function () { // ) function funcFocus(){ - - let inp = document.querySelector(".enter-message-inp") - if (inp !== null){ - inp.focus() + let window = document.querySelector(".container-messages") + if (window !== null){ + let inp = document.querySelector(".enter-message-inp") + if (inp !== null){ + inp.focus() + } + } else{ + check_new_messages_timeout(60000) } + } @@ -54,6 +59,7 @@ function check_new_messages_timeout(timeout_time=1000){ // let user_online = userOnline('set') window = document.querySelector(".container-messages") if (window === null){ + check_new_messages(window,true) // let new_timeout_time = 60000 // // check_new_messages_timeout(new_timeout_time,it_set_func,it_func) @@ -63,7 +69,7 @@ function check_new_messages_timeout(timeout_time=1000){ // it_func++ // check_new_messages_timeout(new_timeout_time,it_set_func,it_func) // } - check_new_messages(window) + check_new_messages(window,false) } }, @@ -75,17 +81,25 @@ function check_new_messages_timeout(timeout_time=1000){ var data_new_messages = null -function check_new_messages (window){ +function check_new_messages (window,only_sender_mode){ // if (it === 0){ - let data_set = document.querySelector(".container-messages").dataset - let sender = data_set['userId']; - let receiver = data_set['curReceiver']; - let ticket_id = data_set['ticketId']; - data_new_messages = { - 'sender': sender, - 'receiver': receiver, - 'ticket_id': ticket_id - // 'last_message_modifiteDT':last_message_time + if (only_sender_mode === false){ + let data_set = document.querySelector(".container-messages").dataset + let sender = data_set['userId']; + let receiver = data_set['curReceiver']; + let ticket_id = data_set['ticketId']; + data_new_messages = { + 'sender': sender, + 'receiver': receiver, + 'ticket_id': ticket_id + // 'last_message_modifiteDT':last_message_time + } + } else { + let profile_data_set = document.querySelector(".button_profile_header").dataset + let sender = profile_data_set['userId'] + data_new_messages = { + 'sender': sender + } } // } // let user_online_check = document.addEventListener("mouseover"); @@ -131,16 +145,23 @@ function success_check_new_messages (data) { if (data.html) { if (data_new_messages['ticket_id'] !== 'null') { if (data.msgs_count > 1) { - document.querySelector(".container-messages").innerHTML = data.html; + if (document.querySelector(".container-messages")){ + document.querySelector(".container-messages").innerHTML = data.html; + } } else { document.querySelector(".info_profile").innerHTML = data.html; } } else { - document.querySelector(".container-messages").innerHTML = data.html; + if (document.querySelector(".container-messages")) { + + document.querySelector(".container-messages").innerHTML = data.html; + } } } if (data.users_list_html){ - document.querySelector(".block-list-of-users").innerHTML = data.users_list_html.html; + if (document.querySelector(".block-list-of-users")) { + document.querySelector(".block-list-of-users").innerHTML = data.users_list_html; + } } } if (data.required_beep === true){ @@ -149,10 +170,14 @@ function success_check_new_messages (data) { } if (data.users_list_html){ - document.querySelector(".block-list-of-users").innerHTML = data.users_list_html + if (document.querySelector(".block-list-of-users")) { + document.querySelector(".block-list-of-users").innerHTML = data.users_list_html + } } if (data.tickets_list_html){ - document.querySelector(".block-list-of-users").innerHTML = data.tickets_list_html + if (document.querySelector(".block-list-of-users")) { + document.querySelector(".block-list-of-users").innerHTML = data.tickets_list_html + } } // let updatedCookie = encodeURIComponent(name_cookie) + "=" + encodeURIComponent(''); // let search_cookie = document.cookie.match("(^|[^;]+)\s*" + name_cookie + "\s*=\s*([^;]+)")[0].substring(1) diff --git a/static/js/global_js.js b/static/js/global_js.js index 1de5624..5311260 100644 --- a/static/js/global_js.js +++ b/static/js/global_js.js @@ -5,7 +5,13 @@ $(document).ready(function (){ function getNewMessageSession(){ let window_messages = document.querySelector(".container-messages") if (window_messages !== null){ - check_new_messages(window) + // check_new_messages(window) + if (check_msg !== null){ + clearInterval(check_msg) + } + check_new_messages_timeout(1000) + } else { + check_new_messages(window_messages,true) } } diff --git a/templates/blocks/b_header.html b/templates/blocks/b_header.html index 7b35d1b..7ad2c98 100644 --- a/templates/blocks/b_header.html +++ b/templates/blocks/b_header.html @@ -10,7 +10,7 @@
Служба поддержки
{% if user.is_authenticated %} - Профиль From 067b7db2f0cdfc47cec78755b2396174ee7654be Mon Sep 17 00:00:00 2001 From: SDE Date: Fri, 11 Aug 2023 17:07:43 +0300 Subject: [PATCH 3/6] 0.2.19 chat v2 --- ChatServiceApp/js_views.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ChatServiceApp/js_views.py b/ChatServiceApp/js_views.py index 0df42c3..fee71bf 100644 --- a/ChatServiceApp/js_views.py +++ b/ChatServiceApp/js_views.py @@ -105,11 +105,13 @@ def update_chat_ajax(request): # если есть получатель - получаем сообщения чата if receiver: msgs = get_msgs_for_chat_w_users(sender, receiver) - if msgs and msgs.filter(status='sended'): + unreaded_msgs = msgs.filter(status='sended') + if msgs and unreaded_msgs: 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 + unreaded_msgs.update(status='seen') # 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({ From 577b85627b0ec4f0b7c995d7e57fde56b39e5e7b Mon Sep 17 00:00:00 2001 From: SDE Date: Fri, 11 Aug 2023 17:40:15 +0300 Subject: [PATCH 4/6] 0.2.20 chat v2 --- ChatServiceApp/js_views.py | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/ChatServiceApp/js_views.py b/ChatServiceApp/js_views.py index fee71bf..93a3440 100644 --- a/ChatServiceApp/js_views.py +++ b/ChatServiceApp/js_views.py @@ -86,21 +86,27 @@ def update_chat_ajax(request): tickets_list_html = render_to_string( 'blocks/profile/b_list_of_tickets_support_chat.html', context_Dict, request=request) - res_Dict.update({'tickets_list_html': tickets_list_html}) + res_Dict.update({ + 'tickets_list_html': tickets_list_html, + 'msgs_count': len(msgs) + }) else: # получаем правую панель с получателями receivers, unread_msgs_count = get_chat_receivers_for_user(request.user, receiver) - if unread_msgs_count: + saved_unread_msgs_count = request.user.user_profile.get_node_by_name('receivers_unread_msgs_count') + if not saved_unread_msgs_count or saved_unread_msgs_count != unread_msgs_count: + request.user.user_profile.add_node_to_json_data({'receivers_unread_msgs_count': unread_msgs_count}, save=True) + # 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, - 'unread_msgs_count': unread_msgs_count - }) + 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, + 'unread_msgs_count': unread_msgs_count + }) # если есть получатель - получаем сообщения чата if receiver: From 2b75e42c4c9c93b631f6bd3bf4e0086b60152a6c Mon Sep 17 00:00:00 2001 From: SDE Date: Fri, 11 Aug 2023 17:43:10 +0300 Subject: [PATCH 5/6] 0.2.21 chat v2 --- ChatServiceApp/js_views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChatServiceApp/js_views.py b/ChatServiceApp/js_views.py index 93a3440..d30badf 100644 --- a/ChatServiceApp/js_views.py +++ b/ChatServiceApp/js_views.py @@ -95,7 +95,7 @@ def update_chat_ajax(request): # получаем правую панель с получателями receivers, unread_msgs_count = get_chat_receivers_for_user(request.user, receiver) saved_unread_msgs_count = request.user.user_profile.get_node_by_name('receivers_unread_msgs_count') - if not saved_unread_msgs_count or saved_unread_msgs_count != unread_msgs_count: + if saved_unread_msgs_count == None or saved_unread_msgs_count != unread_msgs_count: request.user.user_profile.add_node_to_json_data({'receivers_unread_msgs_count': unread_msgs_count}, save=True) # if unread_msgs_count: required_beep = True From 9bfa6dfee6d8bc7c61da962b97cc154d27ec77fe Mon Sep 17 00:00:00 2001 From: borissedw Date: Fri, 11 Aug 2023 17:59:41 +0300 Subject: [PATCH 6/6] 0.0.107 --- static/js/check_new_messages.js | 52 +++++++++++++++++--------------- static/js/global_js.js | 13 +++++--- static/js/user_profile(boris).js | 3 +- 3 files changed, 37 insertions(+), 31 deletions(-) diff --git a/static/js/check_new_messages.js b/static/js/check_new_messages.js index 1884f1c..d8e05b2 100644 --- a/static/js/check_new_messages.js +++ b/static/js/check_new_messages.js @@ -139,46 +139,50 @@ function check_new_messages (window,only_sender_mode){ function success_check_new_messages (data) { + let window = document.querySelector(".container-messages") if (window === null){ clearTimeout(check_msg) } else { - if (data.html) { - if (data_new_messages['ticket_id'] !== 'null') { + if (data !== null) { + if (data_new_messages['ticket_id'] && data_new_messages['ticket_id'] !== "null") { if (data.msgs_count > 1) { - if (document.querySelector(".container-messages")){ + if (document.querySelector(".container-messages")) { document.querySelector(".container-messages").innerHTML = data.html; } + else if (data.tickets_list_html){ + if (document.querySelector(".block-list-of-users")) { + document.querySelector(".block-list-of-users").innerHTML = data.tickets_list_html + } + } + } else { document.querySelector(".info_profile").innerHTML = data.html; } - } else { - if (document.querySelector(".container-messages")) { + } - document.querySelector(".container-messages").innerHTML = data.html; + else if (data.chat_html) { + if (document.querySelector(".container-messages")) { + document.querySelector(".container-messages").innerHTML = data.chat_html; + } + if (data.users_list_html){ + if (document.querySelector(".block-list-of-users")) { + document.querySelector(".block-list-of-users").innerHTML = data.users_list_html; + } } } - } - if (data.users_list_html){ - if (document.querySelector(".block-list-of-users")) { - document.querySelector(".block-list-of-users").innerHTML = data.users_list_html; + + + if (data.required_beep === true){ + const beep = new Audio('/static/sounds/beep_2.mp3') + beep.play() + } + + } - } - if (data.required_beep === true){ - const beep = new Audio('/static/sounds/beep_2.mp3') - beep.play() } - if (data.users_list_html){ - if (document.querySelector(".block-list-of-users")) { - document.querySelector(".block-list-of-users").innerHTML = data.users_list_html - } - } - if (data.tickets_list_html){ - if (document.querySelector(".block-list-of-users")) { - document.querySelector(".block-list-of-users").innerHTML = data.tickets_list_html - } - } + // let updatedCookie = encodeURIComponent(name_cookie) + "=" + encodeURIComponent(''); // let search_cookie = document.cookie.match("(^|[^;]+)\s*" + name_cookie + "\s*=\s*([^;]+)")[0].substring(1) // let search_cookie = getCookieValue('user_alerts') diff --git a/static/js/global_js.js b/static/js/global_js.js index 5311260..b5ae68a 100644 --- a/static/js/global_js.js +++ b/static/js/global_js.js @@ -4,17 +4,20 @@ $(document).ready(function (){ function getNewMessageSession(){ let window_messages = document.querySelector(".container-messages") + let new_timeout_time; if (window_messages !== null){ // check_new_messages(window) - if (check_msg !== null){ - clearInterval(check_msg) - } - check_new_messages_timeout(1000) + new_timeout_time = 1000 } else { - check_new_messages(window_messages,true) + new_timeout_time = 60000 } + if (check_msg !== null){ + clearInterval(check_msg) + } + check_new_messages_timeout(new_timeout_time) } + // var window_messages = document.querySelector(".container-messages") // function getNewMessageSession (){ diff --git a/static/js/user_profile(boris).js b/static/js/user_profile(boris).js index ea740bf..f5e4f3c 100644 --- a/static/js/user_profile(boris).js +++ b/static/js/user_profile(boris).js @@ -201,6 +201,7 @@ function sendMessage(id_ticket=null,sender,receiver){ event.preventDefault() let text = document.querySelector(".enter-message-inp").value + document.querySelector(".enter-message-inp").value = null if (text.length === 0){ // @@ -238,14 +239,12 @@ function sendMessage(id_ticket=null,sender,receiver){ getNewMessageSession() document.querySelector(".container-messages").innerHTML = data.html; - document.querySelector(".enter-message-inp").value = null document.querySelector(".enter-message-inp").focus() }, error: function (data){ document.querySelector(".container-messages").innerHTML = data.responseJSON.error; - document.querySelector(".enter-message-inp").value = null document.querySelector(".enter-message-inp").focus() } });