|
|
|
@ -722,7 +722,7 @@ def _validate_value_with_model_field( |
|
|
|
def _get_multidict_value( |
|
|
|
field: ModelField, values: Mapping[str, Any], alias: Union[str, None] = None |
|
|
|
) -> Any: |
|
|
|
alias = alias or field.alias |
|
|
|
alias = alias or get_validation_alias(field) |
|
|
|
if is_sequence_field(field) and isinstance(values, (ImmutableMultiDict, Headers)): |
|
|
|
value = values.getlist(alias) |
|
|
|
else: |
|
|
|
@ -779,15 +779,13 @@ def request_params_to_args( |
|
|
|
field.field_info, "convert_underscores", default_convert_underscores |
|
|
|
) |
|
|
|
if convert_underscores: |
|
|
|
alias = ( |
|
|
|
field.alias |
|
|
|
if field.alias != field.name |
|
|
|
else field.name.replace("_", "-") |
|
|
|
) |
|
|
|
alias = get_validation_alias(field) |
|
|
|
if alias == field.name: |
|
|
|
alias = alias.replace("_", "-") |
|
|
|
value = _get_multidict_value(field, received_params, alias=alias) |
|
|
|
if value is not None: |
|
|
|
params_to_process[field.name] = value |
|
|
|
processed_keys.add(alias or field.alias) |
|
|
|
processed_keys.add(alias or get_validation_alias(field)) |
|
|
|
processed_keys.add(field.name) |
|
|
|
|
|
|
|
for key, value in received_params.items(): |
|
|
|
@ -811,7 +809,7 @@ def request_params_to_args( |
|
|
|
assert isinstance(field_info, (params.Param, temp_pydantic_v1_params.Param)), ( |
|
|
|
"Params must be subclasses of Param" |
|
|
|
) |
|
|
|
loc = (field_info.in_.value, field.alias) |
|
|
|
loc = (field_info.in_.value, get_validation_alias(field)) |
|
|
|
v_, errors_ = _validate_value_with_model_field( |
|
|
|
field=field, value=value, values=values, loc=loc |
|
|
|
) |
|
|
|
@ -900,7 +898,7 @@ async def _extract_form_body( |
|
|
|
tg.start_soon(process_fn, sub_value.read) |
|
|
|
value = serialize_sequence_value(field=field, value=results) |
|
|
|
if value is not None: |
|
|
|
values[field.alias] = value |
|
|
|
values[get_validation_alias(field)] = value |
|
|
|
for key, value in received_body.items(): |
|
|
|
if key not in values: |
|
|
|
values[key] = value |
|
|
|
@ -938,11 +936,11 @@ async def request_body_to_args( |
|
|
|
) |
|
|
|
return {first_field.name: v_}, errors_ |
|
|
|
for field in body_fields: |
|
|
|
loc = ("body", field.alias) |
|
|
|
loc = ("body", get_validation_alias(field)) |
|
|
|
value: Optional[Any] = None |
|
|
|
if body_to_process is not None: |
|
|
|
try: |
|
|
|
value = body_to_process.get(field.alias) |
|
|
|
value = body_to_process.get(get_validation_alias(field)) |
|
|
|
# If the received body is a list, not a dict |
|
|
|
except AttributeError: |
|
|
|
errors.append(get_missing_field_error(loc)) |
|
|
|
@ -1021,3 +1019,8 @@ def get_body_field( |
|
|
|
field_info=BodyFieldInfo(**BodyFieldInfo_kwargs), |
|
|
|
) |
|
|
|
return final_field |
|
|
|
|
|
|
|
|
|
|
|
def get_validation_alias(field: ModelField) -> str: |
|
|
|
va = getattr(field, "validation_alias", None) |
|
|
|
return va or field.alias |
|
|
|
|