Skip to content

Instantly share code, notes, and snippets.

@LucasRoesler
Created June 29, 2015 17:06
Show Gist options
  • Save LucasRoesler/4ee32cc82f57f90a7cff to your computer and use it in GitHub Desktop.
Save LucasRoesler/4ee32cc82f57f90a7cff to your computer and use it in GitHub Desktop.
CommaSeparatedEmailField
from django import forms
from django.utils.translation import ugettext_lazy as _
from django.core.validators import validate_email, 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:
validate_email(email)
return value
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment