diff --git a/frappe/__init__.py b/frappe/__init__.py index 6b153d383f..632b6939df 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -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 diff --git a/frappe/cli.py b/frappe/cli.py index f2ab6906bf..fe6388286d 100755 --- a/frappe/cli.py +++ b/frappe/cli.py @@ -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) diff --git a/frappe/core/doctype/docfield/docfield.json b/frappe/core/doctype/docfield/docfield.json index 2bfcfa05e4..2c1705039a 100644 --- a/frappe/core/doctype/docfield/docfield.json +++ b/frappe/core/doctype/docfield/docfield.json @@ -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", diff --git a/frappe/core/doctype/doctype/boilerplate/test_controller.py b/frappe/core/doctype/doctype/boilerplate/test_controller.py index cc12c9b9c8..e65094275f 100644 --- a/frappe/core/doctype/doctype/boilerplate/test_controller.py +++ b/frappe/core/doctype/doctype/boilerplate/test_controller.py @@ -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 diff --git a/frappe/core/doctype/doctype/boilerplate/test_records.json b/frappe/core/doctype/doctype/boilerplate/test_records.json deleted file mode 100644 index 6df1b54abc..0000000000 --- a/frappe/core/doctype/doctype/boilerplate/test_records.json +++ /dev/null @@ -1,6 +0,0 @@ -[ - {{ - "doctype": "{doctype}", - "name": "_Test {doctype} 1" - }} -] diff --git a/frappe/core/page/data_import_tool/data_import_tool.py b/frappe/core/page/data_import_tool/data_import_tool.py index 844826bec5..21300d93a5 100644 --- a/frappe/core/page/data_import_tool/data_import_tool.py +++ b/frappe/core/page/data_import_tool/data_import_tool.py @@ -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): diff --git a/frappe/model/document.py b/frappe/model/document.py index a2e7d9bc65..643ecc7de9 100644 --- a/frappe/model/document.py +++ b/frappe/model/document.py @@ -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): diff --git a/frappe/test_runner.py b/frappe/test_runner.py index 6103aff615..feb64c3617 100644 --- a/frappe/test_runner.py +++ b/frappe/test_runner.py @@ -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() diff --git a/frappe/website/doctype/website_settings/website_settings.js b/frappe/website/doctype/website_settings/website_settings.js index 65c911f598..e2e3ee6c46 100644 --- a/frappe/website/doctype/website_settings/website_settings.js +++ b/frappe/website/doctype/website_settings/website_settings.js @@ -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) {