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