Commit b8831ddb by aagusti

buttons

1 parent 4a8316ba
import logging
import traceback
import colander
import deform.widget
from icecream import ic
log = logging.getLogger(__name__)
field_widgets = (deform.widget.TextInputWidget,
......@@ -33,58 +30,70 @@ field_widgets = (deform.widget.TextInputWidget,
field2remove = (
"_parent", "counter", "bindings", "resource_registry", "renderer",
"validator"
"validator", "request"
)
def form2dict(obj):
d = {}
if hasattr(obj, "__dict__"):
d = {}
for k, v in obj.__dict__.items():
d[k] = v
else:
d = obj
ic(d)
for k, v in d.items():
ic(k,v, type(v))
try:
d[k] = form2dict(v)
elif isinstance(obj, tuple):
d = []
for k in obj:
d.append(form2dict(k))
d = tuple(d)
elif isinstance(obj, list):
d = []
for k in obj:
d.append(form2dict(k))
elif isinstance(obj, dict):
d = {}
for k, v in obj.items():
if k in field2remove:
d[k] = ""
elif type(v) == colander.Invalid:
d[k] = v.asdict()
elif type(v) == type(colander.null):
d[k] = None
elif isinstance(v, dict):
else:
d[k] = form2dict(v)
elif isinstance(v, list):
lv = []
for l in v:
if l and hasattr(l, "__dict__") and \
getattr(l, "__dict__", str(l)):
lv.append(form2dict(l))
d[k] = lv
elif v and hasattr(v, "__dict__") and \
getattr(v, "__dict__", str(v)):
log.debug(v)
d[k] = form2dict(v)
elif getattr(v, "__dict__", str(v)) == {}:
d[k] = {}
# elif getattr(v, "__dict__", str(v)):
# d[k] = form2dict(v)
# try:
if k == "widget" and type(v) in field_widgets:
d[k].update({"template": v.template})
if k == "missing" and v == colander.drop:
d[k] = True
except Exception as e:
log.error(e)
traceback.print_exc()
ic(d)
# elif type(v) == colander.Invalid:
# d[k] = v.asdict()
# elif type(v) == type(colander.null):
# d[k] = None
# elif isinstance(v, dict):
# d[k] = form2dict(v)
# elif isinstance(v, list):
# lv = []
# for l in v:
# if l and hasattr(l, "__dict__") and \
# getattr(l, "__dict__", str(l)):
# lv.append(form2dict(l))
# d[k] = lv
#
# elif v and hasattr(v, "__dict__") and \
# getattr(v, "__dict__", str(v)):
# log.debug(v)
# d[k] = form2dict(v)
#
# elif getattr(v, "__dict__", str(v)) == {}:
# d[k] = {}
#
#
# # elif getattr(v, "__dict__", str(v)):
# # d[k] = form2dict(v)
#
# if k == "widget" and type(v) in field_widgets:
# d[k].update({"template": v.template})
#
# if k == "missing" and v == colander.drop:
# d[k] = True
# except Exception as e:
# log.error(e)
# traceback.print_exc()
else:
d = obj
return d
......@@ -118,7 +127,7 @@ def formfield2dict(obj):
buttons=resp["buttons"],
url=resp.get("url"),
table=table,
method = resp.get("method")
method=resp.get("method")
)
log.debug(result)
return result
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!