26 lines
712 B
Python
26 lines
712 B
Python
import bson
|
|
import marshmallow as ma
|
|
from marshmallow import fields as ma_fields
|
|
from umongo import fields
|
|
|
|
|
|
class BinaryField(fields.BaseField, ma_fields.Field):
|
|
default_error_messages = {"invalid": "Not a valid byte sequence."}
|
|
|
|
def _serialize(self, value, attr, data, **kwargs):
|
|
return bytes(value)
|
|
|
|
def _deserialize(self, value, attr, data, **kwargs):
|
|
if not isinstance(value, bytes):
|
|
self.fail("invalid")
|
|
return value
|
|
|
|
def _serialize_to_mongo(self, obj):
|
|
return bson.binary.Binary(obj)
|
|
|
|
def _deserialize_from_mongo(self, value):
|
|
return bytes(value)
|
|
|
|
|
|
class RawField(fields.BaseField, ma_fields.Raw):
|
|
pass
|