Browse Source

[fix] export_json

version-14
Rushabh Mehta 10 years ago
parent
commit
3bdd69fa61
9 changed files with 38 additions and 39 deletions
  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 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


+ 2
- 2
frappe/cli.py 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)


+ 2
- 2
frappe/core/doctype/docfield/docfield.json 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",


+ 1
- 1
frappe/core/doctype/doctype/boilerplate/test_controller.py 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

+ 0
- 6
frappe/core/doctype/doctype/boilerplate/test_records.json View File

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

+ 7
- 7
frappe/core/page/data_import_tool/data_import_tool.py 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):


+ 3
- 0
frappe/model/document.py 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):


+ 4
- 2
frappe/test_runner.py 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()



+ 18
- 19
frappe/website/doctype/website_settings/website_settings.js 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) {


Loading…
Cancel
Save