new validator IS_LIST_OF_EMAILS
This commit is contained in:
@@ -1 +1 @@
|
|||||||
Version 2.6.3-stable+timestamp.2013.09.20.20.56.30
|
Version 2.6.3-stable+timestamp.2013.09.20.21.16.00
|
||||||
|
|||||||
+1
-1
@@ -10,7 +10,7 @@ Web2Py framework modules
|
|||||||
========================
|
========================
|
||||||
"""
|
"""
|
||||||
|
|
||||||
__all__ = ['A', 'B', 'BEAUTIFY', 'BODY', 'BR', 'CAT', 'CENTER', 'CLEANUP', 'CODE', 'CRYPT', 'DAL', 'DIV', 'EM', 'EMBED', 'FIELDSET', 'FORM', 'Field', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'HEAD', 'HR', 'HTML', 'HTTP', 'I', 'IFRAME', 'IMG', 'INPUT', 'IS_ALPHANUMERIC', 'IS_DATE', 'IS_DATETIME', 'IS_DATETIME_IN_RANGE', 'IS_DATE_IN_RANGE', 'IS_DECIMAL_IN_RANGE', 'IS_EMAIL', 'IS_EMPTY_OR', 'IS_EQUAL_TO', 'IS_EXPR', 'IS_FLOAT_IN_RANGE', 'IS_IMAGE', 'IS_JSON', 'IS_INT_IN_RANGE', 'IS_IN_DB', 'IS_IN_SET', 'IS_IPV4', 'IS_LENGTH', 'IS_LIST_OF', 'IS_LOWER', 'IS_MATCH', 'IS_NOT_EMPTY', 'IS_NOT_IN_DB', 'IS_NULL_OR', 'IS_SLUG', 'IS_STRONG', 'IS_TIME', 'IS_UPLOAD_FILENAME', 'IS_UPPER', 'IS_URL', 'LABEL', 'LEGEND', 'LI', 'LINK', 'LOAD', 'MARKMIN', 'MENU', 'META', 'OBJECT', 'OL', 'ON', 'OPTGROUP', 'OPTION', 'P', 'PRE', 'SCRIPT', 'SELECT', 'SPAN', 'SQLFORM', 'SQLTABLE', 'STRONG', 'STYLE', 'TABLE', 'TAG', 'TBODY', 'TD', 'TEXTAREA', 'TFOOT', 'TH', 'THEAD', 'TITLE', 'TR', 'TT', 'UL', 'URL', 'XHTML', 'XML', 'redirect', 'current', 'embed64']
|
__all__ = ['A', 'B', 'BEAUTIFY', 'BODY', 'BR', 'CAT', 'CENTER', 'CLEANUP', 'CODE', 'CRYPT', 'DAL', 'DIV', 'EM', 'EMBED', 'FIELDSET', 'FORM', 'Field', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'HEAD', 'HR', 'HTML', 'HTTP', 'I', 'IFRAME', 'IMG', 'INPUT', 'IS_ALPHANUMERIC', 'IS_DATE', 'IS_DATETIME', 'IS_DATETIME_IN_RANGE', 'IS_DATE_IN_RANGE', 'IS_DECIMAL_IN_RANGE', 'IS_EMAIL', 'IS_LIST_OF_EMAILS', 'IS_EMPTY_OR', 'IS_EQUAL_TO', 'IS_EXPR', 'IS_FLOAT_IN_RANGE', 'IS_IMAGE', 'IS_JSON', 'IS_INT_IN_RANGE', 'IS_IN_DB', 'IS_IN_SET', 'IS_IPV4', 'IS_LENGTH', 'IS_LIST_OF', 'IS_LOWER', 'IS_MATCH', 'IS_NOT_EMPTY', 'IS_NOT_IN_DB', 'IS_NULL_OR', 'IS_SLUG', 'IS_STRONG', 'IS_TIME', 'IS_UPLOAD_FILENAME', 'IS_UPPER', 'IS_URL', 'LABEL', 'LEGEND', 'LI', 'LINK', 'LOAD', 'MARKMIN', 'MENU', 'META', 'OBJECT', 'OL', 'ON', 'OPTGROUP', 'OPTION', 'P', 'PRE', 'SCRIPT', 'SELECT', 'SPAN', 'SQLFORM', 'SQLTABLE', 'STRONG', 'STYLE', 'TABLE', 'TAG', 'TBODY', 'TD', 'TEXTAREA', 'TFOOT', 'TH', 'THEAD', 'TITLE', 'TR', 'TT', 'UL', 'URL', 'XHTML', 'XML', 'redirect', 'current', 'embed64']
|
||||||
|
|
||||||
from globals import current
|
from globals import current
|
||||||
from html import *
|
from html import *
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ __all__ = [
|
|||||||
'IS_DATETIME',
|
'IS_DATETIME',
|
||||||
'IS_DECIMAL_IN_RANGE',
|
'IS_DECIMAL_IN_RANGE',
|
||||||
'IS_EMAIL',
|
'IS_EMAIL',
|
||||||
|
'IS_LIST_OF_EMAILS',
|
||||||
'IS_EMPTY_OR',
|
'IS_EMPTY_OR',
|
||||||
'IS_EXPR',
|
'IS_EXPR',
|
||||||
'IS_FLOAT_IN_RANGE',
|
'IS_FLOAT_IN_RANGE',
|
||||||
@@ -1178,6 +1179,39 @@ class IS_EMAIL(Validator):
|
|||||||
return (value, None)
|
return (value, None)
|
||||||
return (value, translate(self.error_message))
|
return (value, translate(self.error_message))
|
||||||
|
|
||||||
|
class IS_LIST_OF_EMAILS(object):
|
||||||
|
"""
|
||||||
|
use as follows:
|
||||||
|
Field('emails','list:string',
|
||||||
|
widget=SQLFORM.widgets.text.widget,
|
||||||
|
requires=IS_LIST_OF_EMAILS(),
|
||||||
|
represent=lambda v,r: \
|
||||||
|
SPAN(*[A(x,_href='mailto:'+x) for x in (v or [])])
|
||||||
|
)
|
||||||
|
"""
|
||||||
|
split_emails = re.compile('[^,;\s]+')
|
||||||
|
def __init__(self, error_message = 'Invalid emails: %s'):
|
||||||
|
self.error_message = error_message
|
||||||
|
|
||||||
|
def __call__(self, value):
|
||||||
|
bad_emails = []
|
||||||
|
emails = []
|
||||||
|
f = IS_EMAIL()
|
||||||
|
for email in self.split_emails.findall(value):
|
||||||
|
if not email in emails:
|
||||||
|
emails.append(email)
|
||||||
|
error = f(email)[1]
|
||||||
|
if error and not email in bad_emails:
|
||||||
|
bad_emails.append(email)
|
||||||
|
if not bad_emails:
|
||||||
|
return (value, None)
|
||||||
|
else:
|
||||||
|
return (value,
|
||||||
|
translate(self.error_message) % ', '.join(bad_emails))
|
||||||
|
|
||||||
|
def formatter(self,value,row=None):
|
||||||
|
return ', '.join(value or [])
|
||||||
|
|
||||||
|
|
||||||
# URL scheme source:
|
# URL scheme source:
|
||||||
# <http://en.wikipedia.org/wiki/URI_scheme> obtained on 2008-Nov-10
|
# <http://en.wikipedia.org/wiki/URI_scheme> obtained on 2008-Nov-10
|
||||||
|
|||||||
Reference in New Issue
Block a user