zoom.validators module

zoom.validators

class zoom.validators.Cleaner(transformer)

Bases: object

A content cleaner.

>>> Cleaner(str.lower).clean('Test')
'test'
>>> import decimal
>>> Cleaner(decimal.Decimal).clean('10')
Decimal('10')
clean(value)

cleans up a value

valid(value)

tests validity of a value

class zoom.validators.DateValidator(date_format='%b %d, %Y')

Bases: zoom.validators.Validator

Date validator

>>> v = DateValidator()
>>> v.valid('asdf')
False
>>> v.msg
'enter valid date in "Jan 31, 2016" format'
>>> v.valid('Jan 1, 2016')
True
>>> v.valid('Jan 41, 2016')
False
>>> v.valid('2016-01-14')
True
>>> v.valid('2016-01-41')
False
>>> v.valid(datetime.date(2016, 1, 14))
True
class zoom.validators.MaximumValue(max_value, empty_allowed=True)

Bases: zoom.validators.Validator

Maximum value validator

>>> v = MaximumValue(100)
>>> v.valid(50)
True
>>> v.valid(120)
False
>>> from datetime import date
>>> v = MaximumValue(date(2015,1,1))
>>> v.valid(date(2015,1,1))
True
>>> v.valid(date(2015,1,2))
False
>>> v.msg
'value must be at most 2015-01-01'
class zoom.validators.MinimumLength(min_length, empty_allowed=False)

Bases: zoom.validators.Validator

A minimum length validator

>>> v = MinimumLength(2)
>>> v.test('')
False
>>> v.test(' ')
False
>>> v.test('  ')
False
>>> v.test('t')
False
>>> v.msg
'minimum length 2'
>>> v.test('te')
True
>>> v = MinimumLength(2, True)
>>> v.test('')
True
>>> v.test(' ')
True
>>> v.test('  ')
True
>>> v.test('t')
False
>>> v.test('te')
True
class zoom.validators.MinimumValue(min_value, empty_allowed=True)

Bases: zoom.validators.Validator

Minimum value validator

>>> v = MinimumValue(100)
>>> v.valid(50)
False
>>> v.valid(120)
True
class zoom.validators.PostalCodeValidator

Bases: zoom.validators.RegexValidator

A Postal Code Validator

>>> validator = PostalCodeValidator()
>>> validator.valid('V8X 1G1')
True
>>> validator = PostalCodeValidator()
>>> validator.valid('V8X1G1')
True
>>> validator = PostalCodeValidator()
>>> validator.valid('V8X XG1')
False
>>> validator = PostalCodeValidator()
>>> validator.valid('8X XG1')
False
>>> validator = PostalCodeValidator()
>>> validator.valid('V8X 1g1')
True
class zoom.validators.RegexValidator(msg, regex, options=0)

Bases: zoom.validators.Validator

A regular expression validator

>>> validator = RegexValidator('invalid input', r'^[a-zA-Z0-9]+$')
>>> validator.valid('1')
True
>>> validator = RegexValidator('invalid input', r'^[a-zA-Z0-9]+$')
>>> validator.valid('')
True
>>> is_valid = RegexValidator('invalid input', r'^[a-zA-Z0-9]+$')
>>> is_valid('')
True
>>> is_valid('*')
False
>>> validator = RegexValidator('invalid input', r'^[a-zA-Z0-9]+$')
>>> validator.valid('-')
False
>>> validator.msg
'invalid input'
valid(value)

tests validity of a value

class zoom.validators.TimeValidator(time_format='%I:%M %p')

Bases: zoom.validators.Validator

Time validator

Validates a time in a variety of formats with time_format being the preferred format.

>>> import locale
>>> locale.setlocale(locale.LC_ALL, 'C')
'C'
>>> v = TimeValidator()
>>> v.valid('asdf')
False
>>> v.msg
'enter valid time in 12 hour "02:20 PM" format'
>>> v.valid('10:20')
True
>>> v.valid('07:20')
True
>>> v.valid('7:20')
True
>>> v.valid('10:70')
False
>>> v.valid('14:20')
True
>>> v.valid('10:20 PM')
True
>>> v.valid('14:70')
False
>>> v.valid('10:20:10')
True
>>> v.valid('10:20:70')
False
>>> v.valid('10:70:20')
False
>>> v.valid(datetime.time(10, 20))
True
>>> v.valid(datetime.time(10, 20, 30))
True
valid_formats = ['%I:%M %p', '%I:%M:%S %p', '%H:%M', '%H:%M:%S']
class zoom.validators.URLValidator

Bases: zoom.validators.RegexValidator

A URL Validator

>>> validator = URLValidator()
>>> validator.valid('http://google.com')
True
>>> validator = URLValidator()
>>> validator.valid('test123')
False
class zoom.validators.Validator(msg, test)

Bases: object

A content validator.

>>> is_true = Validator('not true', bool)
>>> is_true.valid(1)
True
>>> is_true.valid([])
False
>>> is_true.msg
'not true'
>>> is_true.clean({})
{}
clean(value)

cleans up a value

valid(value)

tests validity of a value

zoom.validators.email_valid(email)

test for valid email address

>>> email_valid('test@testco.com')
True
>>> email_valid('test@@testco.com')
False
>>> email_valid('test@testco')
False
zoom.validators.empty(value)

test if a value is empty

>>> empty('')
True
>>> empty(' ')
True
>>> empty('\n')
True
>>> empty('x')
False
>>> empty(1)
False
zoom.validators.image_mime_type_valid(data)

check data against the more commonly browser supported mime types

zoom.validators.is_present(value)

test if a value is present

>>> is_present('')
False
>>> is_present('x')
True
zoom.validators.latitude_valid(value)

test for valid latitude

>>> latitude_valid(45)
True
>>> latitude_valid(100)
False
>>> latitude_valid('x')
False
zoom.validators.longitude_valid(value)

test for valid longitude

>>> longitude_valid(145)
True
>>> longitude_valid(200)
False
>>> longitude_valid('x')
False
zoom.validators.number_valid(value)

Test for valid number

>>> number_valid(0)
True
>>> number_valid(-1)
True
>>> number_valid(1.12039123)
True
>>> number_valid('1.12039123')
True
>>> number_valid('x1.12039123')
False
>>> number_valid('t')
False
>>> number_valid('')
True
>>> number_valid(False) # not sure if this is what's we want
True