64 lines
2.6 KiB
Python
64 lines
2.6 KiB
Python
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
import unittest
|
|
|
|
from odoo.tests import TransactionCase, can_import, loaded_demo_data, tagged
|
|
from odoo.tools.misc import file_open
|
|
|
|
|
|
@tagged("post_install", "-at_install")
|
|
class TestImportFiles(TransactionCase):
|
|
|
|
@unittest.skipUnless(
|
|
can_import("xlrd.xlsx") or can_import("openpyxl"), "XLRD/XLSX not available"
|
|
)
|
|
def test_import_product_demo_xls(self):
|
|
if not loaded_demo_data(self.env):
|
|
self.skipTest('Needs demo data to be able to import those files')
|
|
for model in ("product.pricelist", "product.supplierinfo", "product.template"):
|
|
with self.subTest(model):
|
|
filename = f'{model.replace(".", "_")}.xls'
|
|
file_content = file_open(f"product/static/xls/{filename}", "rb").read()
|
|
import_wizard = self.env["base_import.import"].create(
|
|
{
|
|
"res_model": model,
|
|
"file": file_content,
|
|
"file_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
|
}
|
|
)
|
|
|
|
result = import_wizard.parse_preview(
|
|
{
|
|
"has_headers": True,
|
|
}
|
|
)
|
|
self.assertIsNone(result.get("error"))
|
|
field_names = ['/'.join(v) for v in result["matches"].values()]
|
|
results = import_wizard.execute_import(
|
|
field_names,
|
|
[r.lower() for r in result["headers"]],
|
|
{
|
|
"import_skip_records": [],
|
|
"import_set_empty_fields": [],
|
|
"fallback_values": {},
|
|
"name_create_enabled_fields": {},
|
|
"encoding": "",
|
|
"separator": "",
|
|
"quoting": '"',
|
|
"date_format": "",
|
|
"datetime_format": "",
|
|
"float_thousand_separator": ",",
|
|
"float_decimal_separator": ".",
|
|
"advanced": True,
|
|
"has_headers": True,
|
|
"keep_matches": False,
|
|
"limit": 2000,
|
|
"skip": 0,
|
|
"tracking_disable": True,
|
|
},
|
|
)
|
|
self.assertFalse(
|
|
results["messages"],
|
|
"results should be empty on successful import of ",
|
|
)
|