django_sorcery.validators.base module

Validators.

class django_sorcery.validators.base.ValidateCantRemove(field, message=None, code=None)[source]

Bases: object

Validate that for data cannot be removed for given field.

For example:

class MyModel(db.Model):
    foo = db.Column(db.String())

    validators = [
        ValidateCantRemove('foo'),
    ]
code = 'remove'
message = 'Cannot remove existing data.'
class django_sorcery.validators.base.ValidateEmptyWhen(field, predicate, message=None, code=None)[source]

Bases: object

Validator for checking a field is empty when predicate is True.

Useful to conditionally enforce a field is not provided depending on related field

For example:

class MyModel(db.Model):
    foo = db.Column(db.String())
    bar = db.Column(db.String())

    validators = [
        # do not allow to set bar unless foo is present
        ValidateEmptyWhen('bar', lambda m: not m.foo),
    ]
allow_empty = True
code = 'empty'
message = 'Cannot provide a value to this field.'
class django_sorcery.validators.base.ValidateNotEmptyWhen(field, predicate, message=None, code=None)[source]

Bases: django_sorcery.validators.base.ValidateEmptyWhen

Validator for checking a field is provided when predicate is True.

Useful to conditionally enforce a field is provided depending on related field

For example:

class MyModel(db.Model):
    foo = db.Column(db.String())
    bar = db.Column(db.String())

    validators = [
        # enforce bar is provided when foo is provided
        ValidateNotEmptyWhen('bar', lambda m: m.foo),
    ]
allow_empty = False
code = 'not_empty'
message = 'This field is required.'
class django_sorcery.validators.base.ValidateOnlyOneOf(fields, required=True, message=None, code=None)[source]

Bases: object

Validate that only one of given fields is provided.

For example:

class MyModel(db.Model):
    foo = db.Column(db.String())
    bar = db.Column(db.String())

    validators = [
        # enforce only either foo or bar are provided
        ValidateOnlyOneOf(['foo', 'bar']),
    ]
code = 'exclusive'
message = 'Only one of %(fields)s is allowed.'
class django_sorcery.validators.base.ValidateTogetherModelFields(fields, message=None, code=None)[source]

Bases: object

Validator for checking that multiple model fields are always saved together.

For example:

class MyModel(db.Model):
    foo = db.Column(db.Integer())
    bar = db.Column(db.Integer())

    validators = [
        ValidateTogetherModelFields(["foo", "bar"]),
    ]
code = 'required'
message = 'All %(fields)s are required.'
class django_sorcery.validators.base.ValidateUnique(session, *args, **kwargs)[source]

Bases: object

Validator for checking uniqueness of arbitrary list of attributes on a model.

For example:

class MyModel(db.Model):
    foo = db.Column(db.Integer())
    bar = db.Column(db.Integer())
    name = db.Column(db.Integer())

    validators = [
        ValidateUnique(db, "name"),      # checks for name uniqueness
        ValidateUnique(db, "foo", "bar"),  # checks for foo and bar combination uniqueness
    ]
code = 'required'
message = '%(fields)s must make a unique set.'
class django_sorcery.validators.base.ValidateValue(field, predicate, message=None, code=None)[source]

Bases: object

Validator for checking correctness of a value by using a predicate callable.

Useful when other multiple fields need to be consulted to check if particular field is valid.

For example:

class MyModel(db.Model):
    foo = db.Column(db.String())
    bar = db.Column(db.String())

    validators = [
        # allow only "bar" value when model.foo == "foo"
        ValidateValue('bar', lambda m: m.foo != 'foo' or b.bar == 'bar'),
    ]
code = 'invalid'
message = 'Please enter valid value.'
negated = False