enable new forms
[edumed.git] / contact / forms.py
index 62957ad..019b38e 100644 (file)
@@ -3,13 +3,14 @@ from django.contrib.sites.models import Site
 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
@@ -19,10 +20,11 @@ class ContactFormMeta(forms.Form.__class__):
     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
 
 
@@ -31,13 +33,17 @@ class ContactForm(forms.Form):
     __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
@@ -106,5 +112,8 @@ class ContactForm(forms.Form):
                         '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