def test_import_only_children(self): user_email = "*****@*****.**" 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(["", "*****@*****.**", "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(["", "*****@*****.**", "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(self): if frappe.db.exists("Blog Category", "test-category"): frappe.delete_doc("Blog Category", "test-category") exporter.get_template("Blog Category", all_doctypes="No", with_data="No") content = read_csv_content(frappe.response.result) content.append(["", "", "test-category", "Test Cateogry"]) importer.upload(content) self.assertTrue( frappe.db.get_value("Blog Category", "test-category", "title"), "Test Category") # export with data exporter.get_template("Blog Category", all_doctypes="No", with_data="Yes") content = read_csv_content(frappe.response.result) # overwrite content[-1][3] = "New Title" importer.upload(content, overwrite=True) self.assertTrue( frappe.db.get_value("Blog Category", "test-category", "title"), "New Title")
def import_file_by_path(path, ignore_links=False, overwrite=False): from frappe.utils.datautils import read_csv_content print "Importing " + path with open(path, "r") as infile: upload(rows=read_csv_content(infile), ignore_links=ignore_links, overwrite=overwrite)
def test_export_with_all_doctypes(self): exporter.get_template("User", all_doctypes="Yes", with_data="Yes") content = read_csv_content(frappe.response.result) self.assertTrue(content[1][1], "User") self.assertTrue('"Administrator"' in [c[1] for c in content if len(c)>1]) self.assertEquals(content[13][0], "DocType:") self.assertEquals(content[13][1], "User") self.assertTrue("UserRole" in content[13])
def test_import(self): if frappe.db.exists("Blog Category", "test-category"): frappe.delete_doc("Blog Category", "test-category") exporter.get_template("Blog Category", all_doctypes="No", with_data="No") content = read_csv_content(frappe.response.result) content.append(["", "", "test-category", "Test Cateogry"]) importer.upload(content) self.assertTrue(frappe.db.get_value("Blog Category", "test-category", "title"), "Test Category") # export with data exporter.get_template("Blog Category", all_doctypes="No", with_data="Yes") content = read_csv_content(frappe.response.result) # overwrite content[-1][3] = "New Title" importer.upload(content, overwrite=True) self.assertTrue(frappe.db.get_value("Blog Category", "test-category", "title"), "New Title")
def test_import_with_children(self): exporter.get_template("Event", all_doctypes="Yes", with_data="No") content = read_csv_content(frappe.response.result) content.append([None] * len(content[-2])) content[-1][2] = "__Test Event" content[-1][3] = "Private" content[-1][4] = "2014-01-01 10:00:00.000000" content[-1][content[15].index("person")] = "Administrator" importer.upload(content) ev = frappe.get_doc("Event", {"subject":"__Test Event"}) self.assertTrue("Administrator" in [d.person for d in ev.event_individuals])
def test_import_with_children(self): exporter.get_template("Event", all_doctypes="Yes", with_data="No") content = read_csv_content(frappe.response.result) content.append([""] * len(content[-2])) content[-1][2] = "__Test Event" content[-1][3] = "Private" content[-1][3] = "2014-01-01 10:00:00.000000" content[-1][content[15].index("person")] = "Administrator" importer.upload(content) ev = frappe.get_doc("Event", {"subject":"__Test Event"}) self.assertTrue("Administrator" in [d.person for d in ev.event_individuals])
def get_csv_contents(files_path): csv_content = {} for filepath in files_path: fname = os.path.basename(filepath) for file_type in ["account.account.template", "account.account.type", "account.chart.template"]: if fname.startswith(file_type) and fname.endswith(".csv"): with open(filepath, "r") as csvfile: try: csv_content.setdefault(file_type, [])\ .append(read_csv_content(csvfile.read())) except Exception, e: continue
def find_charts(): print "finding charts..." for basepath, folders, files in os.walk(path): basename = os.path.basename(basepath) if basename.startswith("l10n"): for fname in files: fname = cstr(fname) filepath = os.path.join(basepath, fname) if fname.endswith(".xml"): tree = ET.parse(filepath) root = tree.getroot() for node in root[0].findall("record"): if node.get("model") in ["account.account.template", "account.chart.template", "account.account.type"]: chart_roots.append(root) root.set("folder", basename) break if fname.endswith(".csv"): with open(filepath, "r") as csvfile: try: content = read_csv_content(csvfile.read()) except Exception, e: continue if content[0][0]=="id": for row in content[1:]: data = dict(zip(content[0], row)) account = { "name": data.get("name"), "parent_id": data.get("parent_id:id"), "children": [] } accounts[data.get("id")] = account if not account.get("parent_id"): chart_id = data.get("chart_id:id") charts.setdefault(chart_id, {}).update({ "account_root_id": data.get("id")})
def import_file_by_path(path, ignore_links=False, overwrite=False, submit=False): from frappe.utils.datautils import read_csv_content from frappe.core.page.data_import_tool.importer import upload print "Importing " + path with open(path, "r") as infile: upload(rows = read_csv_content(infile.read()), ignore_links=ignore_links, overwrite=overwrite, submit_after_import=submit)
def test_export(self): exporter.get_template("User", all_doctypes="No", with_data="No") content = read_csv_content(frappe.response.result) self.assertTrue(content[1][1], "User")
def test_export_with_data(self): exporter.get_template("User", all_doctypes="No", with_data="Yes") content = read_csv_content(frappe.response.result) self.assertTrue(content[1][1], "User") self.assertTrue("Administrator" in [c[1] for c in content if len(c)>1])