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

DO NOT MERGE [IMP] report_qweb_signer remove java in manifest #6

Open
wants to merge 24 commits into
base: 13.0
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
751b8ad
report_qweb_signer addon
antespi Nov 22, 2015
69c796e
report_qweb_signer: Add feature request
pedrobaeza Sep 6, 2016
c05b1bc
OCA Transbot updated translations from Transifex
oca-transbot Mar 13, 2016
94b6a8b
[MIG] report_qweb_signer: Migration to 10.0
pedrobaeza Jun 22, 2017
016feb5
OCA Transbot updated translations from Transifex
oca-transbot Aug 19, 2017
668156c
fix test_report_qweb_signer - tests were causing travis to stall
JordiBForgeFlow Sep 14, 2017
3a1b213
[FIX] report_qweb_signer: Remove hardcoded memory limits
yajo Nov 17, 2017
767c0a8
OCA Transbot updated translations from Transifex
oca-transbot Mar 3, 2018
d736717
[UPD] Update report_qweb_signer.pot
oca-travis Jun 23, 2018
ce23047
[FIX] README syntax
pedrobaeza Jun 23, 2018
29a0d9a
[MIG] report_qweb_designer: Migration to 12.0
chienandalu Nov 13, 2018
0eeb7da
[MIG] report_qweb_signer: Refine migration
pedrobaeza May 16, 2019
9853185
[UPD] README.rst
OCA-git-bot May 16, 2019
f174ba4
[UPD] Update report_qweb_signer.pot
oca-travis May 16, 2019
611f946
Update translation files
oca-transbot May 20, 2019
9b3b488
[UPD] README.rst
OCA-git-bot Jul 31, 2019
b99020c
[FIX] report_qweb_signer: reprint report crash
chienandalu Jun 16, 2020
5b6f4d3
report_qweb_signer 12.0.1.0.1
OCA-git-bot Jun 16, 2020
b1a15b5
Update translation files
oca-transbot Aug 16, 2020
4e321eb
[FIX] report_qweb_signer
marcelsavegnago Oct 24, 2020
ae6d5a6
[IMP] report_qweb_signer: Black python code
Jun 29, 2021
89129f2
[MIG] report_qweb_signer: Migration to 13.0
Jun 29, 2021
b04dd19
[IMP] report_qweb_signer add endesive
Jun 30, 2021
176d8d6
[TEMP][FIX] remove java dependencie in report_qweb_signer
Jul 1, 2021
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
4 changes: 2 additions & 2 deletions bi_sql_editor/models/bi_sql_view_field.py
Original file line number Diff line number Diff line change
Expand Up @@ -237,8 +237,8 @@ def _prepare_search_filter_field(self):
self.ensure_one()
res = ""
if self.field_description and self.is_group_by:
res = """<filter name="%s" string="%s"
context="{'group_by':'%s'}"/>""" % (
res = """<filter name="{}" string="{}"
context="{{'group_by':'{}'}}"/>""".format(
self.field_description.lower().replace(" ", "_"),
self.field_description,
self.name,
Expand Down
159 changes: 159 additions & 0 deletions report_qweb_signer/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
=======================
Qweb PDF reports signer
=======================

.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |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/12.0/report_qweb_signer
: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-12-0/reporting-engine-12-0-report_qweb_signer
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
:target: https://runbot.odoo-community.org/runbot/143/12.0
:alt: Try me on Runbot

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

This module extends the functionality of report module to sign
PDFs using a PKCS#12 certificate.

**Table of contents**

.. contents::
:local:

Installation
============

To install this module, you need to install Java JDK Headlees, e.g.:

apt-get install openjdk-8-jre-headless

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

In order to start signing PDF documents you need to configure certificate(s)
to use in your company.

* Go to ``Settings > Companies > Companies > Your company``
* Go to ``Report configuration`` tab
* Click ``Edit``
* Add a new item in ``PDF report certificates`` list
* Click ``Create``
* Set name, certificate file, password file and model
* Optionally you can set a domain and filename pattern for saving as attachment

For example, if you want to sign only customer invoices in open or paid state:

* Model: ``account.invoice``
* Domain: ``[('type','=','out_invoice'), ('state', 'in', ('open', 'paid'))]``
* Save as attachment: ``(object.number or '').replace('/','_') + '.signed.pdf'``

**Note**: Linux user that executes Odoo server process must have
read access to certificate file and password file

Java Memory Settings
~~~~~~~~~~~~~~~~~~~~

If you are signing large amounts of reports at the same time, or if you have a
lower worker memory size than the JVM defaults, you may need to tune the JVM
heap memory limits. Do so by adding a ``$JVM_ARGS`` environment variable that
contains the required flags. Check out these links too:

- `StackOverflow answer <https://stackoverflow.com/a/14763095/1468388>`_.
- `Java docs <https://docs.oracle.com/cd/E15523_01/web.1111/e13814/jvm_tuning.htm#PERFM161>`_.

Usage
=====

User just prints PDF documents (only Qweb PDF reports supported) as usual,
but signed PDF is automatically downloaded if this document model is configured
as indicated above.

If 'Save as attachment' is configured, signed PDF is saved as attachment and
next time saved one is downloaded without signing again. This is appropiate
when signing date is important, for example, when signing customer invoices.

You can try the signing with the demo report that is included for customers
called "Test PDF certificate".

Known issues / Roadmap
======================

* When signing multiple documents (if 'Allow only one document' is disable)
then 'Save as attachment' is not applied and signed result is not
saved as attachment.
* To have a visible signature through an image embedded in the resulting PDF.
* Add tests.

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 smashing it by providing a detailed and welcomed
`feedback <https://github.com/OCA/reporting-engine/issues/new?body=module:%20report_qweb_signer%0Aversion:%2012.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
~~~~~~~

* Tecnativa

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

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

* Rafael Blasco
* Antonio Espinosa
* Pedro M. Baeza
* Jairo Llopis
* David Vidal

Other credits
~~~~~~~~~~~~~

External utilities
++++++++++++++++++

* iText v1.4.8: © 2000-2006, Paulo Soares, Bruno Lowagie and others - License `MPL <http://www.mozilla.org/MPL>`__ or `LGPL2 <http://www.gnu.org/licenses/old-licenses/lgpl-2.0.html>`__ - http://sourceforge.net/projects/itext
* jPdfSign: © 2006 Jan Peter Stotz - License `MPL <http://www.mozilla.org/MPL>`__ or `LGPL2 <http://www.gnu.org/licenses/old-licenses/lgpl-2.0.html>`__ (inherited from iText) - http://private.sit.fraunhofer.de/~stotz/software/jpdfsign
* Modified jPdfSign: © 2015 Antonio Espinosa - License `MPL <http://www.mozilla.org/MPL>`__ or `LGPL2 <http://www.gnu.org/licenses/old-licenses/lgpl-2.0.html>`__ (inherited from iText) - static/src/java/JPdfSign.java

Icon
++++

`Created by Anton Noskov from the Noun Project <https://thenounproject.com/search/?q=signed+contract&i=65694>`__

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/12.0/report_qweb_signer>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
3 changes: 3 additions & 0 deletions report_qweb_signer/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

from . import models
26 changes: 26 additions & 0 deletions report_qweb_signer/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Copyright 2015 Tecnativa - Antonio Espinosa
# Copyright 2017 Tecnativa - Pedro M. Baeza
# Copyright 2018 Tecnativa - David Vidal
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

{
"name": "Qweb PDF reports signer",
"summary": "Sign Qweb PDFs usign a PKCS#12 certificate",
"version": "13.0.1.0.0",
"category": "Reporting",
"website": "https://github.com/oca/reporting-engine",
"author": "Tecnativa, " "Odoo Community Association (OCA)",
"license": "AGPL-3",
"installable": True,
"depends": ["web_editor"],
"external_dependencies": {
"python": ["endesive", "cryptography"],
},
"data": [
"data/defaults.xml",
"security/ir.model.access.csv",
"views/report_certificate_view.xml",
"views/res_company_view.xml",
],
"demo": ["demo/report_partner_demo.xml", "demo/report_certificate_demo.xml"],
}
7 changes: 7 additions & 0 deletions report_qweb_signer/data/defaults.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record model="ir.config_parameter" id="report_qweb_signer_java_param">
<field name="key">report_qweb_signer.java_parameters</field>
<field name="value">-Xms4M -Xmx1g -XX:CompressedClassSpaceSize=256m</field>
</record>
</odoo>
20 changes: 20 additions & 0 deletions report_qweb_signer/demo/report_certificate_demo.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
Copyright 2015 Tecnativa - Antonio Espinosa
Copyright 2017 Tecnativa - Pedro M. Baeza
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-->
<odoo noupdate="1">
<record id="demo_certificate_test" model="report.certificate">
<field name="company_id" ref="base.main_company" />
<field name="name">Test OCA certificate</field>
<field name="path">test.p12</field>
<field name="password_file">test.passwd</field>
<field name="signing_method">java</field>
<field name="model_id" ref="base.model_res_partner" />
<field name="allow_only_one" eval="True" />
<field
name="attachment"
>'test_' + (object.name or '').replace(' ', '_').lower() + '.signed.pdf'</field>
</record>
</odoo>
46 changes: 46 additions & 0 deletions report_qweb_signer/demo/report_partner_demo.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
Copyright 2015 Tecnativa - Antonio Espinosa
Copyright 2017 Tecnativa - Pedro M. Baeza
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-->
<odoo>
<template id="report_partner_demo_document">
<t t-call="web.external_layout">
<div class="page">
<div class="row">
<div class="col-md-12">
<span
>This is a sample report for testing PDF certificates.</span>
</div>
</div>
<div class="row">
<div class="col-md-12">
<strong>Partner:</strong>
<span t-field="o.name" />
</div>
</div>
</div>
</t>
</template>
<template id="report_partner_demo">
<t t-call="web.html_container">
<t t-foreach="docs" t-as="o">
<t
t-call="report_qweb_signer.report_partner_demo_document"
t-lang="o.lang"
/>
</t>
</t>
</template>
<report
id="partner_demo_report"
model="res.partner"
string="Test PDF certificate"
report_type="qweb-pdf"
name="report_qweb_signer.report_partner_demo"
file="report_qweb_signer.report_partner_demo"
attachment_use="True"
attachment="'test_' + (object.name or '').replace(' ', '_').lower() + '.pdf'"
/>
</odoo>
Loading