Skip to content

Commit

Permalink
[MIG] pingen: Migration to 16.0
Browse files Browse the repository at this point in the history
Standard migration, incl. changes proposed in #290
Add unit test.
  • Loading branch information
ajaniszewska-dev committed Dec 28, 2023
1 parent b72b28f commit 0d86765
Show file tree
Hide file tree
Showing 27 changed files with 2,403 additions and 374 deletions.
99 changes: 61 additions & 38 deletions pingen/README.rst
Original file line number Diff line number Diff line change
@@ -1,42 +1,56 @@
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3

===========================
Integration with pingen.com
===========================

What is pingen.com
==================
======================
pingen.com integration
======================

.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! 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%2Freport--print--send-lightgray.png?logo=github
:target: https://github.com/OCA/report-print-send/tree/16.0-mig-pingen/pingen
:alt: OCA/report-print-send
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/report-print-send-16-0-mig-pingen/report-print-send-16-0-mig-pingen-pingen
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
:target: https://runbot.odoo-community.org/runbot/144/16.0-mig-pingen
:alt: Try me on Runbot

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

Pingen.com is a paid online service.
It sends uploaded documents by letter post.

Scope of the integration
========================

One can decide, per document / attachment, if it should be pushed
to pingen.com. The documents are pushed asynchronously.

A second cron updates the informations of the documents from pingen.com, so we
know which of them have been sent.
The informations of the documents from pingen.com are updated through webhook calls.

**Table of contents**

.. contents::
:local:

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

The authentication token is configured on the company's view. You can also
tick a checkbox if the staging environment (https://stage-api.pingen.com)
should be used.
The authentication token, client ID, organization ID and webhook secret is configured
on the company's view. You can also tick a checkbox if the staging environment
(https://stage-api.pingen.com) should be used.

The setup of the 2 crons can be changed as well:

* Run Pingen Document Push
* Run Pingen Document Update
Webhooks should be configured on pingen account. Organization ID and webhook secret must match.

Usage
=====

On the attachment view, a new pingen.com tab has been added.
On the attachment view, a new pingen.com section has been added.
You can tick a box to push the document to pingen.com.

There is 3 additional options:
Expand All @@ -49,8 +63,7 @@ Once the configuration is done and the attachment saved, a Pingen Document
is created. You can directly access to the latter on the Link on the right on
the attachment view.

You can find them in `Settings > Customization > Low Level Objets > Pingen
Documents` or in the more convenient `Documents` menu if you have installed the
You can find them in `Pingen Documents` App or in the more convenient `Documents` menu if you have installed the
`document` module.

Errors
Expand All @@ -65,44 +78,54 @@ Pingen Document.
When a connection error occurs, the action will be retried on the next
scheduler run.


Dependencies
============

* Require the Python library `requests <http://docs.python-requests.org/>`_
* The PDF files sent to pingen.com have to respect some `formatting rules
<https://stage-app.pingen.com/resources/pingen_requirements_v1_en.pdf>`_.
* Require the Python library `requests_oauthlib <https://github.com/requests/requests-oauthlib>`_
* The address must be in a format accepted by pingen.com: the last line
is the country in English or German.

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

Bugs are tracked on `GitHub Issues
<https://github.com/OCA/report-print-send/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.
Bugs are tracked on `GitHub Issues <https://github.com/OCA/report-print-send/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/report-print-send/issues/new?body=module:%20pingen%0Aversion:%2016.0-mig-pingen%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
~~~~~~~

* Camptocamp

Contributors
============
~~~~~~~~~~~~

* Guewen Baconnier <guewen.baconnier@camptocamp.com>
* Anar Baghirli <a.baghirli@mobilunity.com>
* Akim Juillerat <akim.juillerat@camptocamp.com>
* Anna Janiszewska <anna.janiszewska@camptocamp.com>


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

Maintainer
==========
This module is maintained by the OCA.

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

This module is maintained by the OCA.

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.

To contribute to this module, please visit https://odoo-community.org.
This module is part of the `OCA/report-print-send <https://github.com/OCA/report-print-send/tree/16.0-mig-pingen/pingen>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
3 changes: 0 additions & 3 deletions pingen/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,2 @@
# Author: Guewen Baconnier
# Copyright 2012-2017 Camptocamp SA
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from . import controllers
from . import models
12 changes: 5 additions & 7 deletions pingen/__manifest__.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
# Author: Guewen Baconnier
# Copyright 2012-2017 Camptocamp SA
# Copyright 2012-2023 Camptocamp SA
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

{
"name": "pingen.com integration",
"version": "10.0.2.0.0",
"version": "16.0.1.0.0",
"author": "Camptocamp,Odoo Community Association (OCA)",
"maintainer": "Camptocamp",
"maintainers": ["ajaniszewska-dev", "grindtildeath"],
"license": "AGPL-3",
"category": "Reporting",
"complexity": "easy",
"maturity": "Production/Stable",
"depends": ["base_setup"],
"external_dependencies": {
"python": ["requests_oauthlib"],
"python": ["requests_oauthlib", "oauthlib"],
},
"website": "https://github.com/OCA/report-print-send",
"data": [
Expand All @@ -22,8 +22,6 @@
"views/base_config_settings.xml",
"security/ir.model.access.csv",
],
"tests": [],
"installable": True,
"auto_install": False,
"application": True,
}
10 changes: 5 additions & 5 deletions pingen/controllers/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@
class PingenController(http.Controller):
def _verify_signature(self, request_content):
webhook_signature = http.request.httprequest.headers.get("Signature")
companies = (
http.request.env["res.company"]
.sudo()
.search([("pingen_webhook_secret", "!=", False)])
)
companies = http.request.env["res.company"].sudo().search([])

Check warning on line 20 in pingen/controllers/main.py

View check run for this annotation

Codecov / codecov/patch

pingen/controllers/main.py#L19-L20

Added lines #L19 - L20 were not covered by tests
for company in companies:
# We could not search on `pingen_webhook_secret
# if this field is computed (e.g. env field)
if not company.pingen_webhook_secret:
continue
secret_signature = hmac.new(

Check warning on line 26 in pingen/controllers/main.py

View check run for this annotation

Codecov / codecov/patch

pingen/controllers/main.py#L25-L26

Added lines #L25 - L26 were not covered by tests
company.pingen_webhook_secret.encode("utf-8"),
request_content,
Expand Down
12 changes: 5 additions & 7 deletions pingen/data/pingen_data.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,22 +10,20 @@
<field name="interval_type">hours</field>
<field name="numbercall">-1</field>
<field eval="False" name="doall" />
<field name="model">pingen.document</field>
<field name="function">_push_and_send_to_pingen_cron</field>
<field name="args">()</field>
<field name="model_id" ref="model_pingen_document" />
<field name="code">model._push_and_send_to_pingen_cron</field>
</record>

<record forcecreate="True" id="ir_cron_update_pingen" model="ir.cron">
<field name="name">Run Pingen Document Update</field>
<field eval="True" name="active" />
<field eval="False" name="active" />
<field name="user_id" ref="base.user_root" />
<field name="interval_number">1</field>
<field name="interval_type">days</field>
<field name="numbercall">-1</field>
<field eval="False" name="doall" />
<field name="model">pingen.document</field>
<field name="function">_update_post_infos_cron</field>
<field name="args">()</field>
<field name="model_id" ref="model_pingen_document" />
<field name="code">model._update_post_infos_cron</field>
</record>


Expand Down
Loading

0 comments on commit 0d86765

Please sign in to comment.