bedrock/press/views.py (69 lines of code) (raw):

# This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at https://mozilla.org/MPL/2.0/. from django.conf import settings from django.core.mail import EmailMessage from django.template.loader import render_to_string from django.utils.decorators import method_decorator from django.views.decorators.csrf import csrf_protect from django.views.generic.edit import FormView from bedrock.base.urlresolvers import reverse from lib import l10n_utils from .forms import PressInquiryForm, SpeakerRequestForm PRESS_INQUIRY_EMAIL_SUBJECT = "New Press Inquiry" PRESS_INQUIRY_EMAIL_TO = ["press@mozilla.com"] SPEAKER_REQUEST_EMAIL_FROM = PRESS_INQUIRY_EMAIL_FROM = settings.DEFAULT_FROM_EMAIL SPEAKER_REQUEST_EMAIL_SUBJECT = "New speaker request form submission" SPEAKER_REQUEST_EMAIL_TO = ["press@mozilla.com"] class PressInquiryView(FormView): form_class = PressInquiryForm template_name = "press/press-inquiry.html" @method_decorator(csrf_protect) def dispatch(self, request, *args, **kwargs): return super().dispatch(request, *args, **kwargs) def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context["form_success"] = "success" in self.request.GET return context def get_success_url(self): return reverse("press.press-inquiry") + "?success=True" def form_valid(self, form): self.send_email(form) return super().form_valid(form) def send_email(self, form): subject = PRESS_INQUIRY_EMAIL_SUBJECT sender = PRESS_INQUIRY_EMAIL_FROM to = PRESS_INQUIRY_EMAIL_TO msg = render_to_string("press/emails/press-inquiry.txt", form.cleaned_data, request=self.request) email = EmailMessage(subject, msg, sender, to) email.send() def render_to_response(self, context, **response_kwargs): return l10n_utils.render(self.request, self.get_template_names(), context, **response_kwargs) class SpeakerRequestView(FormView): form_class = SpeakerRequestForm template_name = "press/speaker-request.html" @method_decorator(csrf_protect) def dispatch(self, request, *args, **kwargs): return super().dispatch(request, *args, **kwargs) def get_form_kwargs(self): kwargs = super().get_form_kwargs() kwargs["auto_id"] = "%s" return kwargs def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context["form_success"] = "success" in self.request.GET return context def get_success_url(self): return reverse("press.speaker-request") + "?success=True" def form_valid(self, form): self.send_email(form) return super().form_valid(form) def send_email(self, form): subject = SPEAKER_REQUEST_EMAIL_SUBJECT sender = SPEAKER_REQUEST_EMAIL_FROM to = SPEAKER_REQUEST_EMAIL_TO msg = render_to_string("press/emails/speaker-request.txt", form.cleaned_data, request=self.request) email = EmailMessage(subject, msg, sender, to) attachment = form.cleaned_data["sr_attachment"] if attachment: email.attach(attachment.name, attachment.read(), attachment.content_type) email.send() def render_to_response(self, context, **response_kwargs): return l10n_utils.render(self.request, self.get_template_names(), context, **response_kwargs)