From 972d6d454003b8195d715f93ff881a9224cb28b3 Mon Sep 17 00:00:00 2001 From: e-cloud <saintscott119@gmail.com> Date: Mon, 12 Aug 2019 22:25:58 +0800 Subject: [PATCH] feat: upgrade to use marshmallow 3.0.0rc9 marshmallow 3.0.0 use strict: True by default for schem also patch EnumField, revert it once https://github.com/justanr/marshmallow_enum/issues/23 is resolved --- app/models/enum_field.py | 7 +++++++ app/resources/auth/schemas.py | 2 +- app/resources/complaints/schemas.py | 8 +++----- app/resources/uploads/schemas.py | 4 +--- requirements.txt | 2 +- requirements/base.txt | 1 + 6 files changed, 14 insertions(+), 10 deletions(-) create mode 100644 app/models/enum_field.py diff --git a/app/models/enum_field.py b/app/models/enum_field.py new file mode 100644 index 0000000..d2c54fb --- /dev/null +++ b/app/models/enum_field.py @@ -0,0 +1,7 @@ +from marshmallow_enum import EnumField as BaseEnumField + + +# todo: revert it once https://github.com/justanr/marshmallow_enum/issues/23 is resolved +class EnumField(BaseEnumField): + def _deserialize(self, value, attr, data, **kwargs): + super(EnumField, self)._deserialize(value, attr, data) diff --git a/app/resources/auth/schemas.py b/app/resources/auth/schemas.py index 5211882..20f35fc 100644 --- a/app/resources/auth/schemas.py +++ b/app/resources/auth/schemas.py @@ -1,8 +1,8 @@ from flask_marshmallow import Schema from marshmallow import fields -from marshmallow_enum import EnumField from .models import EnumGender +from app.models.enum_field import EnumField class CreateAuthClientParameters(Schema): diff --git a/app/resources/complaints/schemas.py b/app/resources/complaints/schemas.py index ed143e9..d548547 100644 --- a/app/resources/complaints/schemas.py +++ b/app/resources/complaints/schemas.py @@ -1,11 +1,11 @@ from flask_marshmallow.sqla import TableSchema from marshmallow import fields from marshmallow import Schema -from marshmallow_enum import EnumField from .models import Complaint from .models import EnumComplaintState from .models import EnumComplaintType +from app.models.enum_field import EnumField from app.resources.users.schemas import UserSchema @@ -31,11 +31,9 @@ class ComplaintSchema(Schema): trade_info = fields.String(description='tradeInfo') relatedProducts = fields.String(description='relatedProducts') purchase_timestamp = fields.DateTime(description='purchase_timestamp') - invoice_files = fields.List( - fields.String(), description='uploaded invoice file list' - ) + invoice_files = fields.List(fields.URL(), description='uploaded invoice file list') evidence_files = fields.List( - fields.String(), description='uploaded evidence file list' + fields.URL(), description='uploaded evidence file list' ) diff --git a/app/resources/uploads/schemas.py b/app/resources/uploads/schemas.py index 73d9e43..6574326 100644 --- a/app/resources/uploads/schemas.py +++ b/app/resources/uploads/schemas.py @@ -1,9 +1,9 @@ from flask_marshmallow import Schema from marshmallow import ValidationError -from marshmallow_enum import EnumField from .models import EnumUploadFileType from .models import FileField +from app.models.enum_field import EnumField def file_validate(file): @@ -12,8 +12,6 @@ def file_validate(file): class FileUploadFormParameters(Schema): - class Meta: - strict = True upload_type = EnumField( EnumUploadFileType, diff --git a/requirements.txt b/requirements.txt index 7016c4c..14f627c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -33,7 +33,7 @@ jsonschema==3.0.2 lazy-object-proxy==1.4.1 Mako==1.1.0 MarkupSafe==1.1.1 -marshmallow==2.19.5 +marshmallow==3.0.0rc9 marshmallow-enum==1.4.1 marshmallow-jsonschema==0.6.0 marshmallow-sqlalchemy==0.17.0 diff --git a/requirements/base.txt b/requirements/base.txt index a0fb310..e84cf0b 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -9,6 +9,7 @@ flask-migrate~=2.5.0 flask-rest-api~=0.16.1 flask-sqlalchemy~=2.4.0 flask~=1.1.0 +marshmallow==3.0.0rc9 marshmallow-enum~=1.4.1 marshmallow-jsonschema~=0.6.0 marshmallow-sqlalchemy~=0.17.0