reffactor view in contact us app

remotes/origin/HEAD
Max Yakovenko 8 years ago
parent 1124bff435
commit 6a95c93ad8
  1. 33
      contact_us/views.py

@ -2,8 +2,7 @@ import logging
from django.contrib import messages
from django.contrib.messages.views import SuccessMessageMixin
from django.db import transaction
from django.urls import reverse_lazy
from django.http import HttpResponseRedirect, HttpResponseBadRequest, Http404
from django.views.generic import FormView
from django.utils.translation import ugettext_lazy as _
@ -14,17 +13,37 @@ logger = logging.getLogger(__name__)
# Create your views here.
class ContactUsFormView(SuccessMessageMixin, FormView):
next = None
template_name = None
form_class = ContactUsForm
http_method_names = ['post']
success_message = _('Request has been sent successfully!')
error_message = _('Some errors occurred during sending the request. Check the input fields or try latter.')
http_method_names = ('post',)
success_message = _('Запрос был успешно отправлен')
error_message = _('Произошла ошибка во время отправки. Проверьте заполненные поля или попробуйте позже')
def form_valid(self, form):
return super().form_valid(form)
try:
form.save()
form.send_email(self.request)
except Exception as e:
self.form_invalid(form=form)
messages.add_message(self.request,messages.SUCCESS,self.success_message,extra_tags='contact_us_form_message')
return HttpResponseRedirect(self.next)
def form_invalid(self, form):
context = self.get_context_data()
if len(form.errors) > 0:
context['form_show_errors'] = True
return self.render_to_response(context)
messages.add_message(self.request,messages.ERROR,self.error_message,extra_tags='contact_us_form_message')
return HttpResponseRedirect(self.next)
def dispatch(self, request, *args, **kwargs):
if request.POST.get('next',None) is None:
raise Http404()
else:
self.next = request.POST.get('next')
return super().dispatch(request, *args, **kwargs)
def get_form_kwargs(self):
kwargs = super().get_form_kwargs()
kwargs['next'] = self.next
return kwargs

Loading…
Cancel
Save