Improving the Work Item rendering.

This commit is contained in:
Yaro Kasear 2025-10-02 09:55:53 -05:00
parent 244f0945bb
commit 16d5f2ab98
6 changed files with 115 additions and 20 deletions

View file

@ -10,7 +10,7 @@ from sqlalchemy.orm.attributes import InstrumentedAttribute
from sqlalchemy.sql import operators
from sqlalchemy.sql.elements import UnaryExpression, ColumnElement
from crudkit.core import deep_diff, diff_to_patch, filter_to_columns, normalize_payload
from crudkit.core import to_jsonable, deep_diff, diff_to_patch, filter_to_columns, normalize_payload
from crudkit.core.base import Version
from crudkit.core.spec import CRUDSpec
from crudkit.core.types import OrderSpec, SeekWindow
@ -731,19 +731,23 @@ class CRUDService(Generic[T]):
def _log_version(self, change_type: str, obj: T, actor=None, metadata: dict | None = None):
session = self.session
snapshot = {}
try:
snapshot = obj.as_dict()
except Exception:
snapshot = {"error": "serialize failed"}
snapshot = {}
try:
snapshot = obj.as_dict()
except Exception:
snapshot = {"error": "serialize failed"}
version = Version(
model_name=self.model.__name__,
object_id=obj.id,
change_type=change_type,
data=snapshot,
actor=str(actor) if actor else None,
meta=metadata or None,
)
session.add(version)
session.commit()
version = Version(
model_name=self.model.__name__,
object_id=obj.id,
change_type=change_type,
data=to_jsonable(snapshot),
actor=str(actor) if actor else None,
meta=to_jsonable(metadata) if metadata else None,
)
session.add(version)
session.commit()
except Exception as e:
log.warning(f"Version logging failed for {self.model.__name__} id={getattr(obj, "id", "?")}: {str(e)}")
session.rollback()