Skip to content

Commit

Permalink
Merge branch 'issue136' into dev
Browse files Browse the repository at this point in the history
  • Loading branch information
sloria committed Feb 1, 2015
2 parents a23da1c + 6f529f3 commit f33375d
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 2 deletions.
13 changes: 11 additions & 2 deletions marshmallow/fields.py
Expand Up @@ -1234,7 +1234,12 @@ def __init__(self, default=None, attribute=None, relative=False, allow_blank=Fal
))

def _validated(self, value):
return validate.URL(relative=self.relative, error=getattr(self, 'error'))(value)
self._validate_missing(value)
return validate.URL(
relative=self.relative,
allow_blank=self.allow_blank,
error=getattr(self, 'error')
)(value)

URL = Url

Expand All @@ -1257,7 +1262,11 @@ def __init__(self, default=None, attribute=None, allow_blank=False,
error=getattr(self, 'error')))

def _validated(self, value):
return validate.Email(error=getattr(self, 'error'))(value)
self._validate_missing(value)
return validate.Email(
allow_blank=self.allow_blank,
error=getattr(self, 'error')
)(value)


class Method(Field):
Expand Down
18 changes: 18 additions & 0 deletions tests/test_schema.py
Expand Up @@ -2031,3 +2031,21 @@ class MySchema(Schema):
assert 'blank_allowed' not in errors
assert 'blank_disallowed' in errors
assert errors['blank_disallowed'][0] == 'Field may not be blank.'

# Regression test for: https://github.com/marshmallow-code/marshmallow/issues/136
@pytest.mark.parametrize('FieldClass',
[
fields.URL,
fields.Email,
])
def test_allow_blank_on_serialization(self, FieldClass):
class MySchema(Schema):
blank_allowed = FieldClass(allow_blank=True)
blank_disallowed = FieldClass(allow_blank=False)

schema = MySchema()
data = {'blank_allowed': '', 'blank_disallowed': ''}
_, errors = schema.dump(data)
assert 'blank_allowed' not in errors
assert 'blank_disallowed' in errors
assert errors['blank_disallowed'][0] == 'Field may not be blank.'

0 comments on commit f33375d

Please sign in to comment.