Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Syncing from upstream OCA/reporting-engine (16.0) #649

Merged
merged 26 commits into from
Mar 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
1372176
[ADD] report_qr
etobella May 13, 2019
920224b
[IMP] report_qr: Allow to use SVG as output
chienandalu Sep 19, 2019
ebe66a4
[UPD] Update report_qr.pot
oca-travis Sep 30, 2019
b08ed20
[UPD] README.rst
OCA-git-bot Oct 1, 2019
d911978
[MIG] report_qr: Migration to 12.0
chienandalu Oct 9, 2019
768a0a9
[UPD] Update report_qr.pot
oca-travis Oct 11, 2019
cabfea5
[IMP] report_qr: black, isort
JoanSForgeFlow Mar 2, 2020
c2f0d26
[MIG] report_qr: Migration to 13.0
JoanSForgeFlow Mar 3, 2020
55ad539
[UPD] Update report_qr.pot
oca-travis Mar 8, 2020
9a8a2e0
[UPD] README.rst
OCA-git-bot Mar 8, 2020
3515f8a
[FIX] report_qr: New QR Library does not contain the old failure
etobella Oct 9, 2020
92277f0
report_qr 13.0.1.0.1
OCA-git-bot Oct 14, 2020
ad3b576
[14.0][MIG] report_qr
Kiplangatdan Jul 13, 2021
0f1a35a
[UPD] Update report_qr.pot
oca-travis Nov 26, 2021
5c7779d
[UPD] README.rst
OCA-git-bot Nov 26, 2021
e900bb9
[MIG] report_qr: Migration to 15.0
JasminSForgeFlow Feb 7, 2022
a6f1a32
[UPD] Update report_qr.pot
Mar 2, 2022
5ebc1c9
[UPD] README.rst
OCA-git-bot Mar 2, 2022
684dd18
Added translation using Weblate (Catalan)
jabelchi Jun 15, 2022
1470844
Translated using Weblate (Catalan)
jabelchi Jun 15, 2022
065d39c
[IMP] report_qr: pre-commit stuff
ramiadavid Oct 27, 2022
1cc30e5
[MIG] report_qr: Migration to 16.0
ramiadavid Oct 27, 2022
2b7aeca
Merge PR #673 into 16.0
OCA-git-bot Mar 5, 2024
e8fa5e2
[UPD] Update report_qr.pot
Mar 5, 2024
96a617b
[BOT] post-merge updates
OCA-git-bot Mar 5, 2024
0b1cec1
Added translation using Weblate (Italian)
mymage Mar 6, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ addon | version | maintainers | summary
[report_label](report_label/) | 16.0.1.0.1 | [![ivantodorovich](https://github.com/ivantodorovich.png?size=30px)](https://github.com/ivantodorovich) | Print configurable self-adhesive labels reports
[report_py3o](report_py3o/) | 16.0.1.0.1 | | Reporting engine based on Libreoffice (ODT -> ODT, ODT -> PDF, ODT -> DOC, ODT -> DOCX, ODS -> ODS, etc.)
[report_py3o_fusion_server](report_py3o_fusion_server/) | 16.0.1.0.0 | | Let the fusion server handle format conversion.
[report_qr](report_qr/) | 16.0.1.0.0 | | Web QR Manager
[report_qweb_decimal_place](report_qweb_decimal_place/) | 16.0.1.0.0 | | Report Qweb Decimal Place
[report_qweb_element_page_visibility](report_qweb_element_page_visibility/) | 16.0.1.0.0 | | Report Qweb Element Page Visibility
[report_qweb_encrypt](report_qweb_encrypt/) | 16.0.1.0.2 | [![kittiu](https://github.com/kittiu.png?size=30px)](https://github.com/kittiu) | Allow to encrypt qweb pdfs
Expand Down
114 changes: 114 additions & 0 deletions report_qr/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
==============
Web QR Manager
==============

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:3254874204b0eb4c8d9092211d5d8fb50ed53af74053aaf64e7c5713dcc21a3c
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |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-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-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_qr
: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_qr
: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 module allows to print QR in better structure than the standard odoo.

The original image looks like the following

.. figure:: https://raw.githubusercontent.com/OCA/reporting-engine/16.0/report_qr/static/description/old_qr.png
:alt: Original QR
:width: 100 px

With the new generator, it looks like:

.. figure:: https://raw.githubusercontent.com/OCA/reporting-engine/16.0/report_qr/static/description/new_qr.png
:alt: New QR
:width: 100 px

**Table of contents**

.. contents::
:local:

Usage
=====

When creating new reports, you should use a path like the following::

<img t-att-src="'/report/qr/?value=%s&amp;error_correction=%s' % ('HELLO WORLD!', 3)" style="width:100;height:100"/>


The **error_correction** parameter controls the error correction used for the QR Code. The following four constants are made available:

* **error_correction** = 1: About 7% or less errors can be corrected.
* **error_correction** = 0: About 15% or less errors can be corrected.
* **error_correction** = 3: About 25% or less errors can be corrected.
* **error_correction** = 2: About 30% or less errors can be corrected.

The **box_size** parameter controls how many pixels each "box" of the QR code is. The default is 3.
The **border** parameter controls how many boxes thick the border should be (the default is 4, which is the minimum according to the specs).

The **version** parameter is an integer from 1 to 40 that controls the size of the QR Code (the smallest, version 1, is a 21x21 matrix). Set to None and use the fit parameter when making the code to determine this automatically.

**fill_color** and **back_color** can change the background and the painting color of the QR, when using the default image factory.

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_qr%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
~~~~~~~

* Creu Blanca

Contributors
~~~~~~~~~~~~

* Enric Tobella <[email protected]>

* `Tecnativa <https://www.tecnativa.com>`_:

* David Vidal

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_qr>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
2 changes: 2 additions & 0 deletions report_qr/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from . import controllers
from . import models
14 changes: 14 additions & 0 deletions report_qr/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Copyright 2019 Creu Blanca
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

{
"name": "Web QR Manager",
"version": "16.0.1.0.0",
"author": "Creu Blanca, Odoo Community Association (OCA)",
"category": "Reporting",
"website": "https://github.com/OCA/reporting-engine",
"license": "AGPL-3",
"depends": ["web"],
"data": [],
"installable": True,
}
1 change: 1 addition & 0 deletions report_qr/controllers/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import qr
22 changes: 22 additions & 0 deletions report_qr/controllers/qr.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import werkzeug

from odoo import http
from odoo.http import request


class Home(http.Controller):
@http.route("/report/qr", type="http", auth="public")
def report_qr(self, value, box_size=3, border=3, factory="png", **kwargs):
try:
barcode = request.env["ir.actions.report"].qr_generate(
value, box_size=box_size, border=border, factory=factory, **kwargs
)
except (ValueError, AttributeError) as e:
raise werkzeug.exceptions.HTTPException(
description="Cannot convert into barcode."
) from e
if factory != "png":
return request.make_response(
barcode, headers=[("Content-Type", "image/svg+xml")]
)
return request.make_response(barcode, headers=[("Content-Type", "image/png")])
22 changes: 22 additions & 0 deletions report_qr/i18n/ca.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * report_qr
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2022-06-15 18:05+0000\n"
"Last-Translator: jabelchi <[email protected]>\n"
"Language-Team: none\n"
"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.3.2\n"

#. module: report_qr
#: model:ir.model,name:report_qr.model_ir_actions_report
msgid "Report Action"
msgstr "Acció informe"
20 changes: 20 additions & 0 deletions report_qr/i18n/it.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * report_qr
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"

#. module: report_qr
#: model:ir.model,name:report_qr.model_ir_actions_report
msgid "Report Action"
msgstr ""
19 changes: 19 additions & 0 deletions report_qr/i18n/report_qr.pot
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * report_qr
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"

#. module: report_qr
#: model:ir.model,name:report_qr.model_ir_actions_report
msgid "Report Action"
msgstr ""
1 change: 1 addition & 0 deletions report_qr/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import ir_actions_report
35 changes: 35 additions & 0 deletions report_qr/models/ir_actions_report.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import io

import qrcode
from qrcode.image import pil, svg

from odoo import api, models


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

@api.model
def qr_generate(self, value, box_size=3, border=5, factory="png", **kwargs):
factories = {
"png": pil.PilImage,
"svg": svg.SvgImage,
"svg-fragment": svg.SvgFragmentImage,
"svg-path": svg.SvgPathImage,
}
back_color = kwargs.pop("back_color", "white")
fill_color = kwargs.pop("fill_color", "black")
try:
# Defaults to png if the argument is unknown
image_factory = factories.get(factory, pil.PilImage)
qr = qrcode.QRCode(
box_size=box_size, border=border, image_factory=image_factory, **kwargs
)
qr.add_data(value)
qr.make()
img = qr.make_image(fill_color=fill_color, back_color=back_color)
arr = io.BytesIO()
img.save(arr)
return arr.getvalue()
except Exception as e:
raise ValueError("Cannot convert into barcode.") from e
5 changes: 5 additions & 0 deletions report_qr/readme/CONTRIBUTORS.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
* Enric Tobella <[email protected]>

* `Tecnativa <https://www.tecnativa.com>`_:

* David Vidal
13 changes: 13 additions & 0 deletions report_qr/readme/DESCRIPTION.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
This module allows to print QR in better structure than the standard odoo.

The original image looks like the following

.. figure:: static/description/old_qr.png
:alt: Original QR
:width: 100 px

With the new generator, it looks like:

.. figure:: static/description/new_qr.png
:alt: New QR
:width: 100 px
18 changes: 18 additions & 0 deletions report_qr/readme/USAGE.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
When creating new reports, you should use a path like the following::

<img t-att-src="'/report/qr/?value=%s&amp;error_correction=%s' % ('HELLO WORLD!', 3)" style="width:100;height:100"/>


The **error_correction** parameter controls the error correction used for the QR Code. The following four constants are made available:

* **error_correction** = 1: About 7% or less errors can be corrected.
* **error_correction** = 0: About 15% or less errors can be corrected.
* **error_correction** = 3: About 25% or less errors can be corrected.
* **error_correction** = 2: About 30% or less errors can be corrected.

The **box_size** parameter controls how many pixels each "box" of the QR code is. The default is 3.
The **border** parameter controls how many boxes thick the border should be (the default is 4, which is the minimum according to the specs).

The **version** parameter is an integer from 1 to 40 that controls the size of the QR Code (the smallest, version 1, is a 21x21 matrix). Set to None and use the fit parameter when making the code to determine this automatically.

**fill_color** and **back_color** can change the background and the painting color of the QR, when using the default image factory.
Binary file added report_qr/static/description/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading