More to the foundation.
This commit is contained in:
parent
8a3eb2c2ef
commit
cab35b72ec
1 changed files with 7 additions and 2 deletions
|
|
@ -1,5 +1,6 @@
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from flask import Blueprint, render_template, abort, request, jsonify, current_app
|
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
|
from typing import Any, Dict, List, Tuple, Callable, Optional
|
||||||
|
|
||||||
import crudkit
|
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__)
|
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:
|
def _parse_dt_maybe(x: Any) -> Any:
|
||||||
if isinstance(x, datetime):
|
if isinstance(x, datetime):
|
||||||
|
|
@ -355,7 +358,9 @@ def init_entry_routes(app):
|
||||||
service = crudkit.crud.get_service(cls)
|
service = crudkit.crud.get_service(cls)
|
||||||
item = service.get(id, params)
|
item = service.get(id, params)
|
||||||
d = deep_diff(item.as_dict(), payload, ignore_keys={"id", "created_at", "updated_at"})
|
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}
|
return {"status": "success", "payload": payload}
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue