Skip to content

Commit 6447d9b

Browse files
committed
[MIG] fastapi_log
1 parent 2c24182 commit 6447d9b

12 files changed

Lines changed: 34 additions & 84 deletions

File tree

fastapi_log/README.rst

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,13 @@ Fastapi Log
1717
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
1818
:alt: License: AGPL-3
1919
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Frest--framework-lightgray.png?logo=github
20-
:target: https://github.com/OCA/rest-framework/tree/16.0/fastapi_log
20+
:target: https://github.com/OCA/rest-framework/tree/18.0/fastapi_log
2121
:alt: OCA/rest-framework
2222
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
23-
:target: https://translation.odoo-community.org/projects/rest-framework-16-0/rest-framework-16-0-fastapi_log
23+
:target: https://translation.odoo-community.org/projects/rest-framework-18-0/rest-framework-18-0-fastapi_log
2424
:alt: Translate me on Weblate
2525
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
26-
:target: https://runboat.odoo-community.org/builds?repo=OCA/rest-framework&target_branch=16.0
26+
:target: https://runboat.odoo-community.org/builds?repo=OCA/rest-framework&target_branch=18.0
2727
:alt: Try me on Runboat
2828

2929
|badge1| |badge2| |badge3| |badge4| |badge5|
@@ -56,7 +56,7 @@ Bug Tracker
5656
Bugs are tracked on `GitHub Issues <https://github.com/OCA/rest-framework/issues>`_.
5757
In case of trouble, please check there if your issue has already been reported.
5858
If you spotted it first, help us to smash it by providing a detailed and welcomed
59-
`feedback <https://github.com/OCA/rest-framework/issues/new?body=module:%20fastapi_log%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
59+
`feedback <https://github.com/OCA/rest-framework/issues/new?body=module:%20fastapi_log%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
6060

6161
Do not contact contributors directly about support or help with technical issues.
6262

@@ -97,6 +97,6 @@ Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:
9797

9898
|maintainer-paradoxxxzero|
9999

100-
This module is part of the `OCA/rest-framework <https://github.com/OCA/rest-framework/tree/16.0/fastapi_log>`_ project on GitHub.
100+
This module is part of the `OCA/rest-framework <https://github.com/OCA/rest-framework/tree/18.0/fastapi_log>`_ project on GitHub.
101101

102102
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

fastapi_log/__manifest__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
{
66
"name": "Fastapi Log",
7-
"version": "16.0.1.1.0",
7+
"version": "18.0.1.0.0",
88
"author": "Akretion, Odoo Community Association (OCA)",
99
"summary": "Log Fastapi requests in database",
1010
"category": "Tools",

fastapi_log/fastapi_dispatcher.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
import logging
77
from contextlib import contextmanager
88

9-
from odoo import registry
109
from odoo.http import _dispatchers
10+
from odoo.modules.registry import Registry
1111

1212
from odoo.addons.fastapi.fastapi_dispatcher import (
1313
FastApiDispatcher as BaseFastApiDispatcher,
@@ -30,7 +30,7 @@ def _create_log_env(self, request_env):
3030
else:
3131
# Create an independent cursor
3232
# so the logs are committed despite any endpoint's exceptions
33-
cr = registry(request_registry.db_name).cursor()
33+
cr = Registry(request_registry.db_name).cursor()
3434

3535
try:
3636
yield request_env(cr=cr, su=True)

fastapi_log/migrations/16.0.1.1.0/post-migration.py

Lines changed: 0 additions & 32 deletions
This file was deleted.

fastapi_log/migrations/16.0.1.1.0/pre-migration.py

Lines changed: 0 additions & 20 deletions
This file was deleted.

fastapi_log/models/api_log.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,7 @@ def _prepare_log_request(self, request):
4545
.sudo()
4646
._get_endpoint(environ["PATH_INFO"])
4747
)
48-
log_request_values["collection_ref"] = "%s,%s" % (
49-
endpoint._name,
50-
endpoint.id,
51-
)
48+
log_request_values["collection_ref"] = f"{endpoint._name},{endpoint.id}"
5249

5350
return log_request_values
5451

fastapi_log/pyproject.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[build-system]
2+
requires = ["whool"]
3+
build-backend = "whool.buildapi"

fastapi_log/static/description/index.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,7 @@ <h1 class="title">Fastapi Log</h1>
369369
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
370370
!! source digest: sha256:ef0c0bceb8ae27bcfebaebc22e2fb4747475f2a2c60dd2d410bc40b6efee9b6a
371371
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
372-
<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/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/rest-framework/tree/16.0/fastapi_log"><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-16-0/rest-framework-16-0-fastapi_log"><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=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
372+
<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/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/rest-framework/tree/18.0/fastapi_log"><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-18-0/rest-framework-18-0-fastapi_log"><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=18.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
373373
<p>This module allows an endpoint to activate full request logging in a
374374
database model.</p>
375375
<p>It is useful to debug production issues or to monitor the usage of a
@@ -401,7 +401,7 @@ <h1><a class="toc-backref" href="#toc-entry-2">Bug Tracker</a></h1>
401401
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/rest-framework/issues">GitHub Issues</a>.
402402
In case of trouble, please check there if your issue has already been reported.
403403
If you spotted it first, help us to smash it by providing a detailed and welcomed
404-
<a class="reference external" href="https://github.com/OCA/rest-framework/issues/new?body=module:%20fastapi_log%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
404+
<a class="reference external" href="https://github.com/OCA/rest-framework/issues/new?body=module:%20fastapi_log%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
405405
<p>Do not contact contributors directly about support or help with technical issues.</p>
406406
</div>
407407
<div class="section" id="credits">
@@ -433,7 +433,7 @@ <h2><a class="toc-backref" href="#toc-entry-6">Maintainers</a></h2>
433433
promote its widespread use.</p>
434434
<p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainer</a>:</p>
435435
<p><a class="reference external image-reference" href="https://github.com/paradoxxxzero"><img alt="paradoxxxzero" src="https://github.com/paradoxxxzero.png?size=40px" /></a></p>
436-
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/rest-framework/tree/16.0/fastapi_log">OCA/rest-framework</a> project on GitHub.</p>
436+
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/rest-framework/tree/18.0/fastapi_log">OCA/rest-framework</a> project on GitHub.</p>
437437
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
438438
</div>
439439
</div>

fastapi_log/tests/common.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,14 @@ def setUp(self):
3232
# Use a side test cursor to be able to get exception logs
3333
reg = self.env.registry
3434
reg.test_log_lock = threading.RLock()
35-
reg.test_log_cr = TestCursor(reg._db.cursor(), reg.test_log_lock)
35+
reg.test_log_cr = TestCursor(reg._db.cursor(), reg.test_log_lock, False)
3636

3737
def tearDown(self):
3838
reg = self.env.registry
3939
reg.test_log_cr.rollback()
4040
reg.test_log_cr.close()
41+
# Also close the real cursor to avoid unclosed errors
42+
reg.test_log_cr._cursor.close()
4143
reg.test_log_cr = None
4244
reg.test_log_lock = None
4345
super().tearDown()
@@ -55,6 +57,6 @@ def log_capturer(self):
5557
log_env = self._get_log_env()
5658
with RecordCapturer(
5759
log_env[self.log_model._name],
58-
[("collection_ref", "=", "%s,%s" % (app._name, app.id))],
60+
[("collection_ref", "=", f"{app._name},{app.id}")],
5961
) as capturer:
6062
yield capturer

fastapi_log/tests/test_fastapi_log.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import os
77
import unittest
88

9+
from odoo.tools import mute_logger
10+
911
from odoo.addons.fastapi.schemas import DemoExceptionType
1012
from odoo.addons.fastapi_log.tests.common import Common
1113

@@ -14,6 +16,7 @@
1416

1517
@unittest.skipIf(os.getenv("SKIP_HTTP_CASE"), "TestFastapiLog skipped")
1618
class TestFastapiLog(Common):
19+
@mute_logger("odoo.http", "odoo.addons.base.models.assetsbundle")
1720
def test_no_log_if_disabled(self):
1821
self.fastapi_demo_app.write({"log_requests": False})
1922

@@ -23,6 +26,7 @@ def test_no_log_if_disabled(self):
2326

2427
self.assertFalse(capturer.records)
2528

29+
@mute_logger("odoo.http", "odoo.addons.base.models.assetsbundle")
2630
def test_log_simple(self):
2731
with self.log_capturer() as capturer:
2832
response = self.url_open("/fastapi_demo/test/demo", timeout=200)
@@ -35,6 +39,7 @@ def test_log_simple(self):
3539
self.assertEqual(log.response_status_code, 200)
3640
self.assertTrue(log.time > 0)
3741

42+
@mute_logger("odoo.http", "odoo.addons.base.models.assetsbundle")
3843
def test_log_exception(self):
3944
with self.log_capturer() as capturer:
4045
route = (
@@ -57,6 +62,7 @@ def test_log_exception(self):
5762
self.assertIn(b"User Error", log.response_body)
5863
self.assertIn("odoo.exceptions.UserError: User Error\n", log.stack_trace)
5964

65+
@mute_logger("odoo.http", "odoo.addons.base.models.assetsbundle")
6066
def test_log_bare_exception(self):
6167
with self.log_capturer() as capturer:
6268
route = (
@@ -79,6 +85,7 @@ def test_log_bare_exception(self):
7985
self.assertIn(b"Internal Server Error", log.response_body)
8086
self.assertIn("NotImplementedError: Internal Server Error\n", log.stack_trace)
8187

88+
@mute_logger("odoo.http", "odoo.addons.base.models.assetsbundle")
8289
def test_log_retrying_post(self):
8390
with self.log_capturer() as capturer:
8491
nbr_retries = 2
@@ -92,19 +99,20 @@ def test_log_retrying_post(self):
9299
)
93100

94101
self.assertEqual(len(capturer.records), 3)
95-
for log in capturer.records[1:]:
102+
for log in capturer.records[:-1]:
96103
self.assertIn("/fastapi_demo/test/demo/retrying", log.request_url)
97104
self.assertEqual(log.request_method, "POST")
98105
self.assertEqual(log.response_status_code, 500)
99106
self.assertTrue(log.time > 0)
100107
self.assertTrue(log.response_body)
101108
self.assertIn(b"fake error", log.response_body)
102109
self.assertIn(
103-
"odoo.addons.fastapi.routers.demo_router.FakeConcurrentUpdateError: fake error",
110+
"odoo.addons.fastapi.routers.demo_router.FakeConcurrentUpdateError:"
111+
" fake error",
104112
log.stack_trace,
105113
)
106114

107-
log = capturer.records[0]
115+
log = capturer.records[-1]
108116
self.assertIn("/fastapi_demo/test/demo/retrying", log.request_url)
109117
self.assertEqual(log.request_method, "POST")
110118
self.assertEqual(log.response_status_code, 200)
@@ -114,6 +122,7 @@ def test_log_retrying_post(self):
114122
self.assertIn(b'"file":"test"', log.response_body)
115123
self.assertFalse(log.stack_trace)
116124

125+
@mute_logger("odoo.http", "odoo.addons.base.models.assetsbundle")
117126
def test_collection_ref(self):
118127
"""The created log holds a reference to its endpoint and viceversa."""
119128
# Arrange

0 commit comments

Comments
 (0)