Skip to content

Commit

Permalink
[ADD] report_generate_helper
Browse files Browse the repository at this point in the history
  • Loading branch information
matthieu.saison committed Dec 14, 2023
1 parent 7885eac commit 505c4a5
Show file tree
Hide file tree
Showing 8 changed files with 61 additions and 0 deletions.
1 change: 1 addition & 0 deletions report_generate_helper/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
13 changes: 13 additions & 0 deletions report_generate_helper/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "Report Generate Helper",
"version": "16.0.1.0.0",
"summary": "Helper to easily generate report",
"author": "Akretion",
"website": "https://github.com/OCA/reporting-engine",
"license": "AGPL-3",
"category": "Reporting",
"depends": [
"base",
],
}
1 change: 1 addition & 0 deletions report_generate_helper/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import report_helper
30 changes: 30 additions & 0 deletions report_generate_helper/models/report_helper.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Copyright 2023 Akretion (https://www.akretion.com).
# @author Matthieu SAISON <matthieu.saison@akretion.com>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from odoo import models
from odoo.tools.safe_eval import safe_eval, time


class Base(models.AbstractModel):
_inherit = "base"

def _get_report_converter(self):
return f"_render_{self.report_type.replace('-', '_')}"

def get_report(self, report_name):
report = self.env["ir.actions.report"]._get_report(report_name)

method_name = report._get_report_converter()
method = getattr(self.env["ir.actions.report"].sudo(), method_name)
content, extension = method(report_name, self.ids)

if report.print_report_name and len(self) == 1:
report_name = safe_eval(

Check warning on line 23 in report_generate_helper/models/report_helper.py

View check run for this annotation

Codecov / codecov/patch

report_generate_helper/models/report_helper.py#L23

Added line #L23 was not covered by tests
report.print_report_name, {"object": self, "time": time}
)
else:
report_name = report.name
filename = "%s.%s" % (report_name, extension)

return filename, content
1 change: 1 addition & 0 deletions report_generate_helper/readme/CONTRIBUTORS.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* * Matthieu Saison <matthieu.saison@akretion.com>
7 changes: 7 additions & 0 deletions report_generate_helper/readme/DESCRIPTION.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
This module allows you to add new parameters on QWeb reports.
Currently, we have defined a field maximum on a report and a validation of
maximal and minimal size.
It is useful on xml reports in order to validate length.
XML are sometimes XSD dependant and we must validate its format.
For example, in spanish facturae (http://www.facturae.gob.es/Paginas/Index.aspx), where
length and format must be validated in several fields in order to send an invoice.
1 change: 1 addition & 0 deletions report_generate_helper/tests/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import test_report_generate_helper
7 changes: 7 additions & 0 deletions report_generate_helper/tests/test_report_generate_helper.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
from odoo.tests import common


class TestReportLabel(common.TransactionCase):
def test_get_report(self):
module = self.env["ir.module.module"].search([])[1]
self.assertTrue(module.get_report("base.report_irmodulereference"))

0 comments on commit 505c4a5

Please sign in to comment.