Browse Source

[12.0][FIX] excel_import_export

Fix Import Excel wizard, cannot download template as in v12
core Odoo prevent download default binary.
12.0
Kitti U 6 years ago
committed by OCA-git-bot
parent
commit
5dec9f253e
  1. 2
      excel_import_export/__manifest__.py
  2. 5
      excel_import_export/readme/HISTORY.rst
  3. 2
      excel_import_export/readme/INSTALL.rst
  4. 8
      excel_import_export/readme/USAGE.rst
  5. 15
      excel_import_export/wizard/import_xlsx_wizard.py
  6. 13
      excel_import_export/wizard/import_xlsx_wizard.xml
  7. 3
      excel_import_export_demo/tests/test_xlsx_import_export.py

2
excel_import_export/__manifest__.py

@ -4,7 +4,7 @@
{ {
'name': 'Excel Import/Export', 'name': 'Excel Import/Export',
'summary': 'Base module for easy way to develop Excel import/export', 'summary': 'Base module for easy way to develop Excel import/export',
'version': '12.0.1.0.0',
'version': '12.0.1.0.1',
'author': 'Ecosoft,Odoo Community Association (OCA)', 'author': 'Ecosoft,Odoo Community Association (OCA)',
'license': 'AGPL-3', 'license': 'AGPL-3',
'website': 'https://github.com/OCA/server-tools/', 'website': 'https://github.com/OCA/server-tools/',

5
excel_import_export/readme/HISTORY.rst

@ -2,3 +2,8 @@
~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~
* Start of the history * Start of the history
12.0.1.0.2 (2019-06-24)
~~~~~~~~~~~~~~~~~~~~~~~
* Fix wizard on v12 can't download sample template file - https://github.com/OCA/server-tools/issues/1574

2
excel_import_export/readme/INSTALL.rst

@ -2,4 +2,4 @@ To install this module, you need to install following python library, **xlrd, xl
Then, simply install **excel_import_export**. Then, simply install **excel_import_export**.
For samples, install **excel_import_export_sample**.
For demo, install **excel_import_export_demo**.

8
excel_import_export/readme/USAGE.rst

@ -11,11 +11,11 @@ For reporting, also call `export_xlsx(...)` but through following method
After install this module, go to Settings > Excel Import/Export > XLSX Templates, this is where the key component located. After install this module, go to Settings > Excel Import/Export > XLSX Templates, this is where the key component located.
As this module provide tools, it is best to explain as use cases. For example use cases, please install **excel_import_export_sample**
As this module provide tools, it is best to explain as use cases. For example use cases, please install **excel_import_export_demo**
**Use Case 1:** Export/Import Excel on existing document **Use Case 1:** Export/Import Excel on existing document
This add export/import action menus in existing document (example - excel_import_export_sample/import_export_sale_order)
This add export/import action menus in existing document (example - excel_import_export_demo/import_export_sale_order)
1. Create export action menu on document, <act_window> with res_model="export.xlsx.wizard" and src_model="<document_model>", and context['template_domain'] to locate the right template -- actions.xml 1. Create export action menu on document, <act_window> with res_model="export.xlsx.wizard" and src_model="<document_model>", and context['template_domain'] to locate the right template -- actions.xml
2. Create import action menu on document, <act_window> with res_model="import.xlsx.wizard" and src_model="<document_model>", and context['template_domain'] to locate the right template -- action.xml 2. Create import action menu on document, <act_window> with res_model="import.xlsx.wizard" and src_model="<document_model>", and context['template_domain'] to locate the right template -- action.xml
@ -24,7 +24,7 @@ This add export/import action menus in existing document (example - excel_import
**Use Case 2:** Import Excel Files **Use Case 2:** Import Excel Files
With menu wizard to create new documents (example - excel_import_export_sample/import_sale_orders)
With menu wizard to create new documents (example - excel_import_export_demo/import_sale_orders)
1. Create report menu with search wizard, res_model="import.xlsx.wizard" and context['template_domain'] to locate the right template -- menu_action.xml 1. Create report menu with search wizard, res_model="import.xlsx.wizard" and context['template_domain'] to locate the right template -- menu_action.xml
2. Create Excel Template File (.xlsx), in the template, name the underlining tab used for import -- <import file>.xlsx 2. Create Excel Template File (.xlsx), in the template, name the underlining tab used for import -- <import file>.xlsx
@ -32,7 +32,7 @@ With menu wizard to create new documents (example - excel_import_export_sample/i
**Use Case 3:** Create Excel Report **Use Case 3:** Create Excel Report
This create report menu with criteria wizard. (example - excel_import_export_sample/report_sale_order)
This create report menu with criteria wizard. (example - excel_import_export_demo/report_sale_order)
1. Create report's menu, action, and add context['template_domain'] to locate the right template for this report -- <report>.xml 1. Create report's menu, action, and add context['template_domain'] to locate the right template for this report -- <report>.xml
2. Create report's wizard for search criteria. The view inherits ``excel_import_export.xlsx_report_view`` and mode="primary". In this view, you only need to add criteria fields, the rest will reuse from interited view -- <report.xml> 2. Create report's wizard for search criteria. The view inherits ``excel_import_export.xlsx_report_view`` and mode="primary". In this view, you only need to add criteria fields, the rest will reuse from interited view -- <report.xml>

15
excel_import_export/wizard/import_xlsx_wizard.py

@ -114,6 +114,21 @@ class ImportXLSXWizard(models.TransientModel):
defaults['res_model'] = res_model defaults['res_model'] = res_model
return defaults return defaults
@api.multi
def get_import_sample(self):
self.ensure_one()
return {
'name': _('Import Excel'),
'type': 'ir.actions.act_window',
'res_model': 'import.xlsx.wizard',
'view_mode': 'form',
'view_type': 'form',
'res_id': self.id,
'views': [(False, 'form')],
'target': 'new',
'context': self._context.copy()
}
@api.multi @api.multi
def action_import(self): def action_import(self):
self.ensure_one() self.ensure_one()

13
excel_import_export/wizard/import_xlsx_wizard.xml

@ -9,7 +9,11 @@
<field name="model">import.xlsx.wizard</field> <field name="model">import.xlsx.wizard</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<form string="Import File Template"> <form string="Import File Template">
<field name="id" invisible="1"/>
<field name="state" invisible="1"/> <field name="state" invisible="1"/>
<field name="fname" invisible="1"/>
<field name="res_model" invisible="1"/>
<field name="res_id" invisible="1"/>
<group states="choose"> <group states="choose">
<group> <group>
<field name="import_file" attrs="{'invisible': [('res_id', '=', False)]}"/> <field name="import_file" attrs="{'invisible': [('res_id', '=', False)]}"/>
@ -18,10 +22,11 @@
</group> </group>
<group> <group>
<field name="template_id" widget="selection"/> <field name="template_id" widget="selection"/>
<field name="fname" invisible="1"/>
<field name="datas" filename="fname"/>
<field name="res_model" invisible="1"/>
<field name="res_id" invisible="1"/>
<div colspan="2">
<button name="get_import_sample" string="⇒ Get Sample Import Template"
type="object" class="oe_link" attrs="{'invisible': [('id', '!=', False)]}"/>
</div>
<field name="datas" filename="fname" attrs="{'invisible': [('id', '=', False)]}"/>
</group> </group>
</group> </group>
<group states="get"> <group states="get">

3
excel_import_export_demo/tests/test_xlsx_import_export.py

@ -41,6 +41,9 @@ class TestXLSXImportExport(TestExcelImportExport):
with Form(self.env['import.xlsx.wizard'].with_context(ctx)) as f: with Form(self.env['import.xlsx.wizard'].with_context(ctx)) as f:
f.import_file = self.export_file f.import_file = self.export_file
import_wizard = f.save() import_wizard = f.save()
# Test sample template
import_wizard.get_import_sample()
self.assertTrue(import_wizard.datas)
# Test whether it loads correct template # Test whether it loads correct template
self.assertEqual(import_wizard.template_id, self.assertEqual(import_wizard.template_id,
self.env.ref('excel_import_export_demo.' self.env.ref('excel_import_export_demo.'

Loading…
Cancel
Save