From 05472590505b5c55b1b050a05cee8c45c3aa4f9d Mon Sep 17 00:00:00 2001 From: collerek Date: Tue, 10 Nov 2020 11:34:04 +0100 Subject: [PATCH] move include and exclude checks --- ormar/models/newbasemodel.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/ormar/models/newbasemodel.py b/ormar/models/newbasemodel.py index 7705b7c..4cb67fa 100644 --- a/ormar/models/newbasemodel.py +++ b/ormar/models/newbasemodel.py @@ -178,13 +178,22 @@ class NewBaseModel(pydantic.BaseModel, ModelTableProxy, metaclass=ModelMetaclass self._orm.remove_parent(self, name) @classmethod - def get_properties(cls) -> List[str]: - return [ + def get_properties( + cls, + include: Union["AbstractSetIntStr", "MappingIntStrAny"] = None, + exclude: Union["AbstractSetIntStr", "MappingIntStrAny"] = None, + ) -> List[str]: + props = [ prop for prop in dir(cls) if isinstance(getattr(cls, prop), property) and prop not in ("__values__", "__fields__", "fields", "pk_column") ] + if include: + props = [prop for prop in props if prop in include] + if exclude: + props = [prop for prop in props if prop not in exclude] + return props def dict( # noqa A003 self, @@ -226,11 +235,7 @@ class NewBaseModel(pydantic.BaseModel, ModelTableProxy, metaclass=ModelMetaclass dict_instance[field] = None # include model properties as fields - props = self.get_properties() - if include: - props = [prop for prop in props if prop in include] - if exclude: - props = [prop for prop in props if prop not in exclude] + props = self.get_properties(include=include, exclude=exclude) if props: dict_instance.update({prop: getattr(self, prop) for prop in props})