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 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 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 and not ticket.manager: if sender.is_staff: ticket.manager = sender else: ticket.manager = receiver ticket.save() kwargs = { 'sender': ticket.owner, 'receiver': ticket.manager, 'text': ticket.text, } if ticket: kwargs.update({'group': ticket}) msg = Message.objects.create(**kwargs) Message.objects.filter(id=msg.id).update(modifiedDT=ticket.createDT, createDT=ticket.createDT) # ------------ kwargs = { 'sender': sender, 'receiver': receiver, 'text': data['text'] } if ticket: kwargs.update({'group': ticket}) msg = Message.objects.create(**kwargs) res_Dict.update({ 'ticket': ticket, 'messages': get_messages_for_ticket(ticket) }) res_Dict.update(get_ticketsDict_for_staff(request.user)) tpl_name = 'blocks/profile/b_support_chat.html' 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']) # if request.user.is_staff: if ticket.owner == request.user: cur_user_ticket_side = 'right' else: cur_user_ticket_side = 'left' # else: # if ticket.owner == request.user: # ticket_align_for_cur_user = 'right' # else: # ticket_align_for_cur_user = 'left' Dict = { 'ticket': ticket, 'messages': get_messages_for_ticket(ticket), 'cur_user_ticket_side': cur_user_ticket_side } 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)