Provision to print a complex object for all 'bench execute' commands (#4908)
This commit is contained in:
parent
8a3c4891ae
commit
43941d40d7
2 changed files with 18 additions and 7 deletions
|
|
@ -7,6 +7,7 @@ from distutils.spawn import find_executable
|
|||
import frappe
|
||||
from frappe.commands import pass_context, get_site
|
||||
from frappe.utils import update_progress_bar
|
||||
from frappe.utils.response import json_handler
|
||||
|
||||
@click.command('build')
|
||||
@click.option('--make-copy', is_flag=True, default=False, help='Copy the files instead of symlinking')
|
||||
|
|
@ -123,7 +124,7 @@ def execute(context, method, args=None, kwargs=None):
|
|||
finally:
|
||||
frappe.destroy()
|
||||
if ret:
|
||||
print(json.dumps(ret))
|
||||
print(json.dumps(ret, default=json_handler))
|
||||
|
||||
|
||||
@click.command('add-to-email-queue')
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
from __future__ import unicode_literals
|
||||
import json
|
||||
import datetime
|
||||
from decimal import Decimal
|
||||
import mimetypes
|
||||
import os
|
||||
import frappe
|
||||
|
|
@ -104,18 +105,27 @@ def json_handler(obj):
|
|||
"""serialize non-serializable data for json"""
|
||||
# serialize date
|
||||
import collections
|
||||
if isinstance(obj, (datetime.date, datetime.timedelta, datetime.datetime)):
|
||||
|
||||
if isinstance(obj, (datetime.date, datetime.timedelta, datetime.datetime)):
|
||||
return text_type(obj)
|
||||
elif isinstance(obj, LocalProxy):
|
||||
|
||||
if isinstance(obj, Decimal):
|
||||
return text_type(obj)
|
||||
elif isinstance(obj, frappe.model.document.BaseDocument):
|
||||
|
||||
elif isinstance(obj, LocalProxy):
|
||||
return text_type(obj)
|
||||
|
||||
elif isinstance(obj, frappe.model.document.BaseDocument):
|
||||
doc = obj.as_dict(no_nulls=True)
|
||||
return doc
|
||||
elif isinstance(obj, collections.Iterable):
|
||||
|
||||
elif isinstance(obj, collections.Iterable):
|
||||
return list(obj)
|
||||
elif type(obj)==type or isinstance(obj, Exception):
|
||||
|
||||
elif type(obj)==type or isinstance(obj, Exception):
|
||||
return repr(obj)
|
||||
else:
|
||||
|
||||
else:
|
||||
raise TypeError("""Object of type %s with value of %s is not JSON serializable""" % \
|
||||
(type(obj), repr(obj)))
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue