@@ -859,14 +859,17 @@ def get_all(doctype, *args, **kwargs): | |||||
def add_version(doc): | def add_version(doc): | ||||
"""Insert a new **Version** of the given document. | """Insert a new **Version** of the given document. | ||||
A **Version** is a JSON dump of the current document state.""" | A **Version** is a JSON dump of the current document state.""" | ||||
from frappe.utils.response import json_handler | |||||
get_doc({ | get_doc({ | ||||
"doctype": "Version", | "doctype": "Version", | ||||
"ref_doctype": doc.doctype, | "ref_doctype": doc.doctype, | ||||
"docname": doc.name, | "docname": doc.name, | ||||
"doclist_json": json.dumps(doc.as_dict(), indent=1, sort_keys=True, default=json_handler) | |||||
"doclist_json": as_json(doc.as_dict()) | |||||
}).insert(ignore_permissions=True) | }).insert(ignore_permissions=True) | ||||
def as_json(obj): | |||||
from frappe.utils.response import json_handler | |||||
return json.dumps(obj, indent=1, sort_keys=True, default=json_handler) | |||||
def get_test_records(doctype): | def get_test_records(doctype): | ||||
"""Returns list of objects from `test_records.json` in the given doctype's folder.""" | """Returns list of objects from `test_records.json` in the given doctype's folder.""" | ||||
from frappe.modules import get_doctype_module, get_module_path | from frappe.modules import get_doctype_module, get_module_path | ||||
@@ -66,7 +66,7 @@ def export_json(doctype, path, filters=None): | |||||
out.append(frappe.get_doc(doctype, doc.name).as_dict()) | out.append(frappe.get_doc(doctype, doc.name).as_dict()) | ||||
post_process(out) | post_process(out) | ||||
with open(path, "w") as outfile: | with open(path, "w") as outfile: | ||||
outfile.write(json.dumps(out, default=json_handler, indent=1, sort_keys=True)) | |||||
outfile.write(frappe.as_json(out)) | |||||
@frappe.whitelist() | @frappe.whitelist() | ||||
def export_fixture(doctype, app): | def export_fixture(doctype, app): | ||||
@@ -55,18 +55,18 @@ class FrappeClient(object): | |||||
def insert(self, doc): | def insert(self, doc): | ||||
res = self.session.post(self.url + "/api/resource/" + doc.get("doctype"), | res = self.session.post(self.url + "/api/resource/" + doc.get("doctype"), | ||||
data={"data":json.dumps(doc)}, verify=self.verify) | |||||
data={"data":frappe.as_json(doc)}, verify=self.verify) | |||||
return self.post_process(res) | return self.post_process(res) | ||||
def update(self, doc): | def update(self, doc): | ||||
url = self.url + "/api/resource/" + doc.get("doctype") + "/" + doc.get("name") | url = self.url + "/api/resource/" + doc.get("doctype") + "/" + doc.get("name") | ||||
res = self.session.put(url, data={"data":json.dumps(doc)}, verify=self.verify) | |||||
res = self.session.put(url, data={"data":frappe.as_json(doc)}, verify=self.verify) | |||||
return self.post_process(res) | return self.post_process(res) | ||||
def bulk_update(self, docs): | def bulk_update(self, docs): | ||||
return self.post_request({ | return self.post_request({ | ||||
"cmd": "frappe.client.bulk_update", | "cmd": "frappe.client.bulk_update", | ||||
"docs": json.dumps(docs) | |||||
"docs": frappe.as_json(docs) | |||||
}) | }) | ||||
def delete(self, doctype, name): | def delete(self, doctype, name): | ||||
@@ -79,7 +79,7 @@ class FrappeClient(object): | |||||
def submit(self, doclist): | def submit(self, doclist): | ||||
return self.post_request({ | return self.post_request({ | ||||
"cmd": "frappe.client.submit", | "cmd": "frappe.client.submit", | ||||
"doclist": json.dumps(doclist) | |||||
"doclist": frappe.as_json(doclist) | |||||
}) | }) | ||||
def get_value(self, doctype, fieldname=None, filters=None): | def get_value(self, doctype, fieldname=None, filters=None): | ||||
@@ -87,7 +87,7 @@ class FrappeClient(object): | |||||
"cmd": "frappe.client.get_value", | "cmd": "frappe.client.get_value", | ||||
"doctype": doctype, | "doctype": doctype, | ||||
"fieldname": fieldname or "name", | "fieldname": fieldname or "name", | ||||
"filters": json.dumps(filters) | |||||
"filters": frappe.as_json(filters) | |||||
}) | }) | ||||
def set_value(self, doctype, docname, fieldname, value): | def set_value(self, doctype, docname, fieldname, value): | ||||
@@ -110,8 +110,8 @@ class FrappeClient(object): | |||||
params = {} | params = {} | ||||
if filters: | if filters: | ||||
params["filters"] = json.dumps(filters) | params["filters"] = json.dumps(filters) | ||||
if fields: | |||||
params["fields"] = json.dumps(fields) | |||||
if fields: | |||||
params["fields"] = json.dumps(fields) | |||||
res = self.session.get(self.url + "/api/resource/" + doctype + "/" + name, | res = self.session.get(self.url + "/api/resource/" + doctype + "/" + name, | ||||
params=params, verify=self.verify) | params=params, verify=self.verify) | ||||
@@ -217,8 +217,7 @@ class BaseDocument(object): | |||||
return frappe._dict(doc) | return frappe._dict(doc) | ||||
def as_json(self): | def as_json(self): | ||||
from frappe.utils.response import json_handler | |||||
return json.dumps(self.as_dict(), indent=1, sort_keys=True, default=json_handler) | |||||
return frappe.as_json(self.as_dict()) | |||||
def get_table_field_doctype(self, fieldname): | def get_table_field_doctype(self, fieldname): | ||||
return self.meta.get_field(fieldname).options | return self.meta.get_field(fieldname).options | ||||
@@ -41,7 +41,7 @@ def write_document_file(doc, record_module=None, create_init=None): | |||||
# write the data file | # write the data file | ||||
fname = (doc.doctype in lower_case_files_for and scrub(doc.name)) or doc.name | fname = (doc.doctype in lower_case_files_for and scrub(doc.name)) or doc.name | ||||
with open(os.path.join(folder, fname +".json"),'w+') as txtfile: | with open(os.path.join(folder, fname +".json"),'w+') as txtfile: | ||||
txtfile.write(json.dumps(newdoc, indent=1, sort_keys=True)) | |||||
txtfile.write(frappe.as_json(newdoc)) | |||||
def get_module_name(doc): | def get_module_name(doc): | ||||
if doc.doctype == 'Module Def': | if doc.doctype == 'Module Def': | ||||
@@ -27,6 +27,6 @@ def get_context(context): | |||||
"desk.min.js"))), | "desk.min.js"))), | ||||
"include_js": hooks["app_include_js"], | "include_js": hooks["app_include_js"], | ||||
"include_css": hooks["app_include_css"], | "include_css": hooks["app_include_css"], | ||||
"boot": json.dumps(boot, default=json_handler, indent=1, sort_keys=True), | |||||
"boot": frappe.as_json(boot), | |||||
"background_image": boot.user.background_image or boot.default_background_image | "background_image": boot.user.background_image or boot.default_background_image | ||||
} | } |
@@ -29,7 +29,7 @@ def getdate(string_date): | |||||
return datetime.datetime.strptime(string_date, "%Y-%m-%d").date() | return datetime.datetime.strptime(string_date, "%Y-%m-%d").date() | ||||
def get_datetime(datetime_str): | def get_datetime(datetime_str): | ||||
if isinstance(datetime_str, datetime.datetime): | |||||
if isinstance(datetime_str, (datetime.datetime, datetime.timedelta)): | |||||
return datetime_str | return datetime_str | ||||
elif isinstance(datetime_str, datetime.date): | elif isinstance(datetime_str, datetime.date): | ||||
@@ -97,17 +97,17 @@ def _get_user_time_zone(): | |||||
user_time_zone = None | user_time_zone = None | ||||
if frappe.session.user: | if frappe.session.user: | ||||
user_time_zone = frappe.db.get_value("User", frappe.session.user, "time_zone") | user_time_zone = frappe.db.get_value("User", frappe.session.user, "time_zone") | ||||
if not user_time_zone: | if not user_time_zone: | ||||
user_time_zone = (frappe.db.get_single_value("System Settings", "time_zone") | user_time_zone = (frappe.db.get_single_value("System Settings", "time_zone") | ||||
or "Asia/Kolkata") | or "Asia/Kolkata") | ||||
return user_time_zone | return user_time_zone | ||||
def get_user_time_zone(): | def get_user_time_zone(): | ||||
if frappe.local.flags.in_test: | if frappe.local.flags.in_test: | ||||
return _get_user_time_zone() | return _get_user_time_zone() | ||||
if getattr(frappe.local, "user_time_zone", None) is None: | if getattr(frappe.local, "user_time_zone", None) is None: | ||||
frappe.local.user_time_zone = frappe.cache().get_value("time_zone") | frappe.local.user_time_zone = frappe.cache().get_value("time_zone") | ||||