|
- from odoo.tests.common import TransactionCase
- from odoo.addons.report_docx.report.report_docx import DataModelProxy
- from odoo.tools import misc
- import tempfile
- import shutil
- import datetime
-
-
- from odoo.addons.report_docx.report import report_helper
- from docxtpl import DocxTemplate
-
-
- class TestReportDocx(TransactionCase):
-
- def setUp(self):
- '''准备数据'''
- super(TestReportDocx, self).setUp()
- self.ir_actions = self.env.ref('sell.report_sell_order_1')
- self.sell_order = self.env.ref('sell.sell_order_1')
- self.report_docx_sell = self.ir_actions._get_report_from_name('sell.order')
-
- self.ir_actions_pdf = self.env.ref('sell.report_sell_order_2')
- self.report_pdf_sell = self.ir_actions_pdf._get_report_from_name('sell.order.pdf')
-
- def test_get_report_from_name(self):
- '''测试docx报表模板'''
- self.sell_order.note = '测试&和<>'
- self.report_docx_sell.render_docx([self.sell_order.id], [])
- def test_get_report_from_name_many2one(self):
- '''测试docx报表模板many2one字段中含有特殊字符&<>'''
- for line in self.sell_order.line_ids:
- line.goods_id.name = '鼠标测试&和<>'
- self.report_docx_sell.render_docx([self.sell_order.id], [])
- def test_get_report_from_name_pdf(self):
- '''测试docx报表模,输出类型为pdf'''
-
-
-
-
- def test_get_report_from_name_type_pdf(self):
- '''测试docx报表模,report_type 为pdf'''
-
- self.ir_actions_pdf.write({'output_type': 'pdf'})
-
-
-
- self.report_docx_sell.render_docx([self.sell_order.id], [])
-
-
-
-
-
-
-
-
- def test_get_docx_data(self):
- self.report_docx_sell.render_docx([self.sell_order.id], [])
-
-
-
-
-
-
-
-
-
- def test_datamodelproxy(self):
- data = DataModelProxy([{"type": 'selection'}])
- data.__getitem__(0)
- data = DataModelProxy([])
- data.__getattr__(0)
-
- def test_compute_by_datetime(self):
- '''datetime打印处理'''
- obj = self.env['sell.order']
- data = DataModelProxy(obj)
- data._compute_by_datetime(obj._fields.get('create_date'), datetime.datetime.now())
-
-
- class TestReportHelper(TransactionCase):
- ''' 测试 ReportHelper '''
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- def test_get_env(self):
- ''' 测试 get_env 方法 '''
- doc = DocxTemplate(misc.file_open(
- 'sell/template/sell.order.docx').name)
- data = self.env['sell.order'].search([('name', '=', 'SO00001')])
-
- ctx = {'obj': data, 'tpl': doc}
-
- jinja_env = report_helper.get_env()
- doc.render(ctx, jinja_env)
|