Exemple #1
0
def contact(request):
    recipients = getattr(settings, 'CONTACT_FORM_RECIPIENTS',
                         settings.MANAGERS)
    if request.method == 'POST':
        form = ContactForm(request.POST)
        if form.is_valid():
            cd = form.cleaned_data
            send_mail(
                cd['subject'],
                cd['message'],
                cd.get('email', cd['email']),
                [
                    i[1] for i in recipients
                ],  # send to managers as defined in project's settings.py file
            )
            return HttpResponseRedirect(reverse('success'))
    else:
        form = ContactForm(
            #initial={'subject': 'Message from the contact form.'} # prepopulates the subject line
        )

    if request.is_ajax():
        return render_to_response('contact/form.html', {'form': form},
                                  context_instance=RequestContext(request))
    else:
        return render_to_response('contact/contact_form.html', {'form': form},
                                  context_instance=RequestContext(request))
    def test_no_sites(self):
        """
        Sites integration works with or without installed
        contrib.sites.

        """
        with self.modify_settings(INSTALLED_APPS={"remove": ["django.contrib.sites"]}):
            form = ContactForm(request=self.request(), data=self.valid_data)
            self.assertTrue(form.is_valid())

            form.save()
            self.assertEqual(1, len(mail.outbox))
    def test_send(self):
        """
        Valid form can and does in fact send email.

        """
        form = ContactForm(request=self.request(), data=self.valid_data)
        self.assertTrue(form.is_valid())

        form.save()
        self.assertEqual(1, len(mail.outbox))

        message = mail.outbox[0]
        self.assertTrue(self.valid_data["body"] in message.body)
        self.assertEqual(settings.DEFAULT_FROM_EMAIL, message.from_email)
        self.assertEqual(form.recipient_list, message.recipients())
    def test_recipient_list(self):
        """
        Passing recipient_list when instantiating ContactForm properly
        overrides the list of recipients.

        """
        recipient_list = ["*****@*****.**"]
        form = ContactForm(
            request=self.request(), data=self.valid_data, recipient_list=recipient_list
        )
        self.assertTrue(form.is_valid())

        form.save()
        self.assertEqual(1, len(mail.outbox))

        message = mail.outbox[0]
        self.assertEqual(recipient_list, message.recipients())
    def test_valid_data_required(self):
        """
        Can't try to build the message dict unless data is valid.

        """
        data = {"name": "Test", "body": "Test message"}
        form = ContactForm(request=self.request(), data=data)
        self.assertRaises(ValueError, form.get_message_dict)
        self.assertRaises(ValueError, form.get_message_context)
def contact(request):
    recipients = getattr(settings, "CONTACT_FORM_RECIPIENTS", settings.MANAGERS)
    if request.method == "POST":
        form = ContactForm(request.POST)
        if form.is_valid():
            cd = form.cleaned_data
            send_mail(
                "Message from your Django Contact Form",  # Email Subject
                cd["message"],
                cd.get("email", cd["email"]),  # Email From
                [i[1] for i in recipients],
            )
            return HttpResponseRedirect(reverse("success"))
    else:
        form = ContactForm()

    if request.is_ajax():
        return render_to_response("contact/form.html", {"form": form}, context_instance=RequestContext(request))
    else:
        return render_to_response("contact/contact_form.html", {"form": form}, context_instance=RequestContext(request))
def contact(request):
    recipients = getattr(settings, 'CONTACT_FORM_RECIPIENTS', settings.MANAGERS)
    if request.method == 'POST':
        form = ContactForm(request.POST)
        if form.is_valid():
            cd = form.cleaned_data
            send_mail(
                cd['subject'],
                cd['message'],
                cd.get('email', cd['email']),
                [i[1] for i in recipients], # send to managers as defined in project's settings.py file
            )
            return HttpResponseRedirect(reverse('success'))
    else:
        form = ContactForm(
            #initial={'subject': 'Message from the contact form.'} # prepopulates the subject line
        )

    if request.is_ajax():
        return render_to_response('contact/form.html', {'form': form}, 
                                  context_instance=RequestContext(request))
    else:
        return render_to_response('contact/contact_form.html', {'form': form}, 
                                  context_instance=RequestContext(request))
    def test_send(self):
        """
        Valid data through the view results in a successful send.

        """
        contact_url = reverse("django_contact_form")
        data = {
            "name": "Test",
            "email": "*****@*****.**",
            "body": "Test message"
        }

        response = self.client.post(contact_url, data=data)

        self.assertRedirects(response, reverse("django_contact_form_sent"))

        self.assertEqual(1, len(mail.outbox))

        message = mail.outbox[0]
        self.assertTrue(data["body"] in message.body)
        self.assertEqual(settings.DEFAULT_FROM_EMAIL, message.from_email)
        form = ContactForm(request=RequestFactory().request)
        self.assertEqual(form.recipient_list, message.recipients())