[fix] export_json

This commit is contained in:
Rushabh Mehta 2015-02-22 22:31:52 +05:30
parent 7cad548270
commit 3bdd69fa61
9 changed files with 38 additions and 39 deletions

View file

@ -744,6 +744,7 @@ def copy_doc(doc, ignore_no_copy=True):
d = doc
newdoc = get_doc(copy.deepcopy(d))
newdoc.name = None
newdoc.set("__islocal", 1)
newdoc.owner = None

View file

@ -271,7 +271,7 @@ def setup_utilities(parser):
# import/export
parser.add_argument("--export_doc", nargs=2, metavar=('"DOCTYPE"', '"DOCNAME"'))
parser.add_argument("--export_doclist", nargs=3, metavar=("DOCTYPE", "NAME", "PATH"),
parser.add_argument("--export_json", nargs=3, metavar=("DOCTYPE", "NAME", "PATH"),
help="""Export doclist as json to the given path, use '-' as name for Singles.""")
parser.add_argument("--export_csv", nargs=2, metavar=("DOCTYPE", "PATH"),
help="""Dump DocType as csv""")
@ -699,7 +699,7 @@ def export_doc(doctype, docname):
frappe.destroy()
@cmd
def export_doclist(doctype, name, path):
def export_json(doctype, name, path):
from frappe.core.page.data_import_tool import data_import_tool
frappe.connect()
data_import_tool.export_json(doctype, name, path)

View file

@ -8,7 +8,7 @@
{
"fieldname": "label_and_type",
"fieldtype": "Section Break",
"label": "Label and Type",
"label": "",
"permlevel": 0
},
{
@ -314,7 +314,7 @@
"in_dialog": 1,
"issingle": 0,
"istable": 1,
"modified": "2015-02-19 01:06:59.836515",
"modified": "2015-02-22 11:31:07.467882",
"modified_by": "Administrator",
"module": "Core",
"name": "DocField",

View file

@ -4,7 +4,7 @@
import frappe
import unittest
test_records = frappe.get_test_records('{doctype}')
# test_records = frappe.get_test_records('{doctype}')
class Test{classname}(unittest.TestCase):
pass

View file

@ -1,6 +0,0 @@
[
{{
"doctype": "{doctype}",
"name": "_Test {doctype} 1"
}}
]

View file

@ -43,23 +43,23 @@ def export_csv(doctype, path):
get_template(doctype=doctype, all_doctypes="Yes", with_data="Yes")
csvfile.write(frappe.response.result.encode("utf-8"))
def export_json(doctype, name, path):
def export_json(doctype, path):
from frappe.utils.response import json_handler
docs = frappe.get_list(doctype, fields=["*"], limit_page_length=None)
for doc in docs:
doc['doctype'] = doctype
out = []
for doc in frappe.get_all(doctype, fields=["name"], limit_page_length=None):
out.append(frappe.get_doc(doctype.doc.name).as_dict())
with open(path, "w") as outfile:
outfile.write(json.dumps(docs, default=json_handler, indent=1, sort_keys=True))
outfile.write(json.dumps(out, default=json_handler, indent=1, sort_keys=True))
@frappe.whitelist()
def export_fixture(doctype, name, app):
def export_fixture(doctype, app):
if frappe.session.user != "Administrator":
raise frappe.PermissionError
if not os.path.exists(frappe.get_app_path(app, "fixtures")):
os.mkdir(frappe.get_app_path(app, "fixtures"))
export_json(doctype, name, frappe.get_app_path(app, "fixtures", frappe.scrub(name) + ".json"))
export_json(doctype, frappe.get_app_path(app, "fixtures", frappe.scrub(doctype) + ".json"))
def import_doc(path, overwrite=False, ignore_links=False, ignore_insert=False, insert=False, submit=False):

View file

@ -405,6 +405,9 @@ class Document(BaseDocument):
for fieldname, msg in missing:
msgprint(msg)
if frappe.flags.print_messages:
print self.as_dict()
raise frappe.MandatoryError(", ".join((each[0] for each in missing)))
def _validate_links(self):

View file

@ -22,14 +22,13 @@ def main(app=None, module=None, doctype=None, verbose=False, tests=(), force=Fal
# workaround! since there is no separate test db
frappe.clear_cache()
set_test_email_config()
if verbose:
print 'Running "before_tests" hooks'
for fn in frappe.get_hooks("before_tests", app_name=app):
frappe.get_attr(fn)()
set_test_email_config()
if doctype:
ret = run_tests_for_doctype(doctype, verbose=verbose, tests=tests, force=force)
elif module:
@ -209,6 +208,7 @@ def make_test_objects(doctype, test_records, verbose=None):
doc["doctype"] = doctype
d = frappe.copy_doc(doc)
if doc.get('name'):
d.name = doc.get('name')
@ -224,6 +224,8 @@ def make_test_objects(doctype, test_records, verbose=None):
docstatus = d.docstatus
d.docstatus = 0
d.run_method("before_test_insert")
try:
d.insert()

View file

@ -3,25 +3,24 @@
// update parent select
frappe.ui.form.on("Website Settings", "refresh", function(frm) {
if(user==="Administrator") {
frm.add_custom_button("Export to Fixtures", function() {
frappe.prompt({fieldname:"app", fieldtype:"Data", label:__("App Name"), reqd:1}, function(data) {
frappe.call({
method: "frappe.core.page.data_import_tool.data_import_tool.export_fixture",
args: {
app: data.app,
doctype:"Website Settings",
name:"Website Settings",
},
callback: function(r) {
if(!r.exc) { msgprint(__("Exported")); }
}
})
})
}, null, "btn-default")
}
})
// frappe.ui.form.on("Website Settings", "refresh", function(frm) {
// if(user==="Administrator") {
// frm.add_custom_button("Export to Fixtures", function() {
// frappe.prompt({fieldname:"app", fieldtype:"Data", label:__("App Name"), reqd:1}, function(data) {
// frappe.call({
// method: "frappe.core.page.data_import_tool.data_import_tool.export_fixture",
// args: {
// app: data.app,
// doctype:"Website Settings"
// },
// callback: function(r) {
// if(!r.exc) { msgprint(__("Exported")); }
// }
// })
// })
// }, null, "btn-default")
// }
// })
$.extend(cur_frm.cscript, {
refresh: function(doc) {