You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
2.1 KiB
65 lines
2.1 KiB
# -*- coding: utf-8 -*-
|
|
import json
|
|
|
|
from django.shortcuts import get_object_or_404
|
|
from django.http import HttpResponseBadRequest, HttpResponse
|
|
from django.views.decorators.http import require_POST, require_GET
|
|
from django.views.decorators.csrf import csrf_protect
|
|
from django.template.loader import render_to_string
|
|
from django.core.mail import send_mail
|
|
from django.conf import settings
|
|
|
|
from .models import ReqAvail
|
|
from .forms import ReqAvailForm
|
|
|
|
|
|
CALLBACK_SETTINGS = getattr(settings, 'CALLBACK_SETTINGS')
|
|
|
|
|
|
@require_POST
|
|
@csrf_protect
|
|
def req_avail(request, id=None):
|
|
"""Отправить сообщение или обработать запрос наличия товара на складе - AJAX."""
|
|
if not request.is_ajax():
|
|
return HttpResponseBadRequest()
|
|
|
|
if id:
|
|
good = get_object_or_404(CatalogItem, pk=id)
|
|
else:
|
|
good = None
|
|
|
|
form = ReqAvailForm(data=request.POST)
|
|
|
|
if form.is_valid():
|
|
if request.user.is_authenticated():
|
|
user = request.user
|
|
else:
|
|
user = None
|
|
|
|
req = ReqAvail.objects.create(
|
|
name=form.cleaned_data['name'].strip(),
|
|
phone=form.cleaned_data['phone'].strip(),
|
|
user=user,
|
|
#good=good,
|
|
)
|
|
|
|
# отправить письма менеджерам
|
|
subject = CALLBACK_SETTINGS['NEW_REQ_AVAIL_EMAIL_SUBJ']
|
|
sender = CALLBACK_SETTINGS['EMAIL_SENDER']
|
|
recipients = CALLBACK_SETTINGS['MANAGERS_EMAILS']
|
|
message = render_to_string('callback/req_avail_new.txt', {'req': req, })
|
|
send_mail(subject, message, sender, recipients)
|
|
|
|
data = {
|
|
'success': form.is_valid(),
|
|
# 'field_errors': form.errors, # ошибки полей
|
|
'form_errors': form.non_field_errors(), # ошибки формы
|
|
}
|
|
|
|
if form.is_valid():
|
|
data['message'] = {
|
|
'title': u'Сообщение',
|
|
'msg': u'Ваша Сообщение отправлено!<br />Скоро с Вами свяжется наш менеджер.',
|
|
}
|
|
|
|
return HttpResponse(json.dumps(data), mimetype='application/json')
|
|
|