marshmallow.fields incorrectly resolved the 'required' field. Adapted each field to ensure that missing data properly raises an error.
This commit is contained in:
parent
0e8faf499d
commit
4f3686e00f
@ -119,7 +119,7 @@ class History:
|
||||
return self(id, participant_id, shipcall_id, timestamp, eta, ObjectType(type), OperationType(operation))
|
||||
|
||||
class Error(Schema):
|
||||
message = fields.String(metadata={'required':True})
|
||||
message = fields.String(required=True)
|
||||
|
||||
|
||||
class GetVerifyInlineResp(Schema):
|
||||
@ -203,37 +203,37 @@ class ShipcallSchema(Schema):
|
||||
super().__init__(unknown=None)
|
||||
pass
|
||||
|
||||
id = fields.Integer(metadata={'required':True})
|
||||
ship_id = fields.Integer(metadata={'required':True})
|
||||
id = fields.Integer(required=True)
|
||||
ship_id = fields.Integer(required=True)
|
||||
type = fields.Enum(ShipcallType, default=ShipcallType.undefined)
|
||||
eta = fields.DateTime(metadata={'required':False}, allow_none=True)
|
||||
voyage = fields.String(allow_none=True, metadata={'Required':False}, validate=[validate.Length(max=16)]) # Solving: RemovedInMarshmallow4Warning: Passing field metadata as keyword arguments is deprecated. Use the explicit `metadata=...` argument instead. Additional metadata: {'Required': False}
|
||||
etd = fields.DateTime(metadata={'required':False}, allow_none=True)
|
||||
arrival_berth_id = fields.Integer(metadata={'required':False}, allow_none=True)
|
||||
departure_berth_id = fields.Integer(metadata={'required':False}, allow_none=True)
|
||||
tug_required = fields.Bool(metadata={'required':False}, allow_none=True)
|
||||
pilot_required = fields.Bool(metadata={'required':False}, allow_none=True)
|
||||
flags = fields.Integer(metadata={'required':False}, allow_none=True)
|
||||
pier_side = fields.Bool(metadata={'required':False}, allow_none=True)
|
||||
bunkering = fields.Bool(metadata={'required':False}, allow_none=True)
|
||||
replenishing_terminal = fields.Bool(metadata={'required':False}, allow_none=True)
|
||||
replenishing_lock = fields.Bool(metadata={'required':False}, allow_none=True)
|
||||
draft = fields.Float(metadata={'required':False}, allow_none=True, validate=[validate.Range(min=0, max=20, min_inclusive=False, max_inclusive=True)])
|
||||
tidal_window_from = fields.DateTime(metadata={'required':False}, allow_none=True)
|
||||
tidal_window_to = fields.DateTime(metadata={'required':False}, allow_none=True)
|
||||
rain_sensitive_cargo = fields.Bool(metadata={'required':False}, allow_none=True)
|
||||
recommended_tugs = fields.Integer(metadata={'required':False}, allow_none=True, validate=[validate.Range(min=0, max=10, min_inclusive=True, max_inclusive=True)])
|
||||
anchored = fields.Bool(metadata={'required':False}, allow_none=True)
|
||||
moored_lock = fields.Bool(metadata={'required':False}, allow_none=True)
|
||||
canceled = fields.Bool(metadata={'required':False}, allow_none=True)
|
||||
evaluation = fields.Enum(EvaluationType, metadata={'required':False}, allow_none=True, default=EvaluationType.undefined)
|
||||
evaluation_message = fields.Str(allow_none=True, metadata={'Required':False}) # Solving: RemovedInMarshmallow4Warning: Passing field metadata as keyword arguments is deprecated. Use the explicit `metadata=...` argument instead. Additional metadata: {'Required': False}
|
||||
evaluation_time = fields.DateTime(metadata={'required':False}, allow_none=True)
|
||||
evaluation_notifications_sent = fields.Bool(metadata={'required':False}, allow_none=True)
|
||||
time_ref_point = fields.Integer(metadata={'required':False}, allow_none=True)
|
||||
eta = fields.DateTime(required=False, allow_none=True)
|
||||
voyage = fields.String(allow_none=True, required=False, validate=[validate.Length(max=16)])
|
||||
etd = fields.DateTime(required=False, allow_none=True)
|
||||
arrival_berth_id = fields.Integer(required=False, allow_none=True)
|
||||
departure_berth_id = fields.Integer(required=False, allow_none=True)
|
||||
tug_required = fields.Bool(required=False, allow_none=True)
|
||||
pilot_required = fields.Bool(required=False, allow_none=True)
|
||||
flags = fields.Integer(required=False, allow_none=True)
|
||||
pier_side = fields.Bool(required=False, allow_none=True)
|
||||
bunkering = fields.Bool(required=False, allow_none=True)
|
||||
replenishing_terminal = fields.Bool(required=False, allow_none=True)
|
||||
replenishing_lock = fields.Bool(required=False, allow_none=True)
|
||||
draft = fields.Float(required=False, allow_none=True, validate=[validate.Range(min=0, max=20, min_inclusive=False, max_inclusive=True)])
|
||||
tidal_window_from = fields.DateTime(required=False, allow_none=True)
|
||||
tidal_window_to = fields.DateTime(required=False, allow_none=True)
|
||||
rain_sensitive_cargo = fields.Bool(required=False, allow_none=True)
|
||||
recommended_tugs = fields.Integer(required=False, allow_none=True, validate=[validate.Range(min=0, max=10, min_inclusive=True, max_inclusive=True)])
|
||||
anchored = fields.Bool(required=False, allow_none=True)
|
||||
moored_lock = fields.Bool(required=False, allow_none=True)
|
||||
canceled = fields.Bool(required=False, allow_none=True)
|
||||
evaluation = fields.Enum(EvaluationType, required=False, allow_none=True, default=EvaluationType.undefined)
|
||||
evaluation_message = fields.Str(allow_none=True, required=False)
|
||||
evaluation_time = fields.DateTime(required=False, allow_none=True)
|
||||
evaluation_notifications_sent = fields.Bool(required=False, allow_none=True)
|
||||
time_ref_point = fields.Integer(required=False, allow_none=True)
|
||||
participants = fields.List(fields.Nested(ParticipantAssignmentSchema))
|
||||
created = fields.DateTime(metadata={'required':False}, allow_none=True)
|
||||
modified = fields.DateTime(metadata={'required':False}, allow_none=True)
|
||||
created = fields.DateTime(required=False, allow_none=True)
|
||||
modified = fields.DateTime(required=False, allow_none=True)
|
||||
|
||||
@post_load
|
||||
def make_shipcall(self, data, **kwargs):
|
||||
@ -357,30 +357,30 @@ class TimesSchema(Schema):
|
||||
super().__init__(unknown=None)
|
||||
pass
|
||||
|
||||
id = fields.Integer(metadata={'required':False})
|
||||
eta_berth = fields.DateTime(metadata={'required':False}, allow_none=True)
|
||||
eta_berth_fixed = fields.Bool(metadata={'required':False}, allow_none=True)
|
||||
etd_berth = fields.DateTime(metadata={'required':False}, allow_none=True)
|
||||
etd_berth_fixed = fields.Bool(metadata={'required':False}, allow_none=True)
|
||||
lock_time = fields.DateTime(metadata={'required':False}, allow_none=True)
|
||||
lock_time_fixed = fields.Bool(metadata={'required':False}, allow_none=True)
|
||||
zone_entry = fields.DateTime(metadata={'required':False}, allow_none=True)
|
||||
zone_entry_fixed = fields.Bool(metadata={'required':False}, allow_none=True)
|
||||
operations_start = fields.DateTime(metadata={'required':False}, allow_none=True)
|
||||
operations_end = fields.DateTime(metadata={'required':False}, allow_none=True)
|
||||
remarks = fields.String(metadata={'required':False}, allow_none=True, validate=[validate.Length(max=512)])
|
||||
participant_id = fields.Integer(metadata={'required':True})
|
||||
berth_id = fields.Integer(metadata={'required':False}, allow_none = True)
|
||||
berth_info = fields.String(metadata={'required':False}, allow_none=True, validate=[validate.Length(max=512)])
|
||||
pier_side = fields.Bool(metadata={'required':False}, allow_none = True)
|
||||
shipcall_id = fields.Integer(metadata={'required':True})
|
||||
participant_type = fields.Integer(Required = False, allow_none=True)# TODO: could become Enum. fields.Enum(ParticipantType, metadata={'required':False}, allow_none=True, default=ParticipantType.undefined) #fields.Integer(metadata={'required':False}, allow_none=True)
|
||||
ata = fields.DateTime(metadata={'required':False}, allow_none=True)
|
||||
atd = fields.DateTime(metadata={'required':False}, allow_none=True)
|
||||
eta_interval_end = fields.DateTime(metadata={'required':False}, allow_none=True)
|
||||
etd_interval_end = fields.DateTime(metadata={'required':False}, allow_none=True)
|
||||
created = fields.DateTime(metadata={'required':False}, allow_none=True)
|
||||
modified = fields.DateTime(metadata={'required':False}, allow_none=True)
|
||||
id = fields.Integer(required=False)
|
||||
eta_berth = fields.DateTime(required=False, allow_none=True)
|
||||
eta_berth_fixed = fields.Bool(required=False, allow_none=True)
|
||||
etd_berth = fields.DateTime(required=False, allow_none=True)
|
||||
etd_berth_fixed = fields.Bool(required=False, allow_none=True)
|
||||
lock_time = fields.DateTime(required=False, allow_none=True)
|
||||
lock_time_fixed = fields.Bool(required=False, allow_none=True)
|
||||
zone_entry = fields.DateTime(required=False, allow_none=True)
|
||||
zone_entry_fixed = fields.Bool(required=False, allow_none=True)
|
||||
operations_start = fields.DateTime(required=False, allow_none=True)
|
||||
operations_end = fields.DateTime(required=False, allow_none=True)
|
||||
remarks = fields.String(required=False, allow_none=True, validate=[validate.Length(max=512)])
|
||||
participant_id = fields.Integer(required=True)
|
||||
berth_id = fields.Integer(required=False, allow_none = True)
|
||||
berth_info = fields.String(required=False, allow_none=True, validate=[validate.Length(max=512)])
|
||||
pier_side = fields.Bool(required=False, allow_none = True)
|
||||
shipcall_id = fields.Integer(required=True)
|
||||
participant_type = fields.Integer(Required = False, allow_none=True)# TODO: could become Enum. fields.Enum(ParticipantType, required=False, allow_none=True, default=ParticipantType.undefined) #fields.Integer(required=False, allow_none=True)
|
||||
ata = fields.DateTime(required=False, allow_none=True)
|
||||
atd = fields.DateTime(required=False, allow_none=True)
|
||||
eta_interval_end = fields.DateTime(required=False, allow_none=True)
|
||||
etd_interval_end = fields.DateTime(required=False, allow_none=True)
|
||||
created = fields.DateTime(required=False, allow_none=True)
|
||||
modified = fields.DateTime(required=False, allow_none=True)
|
||||
|
||||
@validates("participant_type")
|
||||
def validate_participant_type(self, value):
|
||||
@ -443,13 +443,13 @@ class UserSchema(Schema):
|
||||
def __init__(self):
|
||||
super().__init__(unknown=None)
|
||||
pass
|
||||
id = fields.Integer(metadata={'required':True})
|
||||
first_name = fields.String(allow_none=True, metadata={'Required':False}, validate=[validate.Length(max=64)])
|
||||
last_name = fields.String(allow_none=True, metadata={'Required':False}, validate=[validate.Length(max=64)])
|
||||
user_phone = fields.String(allow_none=True, metadata={'Required':False})
|
||||
user_email = fields.String(allow_none=True, metadata={'Required':False}, validate=[validate.Length(max=64)])
|
||||
old_password = fields.String(allow_none=True, metadata={'Required':False}, validate=[validate.Length(max=128)])
|
||||
new_password = fields.String(allow_none=True, metadata={'Required':False}, validate=[validate.Length(min=6, max=128)])
|
||||
id = fields.Integer(required=True)
|
||||
first_name = fields.String(allow_none=True, required=False, validate=[validate.Length(max=64)])
|
||||
last_name = fields.String(allow_none=True, required=False, validate=[validate.Length(max=64)])
|
||||
user_phone = fields.String(allow_none=True, required=False)
|
||||
user_email = fields.String(allow_none=True, required=False, validate=[validate.Length(max=64)])
|
||||
old_password = fields.String(allow_none=True, required=False, validate=[validate.Length(max=128)])
|
||||
new_password = fields.String(allow_none=True, required=False, validate=[validate.Length(min=6, max=128)])
|
||||
# #TODO: the user schema does not (yet) include the 'notify_' fields
|
||||
|
||||
@validates("user_phone")
|
||||
@ -532,19 +532,19 @@ class ShipSchema(Schema):
|
||||
super().__init__(unknown=None)
|
||||
pass
|
||||
|
||||
id = fields.Int(metadata={'required':False})
|
||||
name = fields.String(allow_none=False, metadata={'Required':True})
|
||||
imo = fields.Int(allow_none=False, metadata={'Required':True})
|
||||
callsign = fields.String(allow_none=True, metadata={'Required':False})
|
||||
participant_id = fields.Int(allow_none=True, metadata={'Required':False})
|
||||
length = fields.Float(allow_none=True, metadata={'Required':False}, validate=[validate.Range(min=0, max=1000, min_inclusive=False, max_inclusive=False)])
|
||||
width = fields.Float(allow_none=True, metadata={'Required':False}, validate=[validate.Range(min=0, max=100, min_inclusive=False, max_inclusive=False)])
|
||||
is_tug = fields.Bool(allow_none=True, metadata={'Required':False}, default=False)
|
||||
bollard_pull = fields.Int(allow_none=True, metadata={'Required':False})
|
||||
eni = fields.Int(allow_none=True, metadata={'Required':False})
|
||||
created = fields.DateTime(allow_none=True, metadata={'Required':False})
|
||||
modified = fields.DateTime(allow_none=True, metadata={'Required':False})
|
||||
deleted = fields.Bool(allow_none=True, metadata={'Required':False}, default=False)
|
||||
id = fields.Int(required=False)
|
||||
name = fields.String(allow_none=False, required=True)
|
||||
imo = fields.Int(allow_none=False, required=True)
|
||||
callsign = fields.String(allow_none=True, required=False)
|
||||
participant_id = fields.Int(allow_none=True, required=False)
|
||||
length = fields.Float(allow_none=True, required=False, validate=[validate.Range(min=0, max=1000, min_inclusive=False, max_inclusive=False)])
|
||||
width = fields.Float(allow_none=True, required=False, validate=[validate.Range(min=0, max=100, min_inclusive=False, max_inclusive=False)])
|
||||
is_tug = fields.Bool(allow_none=True, required=False, default=False)
|
||||
bollard_pull = fields.Int(allow_none=True, required=False)
|
||||
eni = fields.Int(allow_none=True, required=False)
|
||||
created = fields.DateTime(allow_none=True, required=False)
|
||||
modified = fields.DateTime(allow_none=True, required=False)
|
||||
deleted = fields.Bool(allow_none=True, required=False, default=False)
|
||||
|
||||
@validates("name")
|
||||
def validate_name(self, value):
|
||||
|
||||
Reference in New Issue
Block a user