from django.core.exceptions import ValidationError
from django.core.files.uploadedfile import UploadedFile
from django.core.mail import send_mail, mail_managers
-from django.core.urlresolvers import reverse
from django.core.validators import validate_email
from django import forms
from django.template.loader import render_to_string
from django.template import RequestContext
from django.utils.translation import ugettext_lazy as _
+from . import mailing
+
contact_forms = {}
admin_list_width = 0
def __new__(cls, name, bases, attrs):
global admin_list_width
model = super(ContactFormMeta, cls).__new__(cls, name, bases, attrs)
- assert model.form_tag not in contact_forms, 'Duplicate form_tag.'
- if model.admin_list:
- admin_list_width = max(admin_list_width, len(model.admin_list))
- contact_forms[model.form_tag] = model
+ if model.form_tag:
+ assert model.form_tag not in contact_forms, 'Duplicate form_tag.'
+ if model.admin_list:
+ admin_list_width = max(admin_list_width, len(model.admin_list))
+ contact_forms[model.form_tag] = model
return model
__metaclass__ = ContactFormMeta
form_tag = None
+ old_form_tags = []
form_title = _('Contact form')
submit_label = _('Submit')
admin_list = None
result_page = False
+ mailing_field = None
+ mailing = False
+ data_processing = None
required_css_class = 'required'
- contact = forms.CharField(max_length=128)
+ contact = NotImplemented
def save(self, request, formsets=None):
from .models import Attachment, Contact
'contact/mail_body.txt',
], dictionary, context)
send_mail(mail_subject, mail_body, 'no-reply@%s' % site.domain, [contact.contact], fail_silently=True)
+ if self.mailing or (self.mailing_field and self.cleaned_data[self.mailing_field]):
+ email = self.cleaned_data['contact']
+ mailing.subscribe(email)
return contact