Skip to content

Commit

Permalink
[BOT] post-merge updates
Browse files Browse the repository at this point in the history
  • Loading branch information
OCA-git-bot committed Oct 3, 2024
1 parent d2e638d commit 3fa322b
Show file tree
Hide file tree
Showing 6 changed files with 153 additions and 66 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ Available addons
----------------
addon | version | maintainers | summary
--- | --- | --- | ---
[fastapi](fastapi/) | 17.0.1.0.1 | [![lmignon](https://github.com/lmignon.png?size=30px)](https://github.com/lmignon) | Odoo FastAPI endpoint
[fastapi](fastapi/) | 17.0.2.0.0 | [![lmignon](https://github.com/lmignon.png?size=30px)](https://github.com/lmignon) | Odoo FastAPI endpoint


Unported addons
Expand Down
40 changes: 39 additions & 1 deletion fastapi/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Odoo FastAPI
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:9055545c121160a5d96e27ac9509e54c04c2202efa16d88aad8f18404765ad60
!! source digest: sha256:d2ae440ec28b3fd00f7d376f77aa07f991b6348b3623cefeb8a3645ced69e963
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
Expand Down Expand Up @@ -1471,6 +1471,44 @@ WebSockets and to stream large responses.
Changelog
=========

17.0.2.0.0 (2024-10-03)
-----------------------

Bugfixes
~~~~~~~~

- This change is a complete rewrite of the way the transactions are
managed when integrating a fastapi application into Odoo.

In the previous implementation, specifics error handlers were put in
place to catch exception occurring in the handling of requests made
to a fastapi application and to rollback the transaction in case of
error. This was done by registering specifics error handlers methods
to the fastapi application using the 'add_exception_handler' method
of the fastapi application. In this implementation, the transaction
was rolled back in the error handler method.

This approach was not working as expected for several reasons:

- The handling of the error at the fastapi level prevented the retry
mechanism to be triggered in case of a DB concurrency error. This
is because the error was catch at the fastapi level and never
bubbled up to the early stage of the processing of the request
where the retry mechanism is implemented.
- The cleanup of the environment and the registry was not properly
done in case of error. In the **'odoo.service.model.retrying'**
method, you can see that the cleanup process is different in case
of error raised by the database and in case of error raised by the
application.

This change fix these issues by ensuring that errors are no more
catch at the fastapi level and bubble up the fastapi processing stack
through the event loop required to transform WSGI to ASGI. As result
the transactional nature of the requests to the fastapi applications
is now properly managed by the Odoo framework.

(`#422 <https://github.com/OCA/rest-framework/issues/422>`__)

17.0.1.0.1 (2024-10-02)
-----------------------

Expand Down
2 changes: 1 addition & 1 deletion fastapi/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"name": "Odoo FastAPI",
"summary": """
Odoo FastAPI endpoint""",
"version": "17.0.1.0.1",
"version": "17.0.2.0.0",
"license": "LGPL-3",
"author": "ACSONE SA/NV,Odoo Community Association (OCA)",
"maintainers": ["lmignon"],
Expand Down
33 changes: 33 additions & 0 deletions fastapi/readme/HISTORY.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,36 @@
## 17.0.2.0.0 (2024-10-03)

### Bugfixes

- This change is a complete rewrite of the way the transactions are managed when
integrating a fastapi application into Odoo.

In the previous implementation, specifics error handlers were put in place to
catch exception occurring in the handling of requests made to a fastapi application
and to rollback the transaction in case of error. This was done by registering
specifics error handlers methods to the fastapi application using the 'add_exception_handler'
method of the fastapi application. In this implementation, the transaction was
rolled back in the error handler method.

This approach was not working as expected for several reasons:

- The handling of the error at the fastapi level prevented the retry mechanism
to be triggered in case of a DB concurrency error. This is because the error
was catch at the fastapi level and never bubbled up to the early stage of the
processing of the request where the retry mechanism is implemented.
- The cleanup of the environment and the registry was not properly done in case
of error. In the **'odoo.service.model.retrying'** method, you can see that
the cleanup process is different in case of error raised by the database
and in case of error raised by the application.

This change fix these issues by ensuring that errors are no more catch at the
fastapi level and bubble up the fastapi processing stack through the event loop
required to transform WSGI to ASGI. As result the transactional nature of the
requests to the fastapi applications is now properly managed by the Odoo framework.

([#422](https://github.com/OCA/rest-framework/issues/422))


## 17.0.1.0.1 (2024-10-02)

### Bugfixes
Expand Down
25 changes: 0 additions & 25 deletions fastapi/readme/newsfragments/422.bugfix

This file was deleted.

117 changes: 79 additions & 38 deletions fastapi/static/description/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -367,7 +367,7 @@ <h1 class="title">Odoo FastAPI</h1>
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:9055545c121160a5d96e27ac9509e54c04c2202efa16d88aad8f18404765ad60
!! source digest: sha256:d2ae440ec28b3fd00f7d376f77aa07f991b6348b3623cefeb8a3645ced69e963
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/lgpl-3.0-standalone.html"><img alt="License: LGPL-3" src="https://img.shields.io/badge/licence-LGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/rest-framework/tree/17.0/fastapi"><img alt="OCA/rest-framework" src="https://img.shields.io/badge/github-OCA%2Frest--framework-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/rest-framework-17-0/rest-framework-17-0-fastapi"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/rest-framework&amp;target_branch=17.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This addon provides the basis to smoothly integrate the
Expand Down Expand Up @@ -437,37 +437,41 @@ <h1 class="title">Odoo FastAPI</h1>
</li>
<li><a class="reference internal" href="#known-issues-roadmap" id="toc-entry-21">Known issues / Roadmap</a></li>
<li><a class="reference internal" href="#changelog" id="toc-entry-22">Changelog</a><ul>
<li><a class="reference internal" href="#section-1" id="toc-entry-23">17.0.1.0.1 (2024-10-02)</a><ul>
<li><a class="reference internal" href="#section-1" id="toc-entry-23">17.0.2.0.0 (2024-10-03)</a><ul>
<li><a class="reference internal" href="#bugfixes" id="toc-entry-24">Bugfixes</a></li>
</ul>
</li>
<li><a class="reference internal" href="#section-2" id="toc-entry-25">16.0.1.2.5 (2024-01-17)</a><ul>
<li><a class="reference internal" href="#section-2" id="toc-entry-25">17.0.1.0.1 (2024-10-02)</a><ul>
<li><a class="reference internal" href="#bugfixes-1" id="toc-entry-26">Bugfixes</a></li>
</ul>
</li>
<li><a class="reference internal" href="#section-3" id="toc-entry-27">16.0.1.2.3 (2023-12-21)</a><ul>
<li><a class="reference internal" href="#section-3" id="toc-entry-27">16.0.1.2.5 (2024-01-17)</a><ul>
<li><a class="reference internal" href="#bugfixes-2" id="toc-entry-28">Bugfixes</a></li>
</ul>
</li>
<li><a class="reference internal" href="#section-4" id="toc-entry-29">16.0.1.2.2 (2023-12-12)</a><ul>
<li><a class="reference internal" href="#section-4" id="toc-entry-29">16.0.1.2.3 (2023-12-21)</a><ul>
<li><a class="reference internal" href="#bugfixes-3" id="toc-entry-30">Bugfixes</a></li>
</ul>
</li>
<li><a class="reference internal" href="#section-5" id="toc-entry-31">16.0.1.2.1 (2023-11-03)</a><ul>
<li><a class="reference internal" href="#section-5" id="toc-entry-31">16.0.1.2.2 (2023-12-12)</a><ul>
<li><a class="reference internal" href="#bugfixes-4" id="toc-entry-32">Bugfixes</a></li>
</ul>
</li>
<li><a class="reference internal" href="#section-6" id="toc-entry-33">16.0.1.2.0 (2023-10-13)</a><ul>
<li><a class="reference internal" href="#features" id="toc-entry-34">Features</a></li>
<li><a class="reference internal" href="#section-6" id="toc-entry-33">16.0.1.2.1 (2023-11-03)</a><ul>
<li><a class="reference internal" href="#bugfixes-5" id="toc-entry-34">Bugfixes</a></li>
</ul>
</li>
<li><a class="reference internal" href="#section-7" id="toc-entry-35">16.0.1.2.0 (2023-10-13)</a><ul>
<li><a class="reference internal" href="#features" id="toc-entry-36">Features</a></li>
</ul>
</li>
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-35">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-36">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-37">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-38">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-39">Maintainers</a></li>
</ul>
</li>
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-37">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-38">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-39">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-40">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-41">Maintainers</a></li>
</ul>
</li>
</ul>
Expand Down Expand Up @@ -1755,10 +1759,47 @@ <h1><a class="toc-backref" href="#toc-entry-21">Known issues / Roadmap</a></h1>
<div class="section" id="changelog">
<h1><a class="toc-backref" href="#toc-entry-22">Changelog</a></h1>
<div class="section" id="section-1">
<h2><a class="toc-backref" href="#toc-entry-23">17.0.1.0.1 (2024-10-02)</a></h2>
<h2><a class="toc-backref" href="#toc-entry-23">17.0.2.0.0 (2024-10-03)</a></h2>
<div class="section" id="bugfixes">
<h3><a class="toc-backref" href="#toc-entry-24">Bugfixes</a></h3>
<ul>
<li><p class="first">This change is a complete rewrite of the way the transactions are
managed when integrating a fastapi application into Odoo.</p>
<p>In the previous implementation, specifics error handlers were put in
place to catch exception occurring in the handling of requests made
to a fastapi application and to rollback the transaction in case of
error. This was done by registering specifics error handlers methods
to the fastapi application using the ‘add_exception_handler’ method
of the fastapi application. In this implementation, the transaction
was rolled back in the error handler method.</p>
<p>This approach was not working as expected for several reasons:</p>
<ul class="simple">
<li>The handling of the error at the fastapi level prevented the retry
mechanism to be triggered in case of a DB concurrency error. This
is because the error was catch at the fastapi level and never
bubbled up to the early stage of the processing of the request
where the retry mechanism is implemented.</li>
<li>The cleanup of the environment and the registry was not properly
done in case of error. In the <strong>‘odoo.service.model.retrying’</strong>
method, you can see that the cleanup process is different in case
of error raised by the database and in case of error raised by the
application.</li>
</ul>
<p>This change fix these issues by ensuring that errors are no more
catch at the fastapi level and bubble up the fastapi processing stack
through the event loop required to transform WSGI to ASGI. As result
the transactional nature of the requests to the fastapi applications
is now properly managed by the Odoo framework.</p>
<p>(<a class="reference external" href="https://github.com/OCA/rest-framework/issues/422">#422</a>)</p>
</li>
</ul>
</div>
</div>
<div class="section" id="section-2">
<h2><a class="toc-backref" href="#toc-entry-25">17.0.1.0.1 (2024-10-02)</a></h2>
<div class="section" id="bugfixes-1">
<h3><a class="toc-backref" href="#toc-entry-26">Bugfixes</a></h3>
<ul>
<li><p class="first">Fix compatibility issues with the latest Odoo version</p>
<p>From
<a class="reference external" href="https://github.com/odoo/odoo/commit/cb1d057dcab28cb0b0487244ba99231ee292502e">https://github.com/odoo/odoo/commit/cb1d057dcab28cb0b0487244ba99231ee292502e</a>
Expand All @@ -1771,10 +1812,10 @@ <h3><a class="toc-backref" href="#toc-entry-24">Bugfixes</a></h3>
</ul>
</div>
</div>
<div class="section" id="section-2">
<h2><a class="toc-backref" href="#toc-entry-25">16.0.1.2.5 (2024-01-17)</a></h2>
<div class="section" id="bugfixes-1">
<h3><a class="toc-backref" href="#toc-entry-26">Bugfixes</a></h3>
<div class="section" id="section-3">
<h2><a class="toc-backref" href="#toc-entry-27">16.0.1.2.5 (2024-01-17)</a></h2>
<div class="section" id="bugfixes-2">
<h3><a class="toc-backref" href="#toc-entry-28">Bugfixes</a></h3>
<ul>
<li><p class="first">Odoo has done an update and now, it checks domains of ir.rule on
creation and modification.</p>
Expand All @@ -1787,10 +1828,10 @@ <h3><a class="toc-backref" href="#toc-entry-26">Bugfixes</a></h3>
</ul>
</div>
</div>
<div class="section" id="section-3">
<h2><a class="toc-backref" href="#toc-entry-27">16.0.1.2.3 (2023-12-21)</a></h2>
<div class="section" id="bugfixes-2">
<h3><a class="toc-backref" href="#toc-entry-28">Bugfixes</a></h3>
<div class="section" id="section-4">
<h2><a class="toc-backref" href="#toc-entry-29">16.0.1.2.3 (2023-12-21)</a></h2>
<div class="section" id="bugfixes-3">
<h3><a class="toc-backref" href="#toc-entry-30">Bugfixes</a></h3>
<ul>
<li><p class="first">In case of exception in endpoint execution, close the database cursor
after rollback.</p>
Expand All @@ -1801,10 +1842,10 @@ <h3><a class="toc-backref" href="#toc-entry-28">Bugfixes</a></h3>
</ul>
</div>
</div>
<div class="section" id="section-4">
<h2><a class="toc-backref" href="#toc-entry-29">16.0.1.2.2 (2023-12-12)</a></h2>
<div class="section" id="bugfixes-3">
<h3><a class="toc-backref" href="#toc-entry-30">Bugfixes</a></h3>
<div class="section" id="section-5">
<h2><a class="toc-backref" href="#toc-entry-31">16.0.1.2.2 (2023-12-12)</a></h2>
<div class="section" id="bugfixes-4">
<h3><a class="toc-backref" href="#toc-entry-32">Bugfixes</a></h3>
<ul class="simple">
<li>When using the ‘FastAPITransactionCase’ class, allows to specify a
specific override of the ‘authenticated_partner_impl’ method into the
Expand All @@ -1820,10 +1861,10 @@ <h3><a class="toc-backref" href="#toc-entry-30">Bugfixes</a></h3>
</ul>
</div>
</div>
<div class="section" id="section-5">
<h2><a class="toc-backref" href="#toc-entry-31">16.0.1.2.1 (2023-11-03)</a></h2>
<div class="section" id="bugfixes-4">
<h3><a class="toc-backref" href="#toc-entry-32">Bugfixes</a></h3>
<div class="section" id="section-6">
<h2><a class="toc-backref" href="#toc-entry-33">16.0.1.2.1 (2023-11-03)</a></h2>
<div class="section" id="bugfixes-5">
<h3><a class="toc-backref" href="#toc-entry-34">Bugfixes</a></h3>
<ul>
<li><p class="first">Fix a typo in the Field declaration of the ‘count’ attribute of the
‘PagedCollection’ schema.</p>
Expand All @@ -1834,10 +1875,10 @@ <h3><a class="toc-backref" href="#toc-entry-32">Bugfixes</a></h3>
</ul>
</div>
</div>
<div class="section" id="section-6">
<h2><a class="toc-backref" href="#toc-entry-33">16.0.1.2.0 (2023-10-13)</a></h2>
<div class="section" id="section-7">
<h2><a class="toc-backref" href="#toc-entry-35">16.0.1.2.0 (2023-10-13)</a></h2>
<div class="section" id="features">
<h3><a class="toc-backref" href="#toc-entry-34">Features</a></h3>
<h3><a class="toc-backref" href="#toc-entry-36">Features</a></h3>
<ul class="simple">
<li>The field <em>total</em> in the <em>PagedCollection</em> schema is replaced by the
field <em>count</em>. The field <em>total</em> is now deprecated and will be
Expand All @@ -1853,29 +1894,29 @@ <h3><a class="toc-backref" href="#toc-entry-34">Features</a></h3>
</div>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#toc-entry-35">Bug Tracker</a></h1>
<h1><a class="toc-backref" href="#toc-entry-37">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/rest-framework/issues">GitHub Issues</a>.
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
<a class="reference external" href="https://github.com/OCA/rest-framework/issues/new?body=module:%20fastapi%0Aversion:%2017.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h1><a class="toc-backref" href="#toc-entry-36">Credits</a></h1>
<h1><a class="toc-backref" href="#toc-entry-38">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#toc-entry-37">Authors</a></h2>
<h2><a class="toc-backref" href="#toc-entry-39">Authors</a></h2>
<ul class="simple">
<li>ACSONE SA/NV</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#toc-entry-38">Contributors</a></h2>
<h2><a class="toc-backref" href="#toc-entry-40">Contributors</a></h2>
<ul class="simple">
<li>Laurent Mignon &lt;<a class="reference external" href="mailto:laurent.mignon&#64;acsone.eu">laurent.mignon&#64;acsone.eu</a>&gt;</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#toc-entry-39">Maintainers</a></h2>
<h2><a class="toc-backref" href="#toc-entry-41">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org">
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
Expand Down

0 comments on commit 3fa322b

Please sign in to comment.