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

# -*- 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')