From 05a70533c0e0ae284b433b235c47358776bd50d7 Mon Sep 17 00:00:00 2001 From: "yuri.boiko" Date: Fri, 19 Jul 2024 23:24:59 +0200 Subject: [PATCH] Add skip_none_values param --- sqlalchemy_serializer/serializer.py | 9 ++++++++- tests/conftest.py | 2 ++ tests/datatypes/test_enum.py | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/sqlalchemy_serializer/serializer.py b/sqlalchemy_serializer/serializer.py index 0ab1c97..aacd6f6 100644 --- a/sqlalchemy_serializer/serializer.py +++ b/sqlalchemy_serializer/serializer.py @@ -46,8 +46,12 @@ class SerializerMixin: decimal_format = "{}" # Serialize fields of the model defined as @property automatically + # TODO: Add this to the README file auto_serialize_properties: bool = False + # Skip None values + skip_none_values: bool = False + def get_tzinfo(self): """ Callback to make serializer aware of user's timezone. Should be redefined if needed @@ -68,6 +72,7 @@ def to_dict( tzinfo=None, decimal_format=None, serialize_types=None, + skip_none_values=None, ): """ Returns SQLAlchemy model's data in JSON compatible format @@ -93,13 +98,15 @@ def to_dict( decimal_format=decimal_format or self.decimal_format, tzinfo=tzinfo or self.get_tzinfo(), serialize_types=serialize_types or self.serialize_types, + skip_none_values=skip_none_values or self.skip_none_values, ) return s(self, only=only, extend=rules) Options = namedtuple( "Options", - "date_format datetime_format time_format decimal_format tzinfo serialize_types", + "date_format datetime_format time_format " + "decimal_format tzinfo serialize_types skip_none_values", ) diff --git a/tests/conftest.py b/tests/conftest.py index 400aa45..abae355 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -69,6 +69,7 @@ def func( decimal_format=DEFAULT_DECIMAL_FORMAT, tzinfo=None, serialize_types=(), + skip_none_values=None, ): return Serializer( date_format=date_format, @@ -77,6 +78,7 @@ def func( decimal_format=decimal_format, tzinfo=tzinfo, serialize_types=serialize_types, + skip_none_values=skip_none_values, ) return func diff --git a/tests/datatypes/test_enum.py b/tests/datatypes/test_enum.py index b136e50..ccef889 100644 --- a/tests/datatypes/test_enum.py +++ b/tests/datatypes/test_enum.py @@ -11,6 +11,7 @@ def default_options(): decimal_format="%.2f", tzinfo=None, serialize_types=None, + skip_none_values=None, )