Browse Source

frappe.as_json

version-14
Anand Doshi 10 years ago
parent
commit
c10e3ec75e
7 changed files with 20 additions and 18 deletions
  1. +5
    -2
      frappe/__init__.py
  2. +1
    -1
      frappe/core/page/data_import_tool/data_import_tool.py
  3. +7
    -7
      frappe/frappeclient.py
  4. +1
    -2
      frappe/model/base_document.py
  5. +1
    -1
      frappe/modules/export_file.py
  6. +1
    -1
      frappe/templates/pages/desk.py
  7. +4
    -4
      frappe/utils/data.py

+ 5
- 2
frappe/__init__.py View File

@@ -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


+ 1
- 1
frappe/core/page/data_import_tool/data_import_tool.py View File

@@ -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):


+ 7
- 7
frappe/frappeclient.py View File

@@ -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)


+ 1
- 2
frappe/model/base_document.py View File

@@ -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


+ 1
- 1
frappe/modules/export_file.py View File

@@ -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':


+ 1
- 1
frappe/templates/pages/desk.py View File

@@ -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
} }

+ 4
- 4
frappe/utils/data.py View File

@@ -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")




Loading…
Cancel
Save