diff --git a/contact_us/views.py b/contact_us/views.py index 03ef225..709f22a 100644 --- a/contact_us/views.py +++ b/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