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