diff --git a/AuthApp/funcs.py b/AuthApp/funcs.py new file mode 100644 index 0000000..139597f --- /dev/null +++ b/AuthApp/funcs.py @@ -0,0 +1,2 @@ + + diff --git a/AuthApp/middleware.py b/AuthApp/middleware.py new file mode 100644 index 0000000..9ae529b --- /dev/null +++ b/AuthApp/middleware.py @@ -0,0 +1,29 @@ +import json + +from django.http import HttpResponse +from django.utils.deprecation import MiddlewareMixin + +class ResponseInterceptionMiddleware: + # def __init__(self, get_response): + # self.get_response = get_response + # + # def __call__(self, request): + # return self.get_response(request) + # def process_request(self, request): + def __init__(self, get_response): + self.get_response = get_response + # One-time configuration and initialization. + + def __call__(self, request): + # Code to be executed for each request before + # the view (and later middleware) are called. + + if request.user.is_authenticated: + request = request.user.user_profile.save_user_alerts_to_session(request) + + response = self.get_response(request) + + # Code to be executed for each request/response after + # the view is called. + + return response \ No newline at end of file diff --git a/AuthApp/models.py b/AuthApp/models.py index 67b4e1e..0b9a8d8 100644 --- a/AuthApp/models.py +++ b/AuthApp/models.py @@ -1,5 +1,8 @@ # coding=utf-8 from __future__ import unicode_literals + +import json + from django.contrib.auth.models import User from django.db import models from django.utils.translation import gettext_lazy as _ @@ -48,6 +51,13 @@ class UserProfile(BaseModel): on_delete=models.SET_NULL ) + def save_user_alerts_to_session(self, request): + for_save_to_session = self.pop_node_by_name('for_save_to_session') + if for_save_to_session: + for key, val in for_save_to_session.items(): + request.session[key] = json.dumps(val) + return request + def __str__(self): if self.user: diff --git a/BaseModels/base_models.py b/BaseModels/base_models.py index 15f9475..3da4d34 100644 --- a/BaseModels/base_models.py +++ b/BaseModels/base_models.py @@ -34,6 +34,17 @@ class BaseModel(models.Model): else: return str(self.id) + def pop_node_by_name(self, node_name): + if not self.json_data or not node_name in self.json_data: + return None + + res = self.json_data[node_name] + del self.json_data[node_name] + self.save(update_fields=['json_data']) + + return res + + def get_node_by_name(self, node_name): if not self.json_data or not node_name in self.json_data: return None diff --git a/ChatServiceApp/js_views.py b/ChatServiceApp/js_views.py index cf9ec08..51fd327 100644 --- a/ChatServiceApp/js_views.py +++ b/ChatServiceApp/js_views.py @@ -102,9 +102,12 @@ def update_chat_ajax(request): }) html = render_to_string(tpl_name, res_Dict, request=request) + res_Dict.update({'receivers': get_chat_receivers_for_user(request.user)}) + users_list_html = render_to_string('blocks/profile/b_list_of_users_messenger.html', res_Dict, request=request) Dict.update({ 'html': html, + 'users_list_html': users_list_html, 'required_beep': True, }) return JsonResponse(Dict, status=200) @@ -185,6 +188,16 @@ def send_msg_ajax(request): 'text': data['text'] }) + session_data = { + 'for_save_to_session':{ + 'user_alerts':{ + 'new_message': True + } + } + } + + receiver.user_profile.add_node_to_json_data(session_data, save=True) + msg = Message.objects.create(**msg_create_kwargs) if ticket: diff --git a/TWB/settings.py b/TWB/settings.py index 7c546b3..c19d7f1 100644 --- a/TWB/settings.py +++ b/TWB/settings.py @@ -60,6 +60,7 @@ MIDDLEWARE = [ 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', + 'AuthApp.middleware.ResponseInterceptionMiddleware', ] ROOT_URLCONF = 'TWB.urls' diff --git a/templates/blocks/profile/b_list_of_users_messenger.html b/templates/blocks/profile/b_list_of_users_messenger.html index 44b7b71..83ca9b5 100644 --- a/templates/blocks/profile/b_list_of_users_messenger.html +++ b/templates/blocks/profile/b_list_of_users_messenger.html @@ -3,6 +3,6 @@ Чаты:
{% for item in receivers %} - {% include "widgets/w_chat_right_panel_users.html" %} + {% include "widgets/w_chat_right_panel_user.html" %} {% endfor %}
diff --git a/templates/widgets/w_chat_right_panel_users.html b/templates/widgets/w_chat_right_panel_user.html similarity index 100% rename from templates/widgets/w_chat_right_panel_users.html rename to templates/widgets/w_chat_right_panel_user.html