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
1.8 KiB

# -*- coding: utf-8 -*-
import simplejson as json
import logging
from django.http import HttpResponse, HttpResponseBadRequest
from django.views.decorators.http import require_POST
from django.views.decorators.csrf import csrf_protect
from .forms import FeedbackForm
from .emails import mail_feedback
log = logging.getLogger('feedback')
@require_POST
@csrf_protect
def feedback(request):
if not request.is_ajax():
return HttpResponseBadRequest()
form = FeedbackForm(data=request.POST)
data = None
if form.is_valid():
data = {
'success': form.is_valid(),
'form_errors': '',
'message': {
'title': u'Спасибо!',
'msg': u'Ваше сообщение отправлено.',
}
}
try:
log.info('new message = %s' % form.cleaned_data)
except Exception, e:
log.exception(e)
try:
mail_feedback(form)
except Exception, e:
log.exception(e)
data = {
'success': False,
'form_errors': u'',
'message': {
'title': u'Ошибка!',
'msg': u'Возникли проблемы при отправке. Попробуйте повторить позже.',
}
}
if not data:
form_errors = form.non_field_errors()
if not form_errors:
for k in form.fields.keys():
if form[k].errors:
form_errors = form[k].errors[0] # show only first error
break
data = {
'success': form.is_valid(),
'form_errors': form_errors,
}
return HttpResponse(json.dumps(data), mimetype='application/json')