Login

Multiple emails form field

Author:
matrix
Posted:
December 17, 2013
Language:
Python
Version:
1.6
Tags:
multiple email validation form field list
Score:
1 (after 1 ratings)

Validate form field that include email or emails separated by 'token' kwargs, by default ',' a comma. Return a list [] of email(s). Check validity of the email(s) from django EmailField regex (tested with 1.3, but normally will also work with 1.5)

 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 5 years, 1 month ago
  2. EmailListField for Django by sciyoshi 5 years, 8 months ago
  3. Multiple emails field by cuchac 11 months, 3 weeks ago
  4. List all errors in a form +bootstrap highlighting by ibrahimlawal 2 years, 7 months ago
  5. MultipleEmailsField by spanasik 6 years ago

Comments

Please login first before commenting.