[System] Models: Do not export optional, not set, parameters.
This commit is contained in:
parent
a6a1de19de
commit
24418f5bcb
|
@ -1,4 +1,6 @@
|
||||||
|
import sys
|
||||||
import datetime
|
import datetime
|
||||||
|
|
||||||
from sqlalchemy.types import DateTime, TypeDecorator
|
from sqlalchemy.types import DateTime, TypeDecorator
|
||||||
|
|
||||||
|
|
||||||
|
@ -7,6 +9,15 @@ class ModelSerializeMixin:
|
||||||
Ignores private and protected members as well as members marked as not to publish (name ends with _)
|
Ignores private and protected members as well as members marked as not to publish (name ends with _)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
def __is_optional(self, param):
|
||||||
|
if sys.version_info < (3, 8):
|
||||||
|
return False
|
||||||
|
|
||||||
|
import typing
|
||||||
|
if typing.get_origin(self.__class__.__annotations__[param]) is typing.Union and \
|
||||||
|
typing.get_args(self.__class__.__annotations__[param])[1] is None:
|
||||||
|
return getattr(self, param) is None
|
||||||
|
|
||||||
def serialize(self):
|
def serialize(self):
|
||||||
"""Serialize class to dict
|
"""Serialize class to dict
|
||||||
Returns:
|
Returns:
|
||||||
|
@ -15,7 +26,7 @@ class ModelSerializeMixin:
|
||||||
d = {
|
d = {
|
||||||
param: getattr(self, param)
|
param: getattr(self, param)
|
||||||
for param in self.__class__.__annotations__
|
for param in self.__class__.__annotations__
|
||||||
if not param.startswith("_") and not param.endswith("_")
|
if not param.startswith("_") and not param.endswith("_") and not self.__is_optional(param)
|
||||||
}
|
}
|
||||||
if len(d) == 1:
|
if len(d) == 1:
|
||||||
key, value = d.popitem()
|
key, value = d.popitem()
|
||||||
|
|
Loading…
Reference in New Issue