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
sub_body[name] = value
if sub_body:
body.setdefault(f.form_tag, []).append(sub_body)
-
+
contact = Contact.objects.create(
body=body,
ip=request.META['REMOTE_ADDR'],
'contact/%s/mail_subject.txt' % self.form_tag,
'contact/mail_subject.txt',
], dictionary, context).strip()
- mail_body = render_to_string([
- 'contact/%s/mail_body.txt' % self.form_tag,
- 'contact/mail_body.txt',
- ], dictionary, context)
+ if self.result_page:
+ mail_body = render_to_string(
+ 'contact/%s/results_email.txt' % contact.form_tag,
+ {
+ 'contact': contact,
+ 'results': self.results(contact),
+ }, context)
+ else:
+ mail_body = render_to_string([
+ 'contact/%s/mail_body.txt' % self.form_tag,
+ '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