From b88781c73cdd73144917f8d53bc77471df5e2d84 Mon Sep 17 00:00:00 2001 From: GalacticGlum Date: Tue, 7 Mar 2023 10:31:03 -0500 Subject: [PATCH 1/5] add enum field support --- marshmallow_mongoengine/conversion/fields.py | 1 + 1 file changed, 1 insertion(+) diff --git a/marshmallow_mongoengine/conversion/fields.py b/marshmallow_mongoengine/conversion/fields.py index 848931f..6799972 100644 --- a/marshmallow_mongoengine/conversion/fields.py +++ b/marshmallow_mongoengine/conversion/fields.py @@ -165,6 +165,7 @@ class Builder(MetaFieldBuilder): register_field(me.fields.ComplexDateTimeField, ma_fields.DateTime) register_field(me.fields.DateField, ma_fields.Date) register_field(me.fields.DateTimeField, ma_fields.DateTime) +register_field(me.fields.EnumField, ma_fields.Enum) register_field( me.fields.DecimalField, ma_fields.Decimal, From 1905f5343250dcb775243aafb3ec07d3fe5da9ad Mon Sep 17 00:00:00 2001 From: GalacticGlum Date: Tue, 7 Mar 2023 10:42:47 -0500 Subject: [PATCH 2/5] add field builder for enums --- marshmallow_mongoengine/conversion/fields.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/marshmallow_mongoengine/conversion/fields.py b/marshmallow_mongoengine/conversion/fields.py index 6799972..ee7c144 100644 --- a/marshmallow_mongoengine/conversion/fields.py +++ b/marshmallow_mongoengine/conversion/fields.py @@ -62,6 +62,16 @@ def _get_marshmallow_field_cls(self): ) +class EnumBuilder(MetaFieldBuilder): + AVAILABLE_PARAMS = () + MARSHMALLOW_FIELD_CLS = ma_fields.Enum + + def _get_marshmallow_field_cls(self): + return functools.partial( + self.MARSHMALLOW_FIELD_CLS, self.mongoengine_field.enum + ) + + class ReferenceBuilder(MetaFieldBuilder): AVAILABLE_PARAMS = () MARSHMALLOW_FIELD_CLS = ma_fields.Reference @@ -217,6 +227,7 @@ class Builder(MetaFieldBuilder): register_field_builder(me.fields.ListField, ListBuilder) register_field_builder(me.fields.MapField, MapBuilder) register_field_builder(me.fields.SortedListField, ListBuilder) +register_field_builder(me.fields.EnumField, EnumBuilder) # TODO: finish fields... # me.fields.GeoPointField: ma_fields.GeoPoint, # me.fields.PolygonField: ma_fields.Polygon, From ada293729f7a65b56002acb643a5a570a040eb21 Mon Sep 17 00:00:00 2001 From: GalacticGlum Date: Tue, 7 Mar 2023 10:44:36 -0500 Subject: [PATCH 3/5] remove call to register_field (old) --- marshmallow_mongoengine/conversion/fields.py | 1 - 1 file changed, 1 deletion(-) diff --git a/marshmallow_mongoengine/conversion/fields.py b/marshmallow_mongoengine/conversion/fields.py index ee7c144..5b93b47 100644 --- a/marshmallow_mongoengine/conversion/fields.py +++ b/marshmallow_mongoengine/conversion/fields.py @@ -175,7 +175,6 @@ class Builder(MetaFieldBuilder): register_field(me.fields.ComplexDateTimeField, ma_fields.DateTime) register_field(me.fields.DateField, ma_fields.Date) register_field(me.fields.DateTimeField, ma_fields.DateTime) -register_field(me.fields.EnumField, ma_fields.Enum) register_field( me.fields.DecimalField, ma_fields.Decimal, From 365af9abef0651095a3ac2763ba5e6b5ffdd8ac8 Mon Sep 17 00:00:00 2001 From: GalacticGlum Date: Tue, 7 Mar 2023 10:47:28 -0500 Subject: [PATCH 4/5] fix: no "enum" attribute on me.EnumField --- marshmallow_mongoengine/conversion/fields.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/marshmallow_mongoengine/conversion/fields.py b/marshmallow_mongoengine/conversion/fields.py index 5b93b47..a632f12 100644 --- a/marshmallow_mongoengine/conversion/fields.py +++ b/marshmallow_mongoengine/conversion/fields.py @@ -68,7 +68,7 @@ class EnumBuilder(MetaFieldBuilder): def _get_marshmallow_field_cls(self): return functools.partial( - self.MARSHMALLOW_FIELD_CLS, self.mongoengine_field.enum + self.MARSHMALLOW_FIELD_CLS, self.mongoengine_field._enum_cls ) From bf607a13853e224df35fe5ad6b0beba74c3795c4 Mon Sep 17 00:00:00 2001 From: Shon Verch Date: Mon, 24 Apr 2023 12:30:25 -0400 Subject: [PATCH 5/5] fix: enum field is not converted when it is used in a list --- marshmallow_mongoengine/conversion/fields.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/marshmallow_mongoengine/conversion/fields.py b/marshmallow_mongoengine/conversion/fields.py index a632f12..21e7a22 100644 --- a/marshmallow_mongoengine/conversion/fields.py +++ b/marshmallow_mongoengine/conversion/fields.py @@ -222,11 +222,11 @@ class Builder(MetaFieldBuilder): register_field( me.fields.URLField, ma_fields.URL, available_params=(params.LengthParam,) ) +register_field_builder(me.fields.EnumField, EnumBuilder) register_field_builder(me.fields.EmbeddedDocumentField, EmbeddedDocumentBuilder) register_field_builder(me.fields.ListField, ListBuilder) register_field_builder(me.fields.MapField, MapBuilder) register_field_builder(me.fields.SortedListField, ListBuilder) -register_field_builder(me.fields.EnumField, EnumBuilder) # TODO: finish fields... # me.fields.GeoPointField: ma_fields.GeoPoint, # me.fields.PolygonField: ma_fields.Polygon,