Hi all,

I needed IS_NOT_IN_SET validator and added it in my custom
"validators.py", do you think it is useful?


class IS_NOT_IN_SET(IS_IN_SET):
    """
    example::

        INPUT(_type='text', _name='name',
              requires=IS_NOT_IN_SET(['max', 'john'],zero=''))

    the argument of IS_NOT_IN_SET must be a list or set

        >>> IS_NOT_IN_SET(['max', 'john'])('max')
        ('max', 'value not allowed')
        >>> IS_NOT_IN_SET(['max', 'john'])('na')
        ('na', None)
        >>> IS_NOT_IN_SET(('id1','id2'), ['first label','second
label'])('id100')
        ('id100', None)
        >>> IS_NOT_IN_SET(('id1','id2'), ['first label','second
label'])('id1')
        ('id1', 'value not allowed')
        >>> IS_NOT_IN_SET(('id1','id2'), ['first label','second
label'])('id2')
        ('id2', 'value not allowed')
        >>> IS_NOT_IN_SET({'id1':'first label', 'id2':'second label'})
('id100')
        ('id100', None)
        >>> IS_NOT_IN_SET({'id1':'first label', 'id2':'second label'})
('id1')
        ('id1', 'value not allowed')
        >>> IS_NOT_IN_SET({'id1':'first label', 'id2':'second label'})
('id2')
        ('id2', 'value not allowed')
        >>> import itertools
        >>> IS_NOT_IN_SET(itertools.chain(['1','3','5'],['2','4','6']))
('100')
        ('100', None)
        >>> IS_NOT_IN_SET(itertools.chain(['1','3','5'],['2','4','6']))
('1')
        ('1', 'value not allowed')
        >>> IS_NOT_IN_SET(itertools.chain(['1','3','5'],['2','4','6']))
('6')
        ('6', 'value not allowed')
        >>> IS_NOT_IN_SET(itertools.chain(['1','3','5'],['2','4','6']))
('7')
        ('7', None)
    """

    def __init__(self, *a, **b):
        IS_IN_SET.__init__(self, *a, **b)

    def __call__(self, value):
        value, error = IS_IN_SET.__call__(self, value)
        if error == None:
            return (value, self.error_message)
        else:
            return (value, None)

Reply via email to