mirror of
https://github.com/kennethreitz/pydantic.git
synced 2026-06-05 23:00:18 +00:00
33b7d52d31
* moving docs to mkdocs * transfering readme to md and more * fixing build * splitting usage.md * improving schema.md and index.md * fix make_history.rst * models intro * working on data conversation and required fields * more fixes to models.md * list all standard types supported * list of pydantic types * tweaks * update links in code * Apply suggestions from code review incorporate @dmontagu's suggestions. Co-Authored-By: dmontagu <35119617+dmontagu@users.noreply.github.com> * Apply suggestions from code review more missed suggestions. Co-Authored-By: dmontagu <35119617+dmontagu@users.noreply.github.com> * Apply suggestions from code review more corrects. * cleanup * Field order warning * fix and regenerate benchmarks * format examples better, cleanup * improve schema mapping table * correct highlighting file types in schema.md * add redirects in javascript * add logo
45 lines
1.7 KiB
Python
45 lines
1.7 KiB
Python
from marshmallow import Schema, __version__, fields, validate
|
|
|
|
|
|
class TestMarshmallow:
|
|
package = 'marshmallow'
|
|
version = __version__
|
|
|
|
def __init__(self, allow_extra):
|
|
class LocationSchema(Schema):
|
|
latitude = fields.Float(allow_none=True)
|
|
longitude = fields.Float(allow_none=True)
|
|
|
|
class SkillSchema(Schema):
|
|
subject = fields.Str(required=True)
|
|
subject_id = fields.Integer(required=True)
|
|
category = fields.Str(required=True)
|
|
qual_level = fields.Str(required=True)
|
|
qual_level_id = fields.Integer(required=True)
|
|
qual_level_ranking = fields.Float(default=0)
|
|
|
|
class Model(Schema):
|
|
id = fields.Integer(required=True)
|
|
client_name = fields.Str(validate=validate.Length(max=255), required=True)
|
|
sort_index = fields.Float(required=True)
|
|
# client_email = fields.Email()
|
|
client_phone = fields.Str(validate=validate.Length(max=255), allow_none=True)
|
|
|
|
location = LocationSchema()
|
|
|
|
contractor = fields.Integer(validate=validate.Range(min=0), allow_none=True)
|
|
upstream_http_referrer = fields.Str(validate=validate.Length(max=1023), allow_none=True)
|
|
grecaptcha_response = fields.Str(validate=validate.Length(min=20, max=1000), required=True)
|
|
last_updated = fields.DateTime(allow_none=True)
|
|
skills = fields.Nested(SkillSchema(many=True))
|
|
|
|
self.allow_extra = allow_extra # unused
|
|
self.schema = Model()
|
|
|
|
def validate(self, data):
|
|
result = self.schema.load(data)
|
|
if result.errors:
|
|
return False, result.errors
|
|
else:
|
|
return True, result.data
|