Multiple emails form field

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# -*- coding: utf-8 -*-
from django import forms
from django.utils.translation import ugettext_lazy as _
from django.core.validators import email_re, EMPTY_VALUES
from django.forms.fields import Field

class CommaSeparatedEmailField(Field):
    description = _(u"E-mail address(es)")

    def __init__(self, *args, **kwargs):
        self.token = kwargs.pop("token", ",")
        super(CommaSeparatedEmailField, self).__init__(*args, **kwargs)

    def to_python(self, value):
        if value in EMPTY_VALUES:
            return []

        value = [item.strip() for item in value.split(self.token) if item.strip()]

        return list(set(value))

    def clean(self, value):
        """
        Check that the field contains one or more 'comma-separated' emails
        and normalizes the data to a list of the email strings.
        """
        value = self.to_python(value)

        if value in EMPTY_VALUES and self.required:
            raise forms.ValidationError(_(u"This field is required."))

        for email in value:
            if not email_re.match(email):
                raise forms.ValidationError(_(u"'%s' is not a valid "
                                              "e-mail address.") % email)
        return value

More like this

  1. Multiple emails form field by virhilo 4 years, 1 month ago
  2. EmailListField for Django by sciyoshi 4 years, 8 months ago
  3. List all errors in a form +bootstrap highlighting by ibrahimlawal 1 year, 7 months ago
  4. MultipleEmailsField by spanasik 5 years ago
  5. Multiple Choice model field by danielroseman 5 years, 5 months ago

Comments

(Forgotten your password?)