gremmie@1: """forms for the contact application"""
gremmie@1: 
gremmie@1: from django import forms
gremmie@1: from django.conf import settings
gremmie@1: from django.template.loader import render_to_string
gremmie@1: from django.contrib.sites.models import Site
gremmie@1: from core.functions import send_mail
gremmie@1: 
gremmie@1: 
gremmie@1: class ContactForm(forms.Form):
gremmie@1:    """Form used to contact the website admins"""
gremmie@1:    name = forms.CharField(label = "Your Name", max_length = 61,
gremmie@1:          widget = forms.TextInput(attrs = {'size' : 50 }))
gremmie@1:    email = forms.EmailField(label = "Your Email",
gremmie@1:          widget = forms.TextInput(attrs = {'size' : 50 }))
gremmie@1:    subject = forms.CharField(max_length = 64,
gremmie@1:          widget = forms.TextInput(attrs = {'size' : 50 }))
gremmie@1:    honeypot = forms.CharField(max_length = 64, required = False,
gremmie@1:          label = 'If you enter anything in this field your message will be treated as spam')
gremmie@1:    message = forms.CharField(label = "Your Message", 
gremmie@1:          widget = forms.Textarea(attrs = {'rows' : 16, 'cols' : 50}), 
gremmie@1:          max_length = 3000)
gremmie@1: 
gremmie@1:    recipient_list = [mail_tuple[1] for mail_tuple in settings.MANAGERS]
gremmie@1: 
gremmie@1:    def clean_honeypot(self):
gremmie@1:       value = self.cleaned_data['honeypot']
gremmie@1:       if value:
gremmie@1:          raise forms.ValidationError(self.fields['honeypot'].label)
gremmie@1:       return value
gremmie@1: 
gremmie@1:    def save(self):
gremmie@1:       # Send the feedback message email
gremmie@1: 
gremmie@1:       site = Site.objects.get_current()
gremmie@1: 
gremmie@1:       msg = render_to_string('contact/contact_email.txt',
gremmie@1:             {
gremmie@1:                'site_name' : site.name,
gremmie@1:                'user_name' : self.cleaned_data['name'],
gremmie@1:                'user_email' : self.cleaned_data['email'],
gremmie@1:                'message' : self.cleaned_data['message'],
gremmie@1:             })
gremmie@1: 
gremmie@1:       subject = site.name + ' Feedback: ' + self.cleaned_data['subject']
gremmie@1:       send_mail(subject, msg, self.cleaned_data['email'], self.recipient_list)
gremmie@1: