This commit is contained in:
parent
1af63dee81
commit
7c48a6a1dc
|
@ -54,22 +54,25 @@ class Base(declarative_base()):
|
||||||
|
|
||||||
def dict(self) -> Dict[str, Any]:
|
def dict(self) -> Dict[str, Any]:
|
||||||
column_names = filter(lambda x: x not in FILTERED_FIELDS, self.__table__.columns.keys())
|
column_names = filter(lambda x: x not in FILTERED_FIELDS, self.__table__.columns.keys())
|
||||||
|
data = {}
|
||||||
try:
|
try:
|
||||||
data = {}
|
for column_name in column_names:
|
||||||
for c in column_names:
|
value = getattr(self, column_name)
|
||||||
value = getattr(self, c)
|
# Check if the value is JSON and decode it if necessary
|
||||||
if isinstance(value, JSON):
|
if isinstance(value, (str, bytes)) and isinstance(self.__table__.columns[column_name].type, JSON):
|
||||||
# save JSON column as dict
|
try:
|
||||||
data[c] = json.loads(str(value))
|
data[column_name] = json.loads(value)
|
||||||
|
except (TypeError, json.JSONDecodeError) as e:
|
||||||
|
logger.error(f"Error decoding JSON for column '{column_name}': {e}")
|
||||||
|
data[column_name] = value
|
||||||
else:
|
else:
|
||||||
data[c] = value
|
data[column_name] = value
|
||||||
# Add synthetic field .stat
|
# Add synthetic field .stat if it exists
|
||||||
if hasattr(self, "stat"):
|
if hasattr(self, "stat"):
|
||||||
data["stat"] = self.stat
|
data["stat"] = self.stat
|
||||||
return data
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Error occurred while converting object to dictionary: {e}")
|
logger.error(f"Error occurred while converting object to dictionary: {e}")
|
||||||
return {}
|
return data
|
||||||
|
|
||||||
def update(self, values: Dict[str, Any]) -> None:
|
def update(self, values: Dict[str, Any]) -> None:
|
||||||
for key, value in values.items():
|
for key, value in values.items():
|
||||||
|
|
Loading…
Reference in New Issue
Block a user