| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Technical Name |
download_file_widget |
| Versions | 10.0 13.0 14.0 |
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 = '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 = '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="download_file_widget_test_form_view" model="ir.ui.view">
<field name="name">download_file_widget_test_form_view</field>
<field name="model">download_file_widget.test_custom_download</field>
<field name="arch" type="xml">
<form>
<sheet>
<widget string="Download Custom Document..."
model="download_file_widget.test_custom_download"
type="download_file"
/>
</sheet>
</form>
</field>
</record>
<record id="download_file_widget_test_action" model="ir.actions.act_window">
<field name="name">Custom Download File</field>
<field name="res_model">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="download_file_widget_test_menu_item"
action="download_file_widget_test_action"
sequence="1"/>
</data>
</odoo>
Alejandro Cora Gonzalez
alek.cora.glez@gmail.com
Please log in to comment on this module