0.12.24 timezone in chat messages

This commit is contained in:
SDE
2024-02-09 20:33:04 +03:00
parent a3ba6bc783
commit 3971a8ee23
10 changed files with 56 additions and 17 deletions

View File

@@ -1,5 +1,19 @@
from django.template.loader import render_to_string from django.template.loader import render_to_string
def get_user_timezone_Dict(user, request=None):
tz = None
if request:
tz = request.COOKIES.get("user_tz")
if not tz and user.is_authenticated:
tz = user.user_profile.get_timezone()
if not tz:
from django.conf import settings
tz = settings.TIME_ZONE
return {'user_tz': tz}
def get_dashboard_page_content_html(request): def get_dashboard_page_content_html(request):
from ChatServiceApp.funcs import get_unanswered_msgs_count_for_user from ChatServiceApp.funcs import get_unanswered_msgs_count_for_user

View File

@@ -232,6 +232,7 @@ def chats_ajax(request):
'receivers': receivers, 'receivers': receivers,
# 'messages': cur_chat_msgs # 'messages': cur_chat_msgs
} }
Dict.update(get_user_timezone_Dict(request.user, request=request))
html = render_to_string('blocks/profile/b_chats.html', Dict, request=request) html = render_to_string('blocks/profile/b_chats.html', Dict, request=request)
return JsonResponse({'html': html}, status=200) return JsonResponse({'html': html}, status=200)

View File

@@ -53,6 +53,12 @@ class UserProfile(BaseModel):
mailing_on = models.BooleanField(default=False, verbose_name=_('Рассылка')) mailing_on = models.BooleanField(default=False, verbose_name=_('Рассылка'))
def get_timezone(self):
tz = None
if 'user_timezone' in self.json_data:
tz = self.json_data['user_timezone']
return tz
def save_user_alerts_to_session(self, request): def save_user_alerts_to_session(self, request):
for_save_to_session = self.get_node_by_name('for_save_to_session') for_save_to_session = self.get_node_by_name('for_save_to_session')
if for_save_to_session: if for_save_to_session:

View File

@@ -13,7 +13,7 @@ from django.urls import reverse
import json import json
from datetime import datetime, time from datetime import datetime, time
from django.conf import settings from django.conf import settings
from AuthApp.funcs import get_user_timezone_Dict
def get_unanswered_msgs_count_for_user(user): def get_unanswered_msgs_count_for_user(user):
@@ -56,7 +56,6 @@ def get_update_chat_Dict(data):
if data['sender'] == data['cur_user']: if data['sender'] == data['cur_user']:
user = copy.copy(sender) user = copy.copy(sender)
cur_receiver = copy.copy(receiver) cur_receiver = copy.copy(receiver)
# context_Dict.update({'user': sender})
else: else:
user = copy.copy(receiver) user = copy.copy(receiver)
cur_receiver = copy.copy(sender) cur_receiver = copy.copy(sender)
@@ -65,8 +64,9 @@ def get_update_chat_Dict(data):
# context_Dict.update({'cur_receiver': receiver}) # context_Dict.update({'cur_receiver': receiver})
context_Dict.update({ context_Dict.update({
'cur_receiver': cur_receiver, 'cur_receiver': cur_receiver,
'user': user 'user': user,
}) })
context_Dict.update(get_user_timezone_Dict(user))
if sender == receiver: if sender == receiver:
print('!') print('!')
@@ -112,7 +112,7 @@ def get_update_chat_Dict(data):
context_Dict.update({ context_Dict.update({
'messages': msgs, 'messages': msgs,
'MEDIA_URL': settings.MEDIA_URL 'MEDIA_URL': settings.MEDIA_URL,
}) })
html = render_to_string(tpl_name, context_Dict) html = render_to_string(tpl_name, context_Dict)
if required_full_support_chat_html: if required_full_support_chat_html:
@@ -288,10 +288,7 @@ def send_msg(data):
def get_chat_page_content_html(request, receiver_id=None): def get_chat_page_content_html(request, receiver_id=None):
from AuthApp.models import User from AuthApp.models import User
from django.utils import timezone from AuthApp.funcs import get_user_timezone_Dict
msg = f'now {timezone.now()}'
print(msg)
msgs = [] msgs = []
try: try:
@@ -311,6 +308,7 @@ def get_chat_page_content_html(request, receiver_id=None):
'receivers': receivers, 'receivers': receivers,
'page': 'chat', 'page': 'chat',
} }
Dict.update(get_user_timezone_Dict(request.user, request=request))
tpl_name = 'blocks/profile/b_chats.html' tpl_name = 'blocks/profile/b_chats.html'
html = render_to_string(tpl_name, Dict, request=request) html = render_to_string(tpl_name, Dict, request=request)

View File

@@ -53,6 +53,7 @@ def show_chat_w_user_ajax(request):
data = json.loads(request.body) data = json.loads(request.body)
Dict = get_chat_page_content_Dict(request, data['user_id']) Dict = get_chat_page_content_Dict(request, data['user_id'])
Dict.update(get_user_timezone_Dict(request.user, request=request))
tpl_name = 'blocks/profile/b_chats.html' tpl_name = 'blocks/profile/b_chats.html'
@@ -99,7 +100,7 @@ def update_chat_ajax2(request):
receiver = User.objects.get(id=data['receiver']) receiver = User.objects.get(id=data['receiver'])
context_Dict.update({'cur_receiver': receiver}) context_Dict.update({'cur_receiver': receiver})
context_Dict.update(get_user_timezone_Dict(request.user, request=request))
if not ticket: if not ticket:
@@ -190,6 +191,7 @@ def update_chat_ajax(request):
receiver = User.objects.get(id=data['receiver']) receiver = User.objects.get(id=data['receiver'])
context_Dict.update({'cur_receiver': receiver}) context_Dict.update({'cur_receiver': receiver})
context_Dict.update(get_user_timezone_Dict(request.user, request=request))
if ticket: if ticket:

View File

@@ -9,6 +9,11 @@ class TimezoneMiddleware:
def __call__(self, request): def __call__(self, request):
tz = request.COOKIES.get("user_tz") tz = request.COOKIES.get("user_tz")
if tz: if tz:
if request.user.is_authenticated:
if not 'user_timezone' in request.user.user_profile.json_data or request.user.user_profile.json_data['user_timezone'] != tz:
request.user.user_profile.json_data['user_timezone'] = tz
request.user.user_profile.save(update_fields=['json_data'])
msg = f'user={str(request.user.id)} tz={str(tz)}' msg = f'user={str(request.user.id)} tz={str(tz)}'
print(msg) print(msg)
timezone.activate(zoneinfo.ZoneInfo(tz)) timezone.activate(zoneinfo.ZoneInfo(tz))

View File

@@ -1,5 +1,5 @@
{% load static %} {% load static %}
{% load tz %}
{#{% include "widgets/w_file.html" %}#} {#{% include "widgets/w_file.html" %}#}
{% if not messages and ticket %} {% if not messages and ticket %}
@@ -8,7 +8,9 @@
{% for msg in messages %} {% for msg in messages %}
{% include "widgets/w_message.html" %} {% include "widgets/w_message.html" %}
{% if forloop.first %} {% if forloop.first %}
{% timezone user_tz %}
<span style="display: none" class="date_n_time_last_message" data-modifiedDT="{{ msg.modifiedDT|date:"d.m.Y H:i:s:u" }}"></span> <span style="display: none" class="date_n_time_last_message" data-modifiedDT="{{ msg.modifiedDT|date:"d.m.Y H:i:s:u" }}"></span>
{% endtimezone %}
{% endif %} {% endif %}
{% endfor %} {% endfor %}
{% endif %} {% endif %}

View File

@@ -1,5 +1,6 @@
{% load static %} {% load static %}
{% load tt_chat %} {% load tt_chat %}
{% load tz %}
<div style="width: 100%;"> <div style="width: 100%;">
<div class="container-message_support_chat {% get_msg_side user ticket msg %}"> <div class="container-message_support_chat {% get_msg_side user ticket msg %}">
@@ -20,7 +21,9 @@
</div> </div>
</div> </div>
<div class="data_send_message {% get_msg_side user ticket msg %}"> <div class="data_send_message {% get_msg_side user ticket msg %}">
{% timezone user_tz %}
<span>{% if msg %}{{ msg.modifiedDT }}{% else %}{{ ticket.modifiedDT }}{% endif %}</span> <span>{% if msg %}{{ msg.modifiedDT }}{% else %}{{ ticket.modifiedDT }}{% endif %}</span>
{% endtimezone %}
</div> </div>
</div> </div>
</div> </div>

View File

@@ -36,7 +36,11 @@
{% endif %} {% endif %}
</div> </div>
<div class="data_send_message {% get_msg_side user ticket msg %}"> <div class="data_send_message {% get_msg_side user ticket msg %}">
<span>{% if msg %}{{ msg.modifiedDT|localtime }}{% else %}{{ ticket.modifiedDT|localtime }}{% endif %}</span> {% timezone user_tz %}
<span>
{% if msg %}{{ msg.modifiedDT|localtime }}{% else %}{{ ticket.modifiedDT|localtime }}{% endif %}
</span>
{% endtimezone %}
</div> </div>
</div> </div>
</div> </div>

View File

@@ -1,5 +1,8 @@
{% load static %} {% load static %}
{% load i18n %} {% load i18n %}
{% load tz %}
<div class="container-message-req-sprt" onclick="openTicket({{ ticket.id }})"> <div class="container-message-req-sprt" onclick="openTicket({{ ticket.id }})">
<div class="message-sprt-inf"> <div class="message-sprt-inf">
<div> <div>
@@ -10,8 +13,9 @@
{# <img>#} {# <img>#}
<span id="modified_date"> <span id="modified_date">
{# 10.02.2023#} {# 10.02.2023#}
{% timezone user_tz %}
{{ ticket.modifiedDT|date:"d.m.Y" }} {{ ticket.modifiedDT|date:"d.m.Y" }}
{% endtimezone %}
</span> </span>
</div> </div>