瀏覽代碼

[fix] export_json

version-14
Rushabh Mehta 10 年之前
父節點
當前提交
3bdd69fa61
共有 9 個檔案被更改,包括 38 行新增39 行删除
  1. +1
    -0
      frappe/__init__.py
  2. +2
    -2
      frappe/cli.py
  3. +2
    -2
      frappe/core/doctype/docfield/docfield.json
  4. +1
    -1
      frappe/core/doctype/doctype/boilerplate/test_controller.py
  5. +0
    -6
      frappe/core/doctype/doctype/boilerplate/test_records.json
  6. +7
    -7
      frappe/core/page/data_import_tool/data_import_tool.py
  7. +3
    -0
      frappe/model/document.py
  8. +4
    -2
      frappe/test_runner.py
  9. +18
    -19
      frappe/website/doctype/website_settings/website_settings.js

+ 1
- 0
frappe/__init__.py 查看文件

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


+ 2
- 2
frappe/cli.py 查看文件

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


+ 2
- 2
frappe/core/doctype/docfield/docfield.json 查看文件

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


+ 1
- 1
frappe/core/doctype/doctype/boilerplate/test_controller.py 查看文件

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

+ 0
- 6
frappe/core/doctype/doctype/boilerplate/test_records.json 查看文件

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

+ 7
- 7
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") 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):


+ 3
- 0
frappe/model/document.py 查看文件

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


+ 4
- 2
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 # 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()




+ 18
- 19
frappe/website/doctype/website_settings/website_settings.js 查看文件

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


Loading…
取消
儲存