@@ -744,6 +744,7 @@ def copy_doc(doc, ignore_no_copy=True): | |||||
d = doc | d = doc | ||||
newdoc = get_doc(copy.deepcopy(d)) | newdoc = get_doc(copy.deepcopy(d)) | ||||
newdoc.name = None | newdoc.name = None | ||||
newdoc.set("__islocal", 1) | newdoc.set("__islocal", 1) | ||||
newdoc.owner = None | newdoc.owner = None | ||||
@@ -271,7 +271,7 @@ def setup_utilities(parser): | |||||
# import/export | # import/export | ||||
parser.add_argument("--export_doc", nargs=2, metavar=('"DOCTYPE"', '"DOCNAME"')) | 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.""") | help="""Export doclist as json to the given path, use '-' as name for Singles.""") | ||||
parser.add_argument("--export_csv", nargs=2, metavar=("DOCTYPE", "PATH"), | parser.add_argument("--export_csv", nargs=2, metavar=("DOCTYPE", "PATH"), | ||||
help="""Dump DocType as csv""") | help="""Dump DocType as csv""") | ||||
@@ -699,7 +699,7 @@ def export_doc(doctype, docname): | |||||
frappe.destroy() | frappe.destroy() | ||||
@cmd | @cmd | ||||
def export_doclist(doctype, name, path): | |||||
def export_json(doctype, name, path): | |||||
from frappe.core.page.data_import_tool import data_import_tool | from frappe.core.page.data_import_tool import data_import_tool | ||||
frappe.connect() | frappe.connect() | ||||
data_import_tool.export_json(doctype, name, path) | data_import_tool.export_json(doctype, name, path) | ||||
@@ -8,7 +8,7 @@ | |||||
{ | { | ||||
"fieldname": "label_and_type", | "fieldname": "label_and_type", | ||||
"fieldtype": "Section Break", | "fieldtype": "Section Break", | ||||
"label": "Label and Type", | |||||
"label": "", | |||||
"permlevel": 0 | "permlevel": 0 | ||||
}, | }, | ||||
{ | { | ||||
@@ -314,7 +314,7 @@ | |||||
"in_dialog": 1, | "in_dialog": 1, | ||||
"issingle": 0, | "issingle": 0, | ||||
"istable": 1, | "istable": 1, | ||||
"modified": "2015-02-19 01:06:59.836515", | |||||
"modified": "2015-02-22 11:31:07.467882", | |||||
"modified_by": "Administrator", | "modified_by": "Administrator", | ||||
"module": "Core", | "module": "Core", | ||||
"name": "DocField", | "name": "DocField", | ||||
@@ -4,7 +4,7 @@ | |||||
import frappe | import frappe | ||||
import unittest | import unittest | ||||
test_records = frappe.get_test_records('{doctype}') | |||||
# test_records = frappe.get_test_records('{doctype}') | |||||
class Test{classname}(unittest.TestCase): | class Test{classname}(unittest.TestCase): | ||||
pass | pass |
@@ -1,6 +0,0 @@ | |||||
[ | |||||
{{ | |||||
"doctype": "{doctype}", | |||||
"name": "_Test {doctype} 1" | |||||
}} | |||||
] |
@@ -43,23 +43,23 @@ def export_csv(doctype, path): | |||||
get_template(doctype=doctype, all_doctypes="Yes", with_data="Yes") | get_template(doctype=doctype, all_doctypes="Yes", with_data="Yes") | ||||
csvfile.write(frappe.response.result.encode("utf-8")) | 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 | 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: | 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() | @frappe.whitelist() | ||||
def export_fixture(doctype, name, app): | |||||
def export_fixture(doctype, app): | |||||
if frappe.session.user != "Administrator": | if frappe.session.user != "Administrator": | ||||
raise frappe.PermissionError | raise frappe.PermissionError | ||||
if not os.path.exists(frappe.get_app_path(app, "fixtures")): | if not os.path.exists(frappe.get_app_path(app, "fixtures")): | ||||
os.mkdir(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): | def import_doc(path, overwrite=False, ignore_links=False, ignore_insert=False, insert=False, submit=False): | ||||
@@ -405,6 +405,9 @@ class Document(BaseDocument): | |||||
for fieldname, msg in missing: | for fieldname, msg in missing: | ||||
msgprint(msg) | msgprint(msg) | ||||
if frappe.flags.print_messages: | |||||
print self.as_dict() | |||||
raise frappe.MandatoryError(", ".join((each[0] for each in missing))) | raise frappe.MandatoryError(", ".join((each[0] for each in missing))) | ||||
def _validate_links(self): | def _validate_links(self): | ||||
@@ -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 | # workaround! since there is no separate test db | ||||
frappe.clear_cache() | frappe.clear_cache() | ||||
set_test_email_config() | |||||
if verbose: | if verbose: | ||||
print 'Running "before_tests" hooks' | print 'Running "before_tests" hooks' | ||||
for fn in frappe.get_hooks("before_tests", app_name=app): | for fn in frappe.get_hooks("before_tests", app_name=app): | ||||
frappe.get_attr(fn)() | frappe.get_attr(fn)() | ||||
set_test_email_config() | |||||
if doctype: | if doctype: | ||||
ret = run_tests_for_doctype(doctype, verbose=verbose, tests=tests, force=force) | ret = run_tests_for_doctype(doctype, verbose=verbose, tests=tests, force=force) | ||||
elif module: | elif module: | ||||
@@ -209,6 +208,7 @@ def make_test_objects(doctype, test_records, verbose=None): | |||||
doc["doctype"] = doctype | doc["doctype"] = doctype | ||||
d = frappe.copy_doc(doc) | d = frappe.copy_doc(doc) | ||||
if doc.get('name'): | if doc.get('name'): | ||||
d.name = doc.get('name') | d.name = doc.get('name') | ||||
@@ -224,6 +224,8 @@ def make_test_objects(doctype, test_records, verbose=None): | |||||
docstatus = d.docstatus | docstatus = d.docstatus | ||||
d.docstatus = 0 | d.docstatus = 0 | ||||
d.run_method("before_test_insert") | |||||
try: | try: | ||||
d.insert() | d.insert() | ||||
@@ -3,25 +3,24 @@ | |||||
// update parent select | // 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, { | $.extend(cur_frm.cscript, { | ||||
refresh: function(doc) { | refresh: function(doc) { | ||||