from django.shortcuts import render from uuid import uuid1 from .models import * from django.contrib import auth from django.http import HttpResponse, Http404, JsonResponse from django.template import loader, RequestContext from django.contrib.auth.decorators import login_required from BaseModels.mailSender import techSendMail from django.utils.translation import gettext as _ from datetime import datetime from django.template.loader import render_to_string from django.urls import reverse from .funcs import * import json @login_required(login_url='/profile/login/') def show_chat_w_user_ajax(request): if request.method != 'POST': raise Http404 try: data = json.loads(request.body) from AuthApp.models import User cur_receiver = User.objects.get(id=data['user_id']) Dict = { 'cur_receiver': cur_receiver, 'messages': get_msgs_for_chat_w_users(request.user, cur_receiver), } tpl_name = 'blocks/profile/b_chats.html' html = render_to_string(tpl_name, Dict, request=request) return JsonResponse({'html': html}, status=200) except Exception as e: msg = f'show_chat_w_user_ajax Error = {str(e)}' return JsonResponse({'error': msg}, status=400) @login_required(login_url='/profile/login/') def send_msg_ajax(request): from AuthApp.models import User if request.method != 'POST': raise Http404 res_Dict = {} try: data = json.loads(request.body) ticket = None tpl_name = 'blocks/profile/b_messages_container.html' if data['text']: if 'ticket_id' in data: ticket = MsgGroup.objects.get(id=data['ticket_id']) sender = User.objects.get(id=data['sender']) receiver = User.objects.get(id=data['receiver']) # если только что манагер присоединился к тикету if ticket: if not ticket.manager: if sender.is_staff: ticket.manager = sender else: ticket.manager = receiver ticket.save() kwargs = { 'sender': ticket.owner, 'receiver': ticket.manager, 'text': data['text'], } kwargs.update({'group': ticket}) msg = Message.objects.create(**kwargs) Message.objects.filter(id=msg.id).update(modifiedDT=ticket.createDT, createDT=ticket.createDT) res_Dict.update({ 'ticket': ticket, 'cur_receiver': receiver, 'messages': get_messages_for_ticket(ticket), 'text': data['text'], 'modifiedDT': msg.modifiedDT }) res_Dict.update(get_ticketsDict_for_staff(request.user)) # tpl_name = 'blocks/profile/b_support_chat.html' else: kwargs = { 'sender': sender, 'receiver': receiver, 'text': data['text'] } msg = Message.objects.create(**kwargs) receivers = get_chat_receivers_for_user(request.user) msgs = get_msgs_for_chat_w_users(sender, receiver) res_Dict.update({ 'messages': msgs, 'cur_receiver': receiver, 'receivers': receivers, 'text': data['text'], 'modifiedDT': msgs[0].modifiedDT }) html = render_to_string(tpl_name, res_Dict, request=request) return JsonResponse({'html': html}, status=200) except Exception as e: msg = f'send_msg_ajax Error = {str(e)}' return JsonResponse({'error': msg}, status=400) @login_required(login_url='/profile/login/') def support_show_chat_by_ticket_ajax(request): if request.method != 'POST': raise Http404 try: data = json.loads(request.body) ticket = MsgGroup.objects.get(id=data['ticket_id']) Dict = { 'ticket': ticket, 'messages': get_messages_for_ticket(ticket), } Dict.update(get_ticketsDict_for_staff(request.user)) tpl_name = 'blocks/profile/b_support_chat.html' html = render_to_string(tpl_name, Dict, request=request) return JsonResponse({'html': html}, status=200) except Exception as e: msg = f'support_show_chat_by_ticket_ajax Error = {str(e)}' return JsonResponse({'error': msg}, status=400) @login_required(login_url='/profile/login/') def support_create_ticket_form_ajax(request): from ChatServiceApp.forms import TicketForm if request.method != 'POST': raise Http404 Dict = { 'form': TicketForm() } tpl_name = 'blocks/profile/b_create_ticket.html' html = render_to_string(tpl_name, Dict, request=request) return JsonResponse({'html': html}, status=200) @login_required(login_url='/profile/login/') def create_ticket_ajax(request): from ChatServiceApp.forms import TicketForm if request.method != 'POST': raise Http404 try: data = request.POST form = TicketForm(data) if not form.is_valid(): form.initial = form.cleaned_data Dict = {'form': form} html = render_to_string('blocks/profile/b_create_ticket.html', Dict, request=request) return JsonResponse({'html': html}, status=400) ticket = form.save(commit=False) ticket.owner = request.user ticket.enable = True ticket.save() Dict = { 'ticket': ticket, 'messages': get_messages_for_ticket(ticket) } html = render_to_string('blocks/profile/b_support_chat.html', Dict, request=request) res_Dict = { 'html': html } return JsonResponse(res_Dict) except Exception as e: errors_Dict = { 'errors': { 'all__': f'ошибка в запросе = {str(e)}' } } Dict = {'form': errors_Dict} html = render_to_string('blocks/profile/b_create_ticket.html', Dict, request=request) return JsonResponse({'html': html}, status=400)