X-Git-Url: https://git.mdrn.pl/edumed.git/blobdiff_plain/b2789efe30a42c1c9780c6cf132d905ea7e41c87..7755781ba4e07a613fed6288ea6eef02d83b3e4d:/contact/forms.py diff --git a/contact/forms.py b/contact/forms.py index 0279e12..aab883d 100644 --- a/contact/forms.py +++ b/contact/forms.py @@ -1,7 +1,8 @@ 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.validators import email_re +from django.core.validators import validate_email from django import forms from django.template.loader import render_to_string from django.template import RequestContext @@ -33,12 +34,22 @@ class ContactForm(forms.Form): required_css_class = 'required' contact = forms.CharField(max_length=128) - def save(self, request): + def save(self, request, formsets=None): from .models import Attachment, Contact body = {} for name, value in self.cleaned_data.items(): if not isinstance(value, UploadedFile) and name != 'contact': - body[name] = value + body[name] = value + + for formset in formsets or []: + for f in formset.forms: + sub_body = {} + for name, value in f.cleaned_data.items(): + if not isinstance(value, UploadedFile): + 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=self.cleaned_data['contact'], @@ -52,8 +63,8 @@ class ContactForm(forms.Form): site = Site.objects.get_current() dictionary = { 'form_tag': self.form_tag, - 'site_name': site.name, - 'site_domain': site.domain, + 'site_name': getattr(self, 'site_name', site.name), + 'site_domain': getattr(self, 'site_domain', site.domain), 'contact': contact, } context = RequestContext(request) @@ -68,7 +79,11 @@ class ContactForm(forms.Form): mail_managers(mail_managers_subject, mail_managers_body, fail_silently=True) - if email_re.match(contact.contact): + try: + validate_email(contact.contact) + except ValidationError: + pass + else: mail_subject = render_to_string([ 'contact/%s/mail_subject.txt' % self.form_tag, 'contact/mail_subject.txt',