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.
 
 
 
 

49 lines
1.8 KiB

import logging
from django.contrib import messages
from django.contrib.messages.views import SuccessMessageMixin
from django.http import HttpResponseRedirect, HttpResponseBadRequest, Http404
from django.views.generic import FormView
from django.utils.translation import ugettext_lazy as _
from .forms import ContactUsForm
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 = _('Запрос был успешно отправлен')
error_message = _('Произошла ошибка во время отправки. Проверьте заполненные поля или попробуйте позже')
def form_valid(self, 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
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