Skip to content

Commit

Permalink
[ADD] report_text_format_option
Browse files Browse the repository at this point in the history
  • Loading branch information
AungKoKoLin1997 committed May 31, 2024
1 parent e8df660 commit 16a1b28
Show file tree
Hide file tree
Showing 14 changed files with 691 additions and 0 deletions.
87 changes: 87 additions & 0 deletions report_text_format_option/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
=========================
Report Text Format Option
=========================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:e3b9cc2a66291d03027c6100d82df8a6a0934f1802a392fe2ff1cad39557fe0d
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-LGPL--3-blue.png
:target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
:alt: License: LGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Freporting--engine-lightgray.png?logo=github
:target: https://github.com/OCA/reporting-engine/tree/16.0/report_text_format_option
:alt: OCA/reporting-engine
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/reporting-engine-16-0/reporting-engine-16-0-report_text_format_option
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/reporting-engine&target_branch=16.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

This is a technical module designed to add encoding fields to the ir.actions.report model and is applied to Text type reports.

**Table of contents**

.. contents::
:local:

Configuration
=============

In case the exported report should be encoded in another system than UTF-8, following
fields of the report record (*Settings > Technical > Reports*) should be populated accordingly.

* Text Encoding: set an encoding system (such as cp932)
* Text Encode Error Handling: select 'Ignore' or 'Replace' as necessary.
* 'Ignore': in case of an encoding error, the problematic character will be removed from the exported file.
* 'Replace': in case of an encoding error, the problematic character will be replaced with '?' symbol.
* Leaving the field blank: in case of an encoding error, the report generation fails with an error message.
* Line Ending: Select the type of line ending, 'CRLF' or 'CR', as necessary.
* 'CRLF': 'Carriage Return' + 'Line Feed' (Windows)
* 'CR': 'Carriage Return' (classic Mac OS)
* Leaving this field blank defaults to using 'LF' (Line Feed), the default behavior of Odoo.

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/reporting-engine/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/reporting-engine/issues/new?body=module:%20report_text_format_option%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
~~~~~~~

* Quartile Limited

Maintainers
~~~~~~~~~~~

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

This module is part of the `OCA/reporting-engine <https://github.com/OCA/reporting-engine/tree/16.0/report_text_format_option>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
1 change: 1 addition & 0 deletions report_text_format_option/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
14 changes: 14 additions & 0 deletions report_text_format_option/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Copyright 2024 Quartile Limited
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
{
"name": "Report Text Format Option",
"author": "Quartile Limited, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/reporting-engine",
"category": "Reporting",
"version": "16.0.1.0.0",
"license": "LGPL-3",
"depends": ["base"],
"data": ["views/ir_actions_report_views.xml"],
"demo": ["demo/report_demo.xml"],
"installable": True,
}
18 changes: 18 additions & 0 deletions report_text_format_option/demo/report_demo.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<odoo>
<!-- Demo report action -->
<record id="action_report_demo" model="ir.actions.report">
<field name="name">Demo Text Report</field>
<field name="model">res.partner</field>
<field name="report_type">qweb-text</field>
<field name="report_name">report_text_format_option.demo_report_template</field>
<field name="report_file">report_text_format_option.demo_report_template</field>
<field name="binding_model_id" ref="base.model_res_partner" />
</record>

<!-- Demo report template -->
<template id="demo_report_template">
<t t-foreach="docs" t-as="doc">
<p>Hello, <t t-esc="doc.name" />!</p>
</t>
</template>
</odoo>
1 change: 1 addition & 0 deletions report_text_format_option/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import ir_actions_report
41 changes: 41 additions & 0 deletions report_text_format_option/models/ir_actions_report.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Copyright 2024 Quartile Limited
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl).

from odoo import api, fields, models


class IrActionReport(models.Model):
_inherit = "ir.actions.report"

text_encoding = fields.Char(
help="Encoding to be applied to the generated Text file. e.g. cp932"
)
text_encode_error_handling = fields.Selection(
selection=[("ignore", "Ignore"), ("replace", "Replace")],
help="If nothing is selected, text export will fail with an error message when "
"there is a character that fail to be encoded.",
)
line_ending = fields.Selection(
[("crlf", "CRLF (\\r\\n)"), ("cr", "CR (\\r)")],
help="Select the type of line ending in case the report needs "
"to be output with other line ending than 'LF'.",
)

@api.model
def _render_qweb_text(self, report_ref, docids, data=None):
content, content_type = super()._render_qweb_text(report_ref, docids, data)
report = self._get_report(report_ref)
if not report.text_encoding and not report.line_ending:
return content, content_type
content_str = content.decode("utf-8")
if report.line_ending == "crlf":
content_str = content_str.replace("\n", "\r\n")
elif report.line_ending == "cr":
content_str = content_str.replace("\n", "\r")
# If specific encoding is set on the report, use it; otherwise, fallback to utf-8
encoding = report.text_encoding or "utf-8"
encode_options = {}
if report.text_encode_error_handling:
encode_options["errors"] = report.text_encode_error_handling

Check warning on line 39 in report_text_format_option/models/ir_actions_report.py

View check run for this annotation

Codecov / codecov/patch

report_text_format_option/models/ir_actions_report.py#L39

Added line #L39 was not covered by tests
content = content_str.encode(encoding, **encode_options)
return content, content_type
12 changes: 12 additions & 0 deletions report_text_format_option/readme/CONFIGURE.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
In case the exported report should be encoded in another system than UTF-8, following
fields of the report record (*Settings > Technical > Reports*) should be populated accordingly.

* Text Encoding: set an encoding system (such as cp932)
* Text Encode Error Handling: select 'Ignore' or 'Replace' as necessary.
* 'Ignore': in case of an encoding error, the problematic character will be removed from the exported file.
* 'Replace': in case of an encoding error, the problematic character will be replaced with '?' symbol.
* Leaving the field blank: in case of an encoding error, the report generation fails with an error message.
* Line Ending: Select the type of line ending, 'CRLF' or 'CR', as necessary.
* 'CRLF': 'Carriage Return' + 'Line Feed' (Windows)
* 'CR': 'Carriage Return' (classic Mac OS)
* Leaving this field blank defaults to using 'LF' (Line Feed), the default behavior of Odoo.
1 change: 1 addition & 0 deletions report_text_format_option/readme/DESCRIPTION.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
This is a technical module designed to add encoding fields to the ir.actions.report model and is applied to Text type reports.
Loading

0 comments on commit 16a1b28

Please sign in to comment.