"""Schema for fields with ordering.""" __all__ = [ 'OrderByFieldSchema', ] import marshmallow from marshmallow import fields from marshmallow import pre_load from marshmallow_enum import EnumField from backend.enums.query import SortingOrderEnum class OrderByFieldSchema(marshmallow.Schema): """Schema for field with ordering.""" column_name = fields.Str(required=True) order = EnumField(SortingOrderEnum, by_value=True) @pre_load def preprocess_custom_field(self, data, **kwargs): """Prepare and validate order field. Args: data: input fields. **kwargs: additional arguments. Returns: prepared and validated fields. """ if data.get('order'): data['order'] = SortingOrderEnum(data['order'].lower()) else: data['order'] = SortingOrderEnum.ASC return data