More to the foundation.

This commit is contained in:
Yaro Kasear 2025-09-30 15:14:11 -05:00
parent 8a3eb2c2ef
commit cab35b72ec

View file

@ -1,5 +1,6 @@
from datetime import datetime
from flask import Blueprint, render_template, abort, request, jsonify, current_app
from sqlalchemy.inspection import inspect
from typing import Any, Dict, List, Tuple, Callable, Optional
import crudkit
@ -9,7 +10,9 @@ ISO_DT_FORMATS = ("%Y-%m-%dT%H:%M:%S.%f", "%Y-%m-%dT%H:%M:%S", "%Y-%m-%d %H:%M",
bp_entry = Blueprint("entry", __name__)
ISO_DT_FORMATS = ("%Y-%m-%dT%H:%M:%S.%f", "%Y-%m-%dT%H:%M:%S", "%Y-%m-%d %H:%M", "%Y-%m-%d")
def filter_to_columns(data: dict, model_cls):
cols = {c.key for c in inspect(model_cls).mapper.columns}
return {k: v for k, v in data.items() if k in cols}
def _parse_dt_maybe(x: Any) -> Any:
if isinstance(x, datetime):
@ -355,7 +358,9 @@ def init_entry_routes(app):
service = crudkit.crud.get_service(cls)
item = service.get(id, params)
d = deep_diff(item.as_dict(), payload, ignore_keys={"id", "created_at", "updated_at"})
print(f"OLD = {item.as_dict()}\n\nNEW = {payload}\n\nDIFF = {d}")
patch = diff_to_patch(d)
clean_patch = filter_to_columns(patch, cls)
print(f"OLD = {item.as_dict()}\n\nNEW = {payload}\n\nDIFF = {d}\n\nPATCH = {patch}\n\nCLEAN PATCH = {clean_patch}")
return {"status": "success", "payload": payload}
except Exception as e: