- Author:
- sciyoshi
- Posted:
- August 8, 2009
- Language:
- Python
- Version:
- 1.1
- Tags:
- fields forms email form field email-list
- Score:
- 4 (after 4 ratings)
A simple Django form field which validates a list of emails.
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 37 38 39 40 | from email.utils import getaddresses, formataddr
from django import forms
from django.utils.translation import ugettext_lazy as _
class EmailListField(forms.CharField):
"""
A Django form field which validates a list of email addresses.
>>> EmailListField().clean('[email protected]')
[u'[email protected]']
>>> EmailListField().clean('User 1 <[email protected]>, User 2 <[email protected]>')
[u'User 1 <[email protected]>', u'User 2 <[email protected]>']
>>> EmailListField().clean('invalid email address')
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/sciyoshi/chideit/apps/chide/common/mail/forms.py", line 21, in clean
raise forms.ValidationError(self.error_messages['invalid'])
ValidationError: [u'Please enter a valid list of e-mail addresses.']
>>> EmailListField().clean('"User 3>" < "Abc\@def"@example.com >, User 2 <[email protected] > , 3rd guy <!def!xyz%[email protected] >')
[u'"User 3>" <"[email protected]"@example.com>', u'User 2 <[email protected]>', u'3rd guy <!def!xyz%[email protected]>']
"""
default_error_messages = {
'invalid': _('Please enter a valid list of e-mail addresses.')
}
def clean(self, value):
value = super(EmailListField, self).clean(value)
field = forms.EmailField()
try:
return [
formataddr((name, field.clean(addr)))
for name, addr in getaddresses([value])]
except forms.ValidationError:
raise forms.ValidationError(self.error_messages['invalid'])
|
More like this
- Automatically setup raw_id_fields ForeignKey & OneToOneField by agusmakmun 8 months ago
- Crispy Form by sourabhsinha396 8 months, 4 weeks ago
- ReadOnlySelect by mkoistinen 9 months, 1 week ago
- Verify events sent to your webhook endpoints by santos22 10 months, 1 week ago
- Django Language Middleware by agusmakmun 10 months, 2 weeks ago
Comments
Please login first before commenting.