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: