home
·
contact
·
privacy
projects
/
plomtask
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix disablers_for/enablers_for in GET_day breaking as_dict.
[plomtask]
/
plomtask
/
http.py
diff --git
a/plomtask/http.py
b/plomtask/http.py
index 7c7fbd408edeb47dd48b9a4a04f93beca085f70a..e1f5434bb2c1fb321a03c7343e022a24652e8978 100644
(file)
--- a/
plomtask/http.py
+++ b/
plomtask/http.py
@@
-17,7
+17,6
@@
from plomtask.db import DatabaseConnection, DatabaseFile
from plomtask.processes import Process, ProcessStep, ProcessStepsNode
from plomtask.conditions import Condition
from plomtask.todos import Todo
from plomtask.processes import Process, ProcessStep, ProcessStepsNode
from plomtask.conditions import Condition
from plomtask.todos import Todo
-from plomtask.db import BaseModel
TEMPLATES_DIR = 'templates'
TEMPLATES_DIR = 'templates'
@@
-42,15
+41,25
@@
class TaskServer(HTTPServer):
def ctx_to_json(ctx: dict[str, object]) -> str:
"""Render ctx into JSON string."""
def walk_ctx(node: object) -> Any:
def ctx_to_json(ctx: dict[str, object]) -> str:
"""Render ctx into JSON string."""
def walk_ctx(node: object) -> Any:
- if isinstance(node, BaseModel):
+ if hasattr(node, 'as_dict_into_reference'):
+ if hasattr(node, 'id_') and node.id_ is not None:
+ return node.as_dict_into_reference(library)
+ if hasattr(node, 'as_dict'):
return node.as_dict
if isinstance(node, (list, tuple)):
return [walk_ctx(x) for x in node]
return node.as_dict
if isinstance(node, (list, tuple)):
return [walk_ctx(x) for x in node]
+ if isinstance(node, dict):
+ d = {}
+ for k, v in node.items():
+ d[k] = walk_ctx(v)
+ return d
if isinstance(node, HandledException):
return str(node)
return node
if isinstance(node, HandledException):
return str(node)
return node
+ library: dict[str, dict[str | int, object]] = {}
for k, v in ctx.items():
ctx[k] = walk_ctx(v)
for k, v in ctx.items():
ctx[k] = walk_ctx(v)
+ ctx['_library'] = library
return json_dumps(ctx)
def render(self, ctx: dict[str, object], tmpl_name: str = '') -> str:
return json_dumps(ctx)
def render(self, ctx: dict[str, object], tmpl_name: str = '') -> str:
@@
-143,7
+152,7
@@
class TaskHandler(BaseHTTPRequestHandler):
tmpl_name: str,
code: int = 200
) -> None:
tmpl_name: str,
code: int = 200
) -> None:
- """Send
HTML
as proper HTTP response."""
+ """Send
ctx
as proper HTTP response."""
body = self.server.render(ctx, tmpl_name)
self.send_response(code)
for header_tuple in self.server.headers:
body = self.server.render(ctx, tmpl_name)
self.send_response(code)
for header_tuple in self.server.headers: