annotate contact/forms.py @ 821:71db8076dc3d

Bandmap WIP: geocoding integrated with add form. Add form works. Before submitting the form, client side JS makes a geocode request to Google and populates hidden lat/lon fields with the result. Successfully created a model instance on the server side. Still need to update admin dashboard, admin approval, and give out badges for adding bands to the map. Once that is done, then work on displaying the map with filtering.
author Brian Neal <bgneal@gmail.com>
date Tue, 23 Sep 2014 20:40:31 -0500
parents 38db6ec61af3
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)