181 lines
4.6 KiB
Python
181 lines
4.6 KiB
Python
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)
|
|
# ------------
|
|
|
|
kwargs = {
|
|
'sender': sender,
|
|
'receiver': receiver,
|
|
'text': data['text']
|
|
}
|
|
|
|
if ticket:
|
|
kwargs.update({'group': ticket})
|
|
|
|
msg = Message.objects.create(**kwargs)
|
|
|
|
|
|
res_Dict.update({
|
|
'ticket': ticket
|
|
})
|
|
|
|
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)
|
|
|
|
obj = MsgGroup.objects.get(id=data['ticket_id'])
|
|
|
|
Dict = {
|
|
'ticket': obj
|
|
}
|
|
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)
|
|
|
|
obj = form.save(commit=False)
|
|
obj.owner = request.user
|
|
obj.enable = True
|
|
obj.save()
|
|
|
|
Dict = {
|
|
'ticket': obj
|
|
}
|
|
|
|
|
|
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)
|
|
|