Generated: Fri 2013-09-13 08:20 CEST
Source file: /home/dkaufhold/projects/bitmazk-contact-form/src/contact_form/forms.py
Stats: 33 executed, 2 missed, 10 excluded, 42 ignored
"""Forms for bitmazk-contact-form application."""import osfrom django import formsfrom django.conf import settingsfrom django.core.mail import send_mailfrom django.template import loaderfrom django.utils.translation import ugettext_lazy as _from .models import ContactFormCategorydef contact_form_category_choices(): return [(cat.slug, cat.name) for cat in ContactFormCategory.objects.all()]class ContactBaseForm(forms.Form): """Base class for contact forms.""" from_email = settings.DEFAULT_FROM_EMAIL recipients = [x[1] for x in settings.CONTACT_FORM_RECIPIENTS] subject_template = 'contact_form/contact_form_subject.txt' body_template = 'contact_form/contact_form.txt' submit_button_value = _('Submit') def save(self): context = {} for info in self.cleaned_data: context.update({info: self.cleaned_data.get(info)}) subject = loader.render_to_string(self.subject_template, context) subject = ''.join(subject.splitlines()) body = loader.render_to_string(self.body_template, context,) send_mail(subject, body, self.from_email, self.recipients, fail_silently=False) self.data = {}class ContactForm(ContactBaseForm): """A typical contact form.""" name = forms.CharField( label=_('Name'), max_length=255, required=False, ) email = forms.EmailField( label=_('Email'), ) message = forms.CharField( max_length=5000, widget=forms.Textarea(attrs=dict(maxlength=5000)), label=_('Message'), ) def __init__(self, *args, **kwargs): super(ContactForm, self).__init__(*args, **kwargs) if getattr(settings, 'ENABLE_CAPTCHA', False): # Only import captcha app, if captchas are used from captcha.fields import CaptchaField self.fields['captcha'] = CaptchaField() if getattr(settings, 'CONTACT_FORM_DISPLAY_CATEGORIES', False): # Only import captcha app, if captchas are used self.fields['category'] = forms.ChoiceField( choices=contact_form_category_choices(), label=_('Category'), help_text=_('Please tell us the subject of your request.'), )class AntiSpamContactForm(ContactForm): """A modern contact form, which works without captchas.""" url = forms.URLField(required=False) class Media: css = { 'all': (os.path.join( settings.STATIC_URL, 'contact_form/css/contact_form.css'), ) } js = ( os.path.join( settings.STATIC_URL, 'contact_form/js/contact_form.js', ), ) def save(self): if not self.cleaned_data.get('url'): return super(AntiSpamContactForm, self).save()