Fixed Data Import for Children
This commit is contained in:
parent
ff71fa4da2
commit
6e7e641a3a
4 changed files with 48 additions and 9 deletions
|
|
@ -27,6 +27,7 @@ class User(Document):
|
|||
self.add_system_manager_role()
|
||||
self.check_enable_disable()
|
||||
self.update_gravatar()
|
||||
self.ensure_unique_roles()
|
||||
self.remove_all_roles_for_guest()
|
||||
if self.language == "Loading...":
|
||||
self.language = None
|
||||
|
|
@ -255,6 +256,14 @@ class User(Document):
|
|||
if self.name == "Guest":
|
||||
self.set("user_roles", list(set(d for d in self.get("user_roles") if d.role == "Guest")))
|
||||
|
||||
def ensure_unique_roles(self):
|
||||
exists = []
|
||||
for i, d in enumerate(self.get("user_roles")):
|
||||
if (not d.role) or (d.role in exists):
|
||||
self.get("user_roles").remove(d)
|
||||
else:
|
||||
exists.append(d.role)
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_languages():
|
||||
from frappe.translate import get_lang_dict
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"allow_copy": 0,
|
||||
"autoname": "UR.#####",
|
||||
"creation": "2013-02-06 11:30:13.000000",
|
||||
"creation": "2013-02-06 11:30:13",
|
||||
"docstatus": 0,
|
||||
"doctype": "DocType",
|
||||
"fields": [
|
||||
|
|
@ -16,7 +16,7 @@
|
|||
"options": "Role",
|
||||
"permlevel": 0,
|
||||
"print_width": "200px",
|
||||
"reqd": 0,
|
||||
"reqd": 1,
|
||||
"search_index": 0,
|
||||
"width": "200px"
|
||||
}
|
||||
|
|
@ -26,10 +26,11 @@
|
|||
"idx": 1,
|
||||
"issingle": 0,
|
||||
"istable": 1,
|
||||
"modified": "2013-12-20 19:21:54.000000",
|
||||
"modified": "2014-06-17 06:56:28.816283",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Core",
|
||||
"name": "UserRole",
|
||||
"owner": "Administrator",
|
||||
"permissions": [],
|
||||
"read_only": 0
|
||||
}
|
||||
|
|
@ -172,8 +172,12 @@ def upload(rows = None, submit_after_import=None, ignore_encoding_errors=False,
|
|||
overwrite = params.get('overwrite')
|
||||
|
||||
# delete child rows (if parenttype)
|
||||
if parenttype and overwrite:
|
||||
delete_child_rows(data, doctype)
|
||||
parentfield = None
|
||||
if parenttype:
|
||||
parentfield = get_parent_field(doctype, parenttype)
|
||||
|
||||
if overwrite:
|
||||
delete_child_rows(data, doctype)
|
||||
|
||||
ret = []
|
||||
error = False
|
||||
|
|
@ -188,13 +192,12 @@ def upload(rows = None, submit_after_import=None, ignore_encoding_errors=False,
|
|||
doc = get_doc(row_idx)
|
||||
try:
|
||||
frappe.local.message_log = []
|
||||
if doc.get("parentfield"):
|
||||
parent = frappe.get_doc(doc["parenttype"], doc["parentfield"])
|
||||
parent.append(doc)
|
||||
if parentfield:
|
||||
parent = frappe.get_doc(parenttype, doc["parent"])
|
||||
doc = parent.append(parentfield, doc)
|
||||
parent.save()
|
||||
ret.append('Inserted row for %s at #%s' % (getlink(parenttype,
|
||||
doc.parent), unicode(doc.idx)))
|
||||
|
||||
else:
|
||||
if overwrite and frappe.db.exists(doctype, doc["name"]):
|
||||
original = frappe.get_doc(doctype, doc["name"])
|
||||
|
|
|
|||
|
|
@ -46,6 +46,32 @@ class TestDataImport(unittest.TestCase):
|
|||
importer.upload(content, overwrite=True)
|
||||
self.assertTrue(frappe.db.get_value("Blog Category", "test-category", "title"), "New Title")
|
||||
|
||||
def test_import_only_children(self):
|
||||
user_email = "test_import_userrole@example.com"
|
||||
if frappe.db.exists("User", user_email):
|
||||
frappe.delete_doc("User", user_email)
|
||||
|
||||
frappe.get_doc({"doctype": "User", "email": user_email, "first_name": "Test Import UserRole"}).insert()
|
||||
|
||||
exporter.get_template("UserRole", "User", all_doctypes="No", with_data="No")
|
||||
content = read_csv_content(frappe.response.result)
|
||||
content.append(["", "test_import_userrole@example.com", "Blogger"])
|
||||
importer.upload(content)
|
||||
|
||||
user = frappe.get_doc("User", user_email)
|
||||
self.assertEquals(len(user.get("user_roles")), 1)
|
||||
self.assertTrue(user.get("user_roles")[0].role, "Blogger")
|
||||
|
||||
# overwrite
|
||||
exporter.get_template("UserRole", "User", all_doctypes="No", with_data="No")
|
||||
content = read_csv_content(frappe.response.result)
|
||||
content.append(["", "test_import_userrole@example.com", "Website Manager"])
|
||||
importer.upload(content, overwrite=True)
|
||||
|
||||
user = frappe.get_doc("User", user_email)
|
||||
self.assertEquals(len(user.get("user_roles")), 1)
|
||||
self.assertTrue(user.get("user_roles")[0].role, "Website Manager")
|
||||
|
||||
def test_import_with_children(self):
|
||||
exporter.get_template("Event", all_doctypes="Yes", with_data="No")
|
||||
content = read_csv_content(frappe.response.result)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue