annotate contact/forms.py @ 819:38db6ec61af3

Contact form can prepopulate subject field now. Also updated code for PEP-8 and added tests.
author Brian Neal <bgneal@gmail.com>
date Sat, 20 Sep 2014 14:05:52 -0500
parents ee87ea74d46b
children 79a71b9d0a2a
rev   line source
gremmie@1 1 """forms for the contact application"""
gremmie@1 2
gremmie@1 3 from django import forms
gremmie@1 4 from django.conf import settings
gremmie@1 5 from django.template.loader import render_to_string
gremmie@1 6 from django.contrib.sites.models import Site
gremmie@1 7 from core.functions import send_mail
gremmie@1 8
gremmie@1 9
gremmie@1 10 class ContactForm(forms.Form):
bgneal@819 11 """Form used to contact the website admins"""
bgneal@819 12 name=forms.CharField(label="Your Name", max_length=61,
bgneal@819 13 widget=forms.TextInput(attrs={'size': 50 }))
bgneal@819 14 email=forms.EmailField(label="Your Email",
bgneal@819 15 widget=forms.TextInput(attrs={'size': 50 }))
bgneal@819 16 subject=forms.CharField(max_length=64,
bgneal@819 17 widget=forms.TextInput(attrs={'size': 50 }))
bgneal@819 18 honeypot=forms.CharField(max_length=64, required=False,
bgneal@819 19 label='If you enter anything in this field your message will be treated as spam')
bgneal@819 20 message=forms.CharField(label="Your Message",
bgneal@819 21 widget=forms.Textarea(attrs={'rows': 16, 'cols': 50}),
bgneal@819 22 max_length=3000)
gremmie@1 23
bgneal@819 24 recipient_list = [mail_tuple[1] for mail_tuple in settings.MANAGERS]
gremmie@1 25
bgneal@819 26 def clean_honeypot(self):
bgneal@819 27 value = self.cleaned_data['honeypot']
bgneal@819 28 if value:
bgneal@819 29 raise forms.ValidationError(self.fields['honeypot'].label)
bgneal@819 30 return value
gremmie@1 31
bgneal@819 32 def save(self):
bgneal@819 33 # Send the feedback message email
gremmie@1 34
bgneal@819 35 site = Site.objects.get_current()
gremmie@1 36
bgneal@819 37 msg = render_to_string('contact/contact_email.txt', {
bgneal@819 38 'site_name': site.name,
bgneal@819 39 'user_name': self.cleaned_data['name'],
bgneal@819 40 'user_email': self.cleaned_data['email'],
bgneal@819 41 'message': self.cleaned_data['message'],
bgneal@819 42 })
gremmie@1 43
bgneal@819 44 subject = site.name + ' Feedback: ' + self.cleaned_data['subject']
bgneal@819 45 send_mail(subject, msg, self.cleaned_data['email'], self.recipient_list)