Navrang schrieb:
> Now i want one validators in which i want to perform :
> 
> "If any one enters oldpwd then it must be correct and also enter
> newpwd also."

Try this:

class MySchema(validators.Schema):

    olpwd = validators.All(
        validators.UnicodeString(max=40),
        ValidPassword)
    newpwd = validators.Any(
        validators.UnicodeString(min=8, max=40),
        validators.Empty,
    )
    rewpd = validators.UnicodeString(if_empty=None)
    chained_validators = [validators.All(
        validators.FieldsMatch('newpd', 'repwd'),
        validators.RequireIfPresent(required='oldpwd', present='newpwd')
    )]

ValidPassword is a custom validator that checks the password against the
database. Example:

class ValidPassword(validators.FancyValidator):
    """Validator to test for validity of password.

    Works only if user is already logged in.
    """

    messages = {
        'invalid': u'The password you supplied is invalid.'
    }

    def validate_python(self, value, state):
        user = identity.current.user
        if isinstance(value, dict):
            value = value.get('oldpwd')
        if not identity.current_provider.validate_password(user,
          user.user_name, value):
            raise validators.Invalid(
                self.message('invalid', state), value, state)
        return value


HTH, Chris

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to