Availability |
Odoo Online
Odoo.sh
On Premise
|
Technical Name |
custom_download_file_widget |
Custom Download File Widget
Widget to download a custom file from a form's view...
How to use
In your model, for example:
# -*- coding: utf-8 -*- from StringIO import StringIO from docx import Document from odoo import api, models class TestDownloadCustomFile(models.Model): _name = 'custom_download_file_widget.test_custom_download' _description = 'Testing custom file download' @api.model def get_filename(self): return 'word_document.docx' @api.model def get_file(self): """ Method to create your .docx file... """ document = Document() p_name = document.add_paragraph('') p_name.add_run('You must create your document...').bold = True target_stream = StringIO() document.save(target_stream) return target_stream.getvalue() @api.model def get_content_type(self): return 'application/vnd.openxmlformats-officedocument.wordprocessingml.document;charset=utf-8;'
Or if you need an excel document, for example:
# -*- coding: utf-8 -*- import cStringIO import xlwt from odoo import api, models class TestDownloadCustomFile(models.Model): _name = 'custom_download_file_widget.test_custom_download' _description = 'Testing custom file download' @api.model def get_filename(self): return 'excel_document.xls' @api.model def get_file(self): """ Method to create your .xls file... """ workbook = xlwt.Workbook() worksheet = workbook.add_sheet('Page1') worksheet.write(0, 0, 'You must create your document...') output = cStringIO.StringIO() workbook.save(output) output.seek(0) data = output.read() output.close() return data @api.model def get_content_type(self): return 'application/vnd.ms-excel'
In the xml definition you should write something like that:
<?xml version="1.0" encoding="UTF-8"?> <odoo> <data> <record id="custom_download_file_widget_test_form_view" model="ir.ui.view"> <field name="name">custom_download_file_widget_test_form_view</field> <field name="model">custom_download_file_widget.test_custom_download</field> <field name="arch" type="xml"> <form> <sheet> <widget string="Download Custom Document..." model="custom_download_file_widget.test_custom_download" type="download_file" /> </sheet> </form> </field> </record> <record id="custom_download_file_widget_test_action" model="ir.actions.act_window"> <field name="name">Custom Download File</field> <field name="res_model">custom_download_file_widget.test_custom_download</field> <field name="view_type">form</field> <field name="view_mode">form</field> </record> <menuitem name="Custom Download File" id="custom_download_file_widget_test_menu_item" action="custom_download_file_widget_test_action" sequence="1"/> </data> </odoo>
Please log in to comment on this module