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 import messages
from django.contrib.messages.views import SuccessMessageMixin from django.contrib.messages.views import SuccessMessageMixin
from django.db import transaction from django.http import HttpResponseRedirect, HttpResponseBadRequest, Http404
from django.urls import reverse_lazy
from django.views.generic import FormView from django.views.generic import FormView
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
@ -14,17 +13,37 @@ logger = logging.getLogger(__name__)
# Create your views here. # Create your views here.
class ContactUsFormView(SuccessMessageMixin, FormView): class ContactUsFormView(SuccessMessageMixin, FormView):
next = None
template_name = None template_name = None
form_class = ContactUsForm form_class = ContactUsForm
http_method_names = ['post'] http_method_names = ('post',)
success_message = _('Request has been sent successfully!') success_message = _('Запрос был успешно отправлен')
error_message = _('Some errors occurred during sending the request. Check the input fields or try latter.') error_message = _('Произошла ошибка во время отправки. Проверьте заполненные поля или попробуйте позже')
def form_valid(self, form): 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): def form_invalid(self, form):
context = self.get_context_data() context = self.get_context_data()
if len(form.errors) > 0: if len(form.errors) > 0:
context['form_show_errors'] = True 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