From ecb4fe80d9df1c421080a7145ce565ac22f935ed Mon Sep 17 00:00:00 2001 From: santostelmo Date: Wed, 18 Feb 2026 08:55:10 +0100 Subject: [PATCH 1/8] [18.0][ADD] database_autovacuum_tuning --- database_autovacuum_tuning/README.rst | 118 +++++ database_autovacuum_tuning/__init__.py | 1 + database_autovacuum_tuning/__manifest__.py | 24 + .../data/config_parameter.xml | 18 + database_autovacuum_tuning/data/ir_cron.xml | 13 + database_autovacuum_tuning/models/__init__.py | 2 + .../models/database_autovacuum_tuning.py | 85 ++++ .../models/res_config_settings.py | 14 + database_autovacuum_tuning/pyproject.toml | 3 + .../readme/CONTRIBUTORS.md | 2 + .../readme/DESCRIPTION.md | 12 + database_autovacuum_tuning/readme/USAGE.md | 20 + .../security/ir.model.access.csv | 2 + .../static/description/index.html | 466 ++++++++++++++++++ database_autovacuum_tuning/tests/__init__.py | 1 + .../tests/test_database_autovacuum_tunning.py | 36 ++ .../database_autovacuum_tuning_views.xml | 49 ++ .../views/res_config_settings_views.xml | 24 + 18 files changed, 890 insertions(+) create mode 100644 database_autovacuum_tuning/README.rst create mode 100644 database_autovacuum_tuning/__init__.py create mode 100644 database_autovacuum_tuning/__manifest__.py create mode 100644 database_autovacuum_tuning/data/config_parameter.xml create mode 100644 database_autovacuum_tuning/data/ir_cron.xml create mode 100644 database_autovacuum_tuning/models/__init__.py create mode 100644 database_autovacuum_tuning/models/database_autovacuum_tuning.py create mode 100644 database_autovacuum_tuning/models/res_config_settings.py create mode 100644 database_autovacuum_tuning/pyproject.toml create mode 100644 database_autovacuum_tuning/readme/CONTRIBUTORS.md create mode 100644 database_autovacuum_tuning/readme/DESCRIPTION.md create mode 100644 database_autovacuum_tuning/readme/USAGE.md create mode 100644 database_autovacuum_tuning/security/ir.model.access.csv create mode 100644 database_autovacuum_tuning/static/description/index.html create mode 100644 database_autovacuum_tuning/tests/__init__.py create mode 100644 database_autovacuum_tuning/tests/test_database_autovacuum_tunning.py create mode 100644 database_autovacuum_tuning/views/database_autovacuum_tuning_views.xml create mode 100644 database_autovacuum_tuning/views/res_config_settings_views.xml diff --git a/database_autovacuum_tuning/README.rst b/database_autovacuum_tuning/README.rst new file mode 100644 index 00000000000..5dcbc419bbf --- /dev/null +++ b/database_autovacuum_tuning/README.rst @@ -0,0 +1,118 @@ +========================== +Database Autovacuum Tuning +========================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:162a7723c383e0b6239b46e50d6884767430de1a22f1c42a6c90d80e25b1b4fd + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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-LGPL--3-blue.png + :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html + :alt: License: LGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github + :target: https://github.com/OCA/server-tools/tree/18.0/database_autovacuum_tuning + :alt: OCA/server-tools +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/server-tools-18-0/server-tools-18-0-database_autovacuum_tuning + :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/server-tools&target_branch=18.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Database Autovacuum Tuning helps administrators keep PostgreSQL healthy +by exposing recommended autovacuum settings in Odoo. It provides +guidance and documentation for sizing thresholds and scale factors so +large, busy databases avoid table bloat and excessive vacuum lag. Use it +to standardize autovacuum configuration across environments and speed up +maintenance operations without manual tuning. + +This module is mostly useful for PostgreSQL <= 17. PostgreSQL 18.0 +introduces the ``autovacuum_vacuum_max_threshold`` parameter, which +already provides the capability this module targets. + +The ``pgstattuple`` extension must be installed on the database. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +1. Install the module on the database you want to tune. + +2. Go to Settings > Technical > Database Structure > Database Autovacuum + Tuning and review the recommended thresholds and scale factors. + +3. If needed, override the defaults using the following system + parameters: + + - ``database_autovacuum_tuning.autovacuum_vacuum_max_threshold`` + - ``database_autovacuum_tuning.autovacuum_vacuum_analyze_max_threshold`` + +4. The configuration parameters are applied to tables by the daily cron + job. When the number of dead tuples in a table exceeds the vacuum + threshold, it applies the following configuration: + + .. code:: sql + + ALTER TABLE {schemaname}.{tablename} SET ( + autovacuum_vacuum_scale_factor = 0, + autovacuum_vacuum_threshold = %s, + autovacuum_analyze_scale_factor = 0, + autovacuum_analyze_threshold = %s + ) + +5. Monitor vacuum activity and table bloat, then adjust the settings if + your workload changes. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub 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 `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +------- + +* Camptocamp + +Contributors +------------ + +- Telmo Santos +- Alexandre Fayolle + +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/server-tools `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/database_autovacuum_tuning/__init__.py b/database_autovacuum_tuning/__init__.py new file mode 100644 index 00000000000..0650744f6bc --- /dev/null +++ b/database_autovacuum_tuning/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/database_autovacuum_tuning/__manifest__.py b/database_autovacuum_tuning/__manifest__.py new file mode 100644 index 00000000000..7b1508ca6d4 --- /dev/null +++ b/database_autovacuum_tuning/__manifest__.py @@ -0,0 +1,24 @@ +# Copyright 2026 Camptocamp (https://www.camptocamp.com). +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html) + +{ + "name": "Database Autovacuum Tuning", + "summary": "Scheduled checks for Odoo autovacuum thresholds and scale factors", + "version": "18.0.1.0.1", + "author": "Camptocamp, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/server-tools", + "category": "Tools", + "depends": [ + "base_setup", + ], + "data": [ + "data/config_parameter.xml", + "data/ir_cron.xml", + "security/ir.model.access.csv", + "views/res_config_settings_views.xml", + "views/database_autovacuum_tuning_views.xml", + ], + "development_status": "Alpha", + "license": "LGPL-3", + "installable": True, +} diff --git a/database_autovacuum_tuning/data/config_parameter.xml b/database_autovacuum_tuning/data/config_parameter.xml new file mode 100644 index 00000000000..057ab3e8bb6 --- /dev/null +++ b/database_autovacuum_tuning/data/config_parameter.xml @@ -0,0 +1,18 @@ + + + + database_autovacuum_tuning.autovacuum_vacuum_max_threshold + 100000 + + + database_autovacuum_tuning.autovacuum_vacuum_analyze_max_threshold + 50000 + + diff --git a/database_autovacuum_tuning/data/ir_cron.xml b/database_autovacuum_tuning/data/ir_cron.xml new file mode 100644 index 00000000000..7929b42f093 --- /dev/null +++ b/database_autovacuum_tuning/data/ir_cron.xml @@ -0,0 +1,13 @@ + + + + Database Autovacuum Tuning + + code + model._db_autovacuum_tune() + 1 + days + True + + + diff --git a/database_autovacuum_tuning/models/__init__.py b/database_autovacuum_tuning/models/__init__.py new file mode 100644 index 00000000000..c3700214bb1 --- /dev/null +++ b/database_autovacuum_tuning/models/__init__.py @@ -0,0 +1,2 @@ +from . import database_autovacuum_tuning +from . import res_config_settings diff --git a/database_autovacuum_tuning/models/database_autovacuum_tuning.py b/database_autovacuum_tuning/models/database_autovacuum_tuning.py new file mode 100644 index 00000000000..fc0cf017a0e --- /dev/null +++ b/database_autovacuum_tuning/models/database_autovacuum_tuning.py @@ -0,0 +1,85 @@ +# Copyright 2026 Camptocamp (https://www.camptocamp.com). +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html) + + +from odoo import api, fields, models + + +class DatabaseAutovacuumTuning(models.Model): + _name = "database.autovacuum.tuning" + _description = "Database Autovacuum Tuning" + + name = fields.Char(required=True, help="Table name") + vacuum_threshold = fields.Integer() + analyze_threshold = fields.Integer() + + @api.model + def _db_autovacuum_tune(self): + vacuum_threshold, analyze_threshold = self._get_thresholds() + if vacuum_threshold <= 0: + return + results = self._get_tables_exceeding_dead_tuples(vacuum_threshold) + for schemaname, tablename, _ in results: + self.env.cr.execute( + f""" + ALTER TABLE {schemaname}.{tablename} SET ( + autovacuum_vacuum_scale_factor = 0, + autovacuum_vacuum_threshold = %s, + autovacuum_analyze_scale_factor = 0, + autovacuum_analyze_threshold = %s + ) + """, + (vacuum_threshold, analyze_threshold), + ) + self.sudo().create( + { + "name": f"{schemaname}.{tablename}", + "vacuum_threshold": vacuum_threshold, + "analyze_threshold": analyze_threshold, + } + ) + + def _get_tables_exceeding_dead_tuples(self, vacuum_threshold): + query = """ + SELECT + t.schemaname, + t.tablename, + st.n_dead_tup + FROM pg_tables AS t + JOIN pg_stat_all_tables AS st + ON st.schemaname = t.schemaname + AND st.relname = t.tablename + WHERE t.tableowner = current_user + AND t.schemaname = 'public' + AND st.n_dead_tup > %s + ORDER BY t.schemaname, t.tablename + """ + self.env.cr.execute(query, (vacuum_threshold,)) + return self.env.cr.fetchall() + + def _get_thresholds(self): + try: + vacuum_threshold = int( + self.env["ir.config_parameter"] + .sudo() + .get_param( + "database_autovacuum_tuning.autovacuum_vacuum_max_threshold", + default="0", + ) + ) + except ValueError: + vacuum_threshold = 0 + + try: + analyze_threshold = int( + self.env["ir.config_parameter"] + .sudo() + .get_param( + "database_autovacuum_tuning.autovacuum_vacuum_analyze_max_threshold", + default="0", + ) + ) + except ValueError: + analyze_threshold = 0 + + return vacuum_threshold, analyze_threshold diff --git a/database_autovacuum_tuning/models/res_config_settings.py b/database_autovacuum_tuning/models/res_config_settings.py new file mode 100644 index 00000000000..f864d9daaab --- /dev/null +++ b/database_autovacuum_tuning/models/res_config_settings.py @@ -0,0 +1,14 @@ +# Copyright 2026 Camptocamp (https://www.camptocamp.com). +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html) +from odoo import fields, models + + +class ResConfigSettings(models.TransientModel): + _inherit = "res.config.settings" + + autovacuum_vacuum_max_threshold = fields.Integer( + config_parameter="database_autovacuum_tuning.autovacuum_vacuum_max_threshold", + ) + autovacuum_vacuum_analyze_max_threshold = fields.Integer( + config_parameter="database_autovacuum_tuning.autovacuum_vacuum_analyze_max_threshold", + ) diff --git a/database_autovacuum_tuning/pyproject.toml b/database_autovacuum_tuning/pyproject.toml new file mode 100644 index 00000000000..4231d0cccb3 --- /dev/null +++ b/database_autovacuum_tuning/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/database_autovacuum_tuning/readme/CONTRIBUTORS.md b/database_autovacuum_tuning/readme/CONTRIBUTORS.md new file mode 100644 index 00000000000..62e88c57a16 --- /dev/null +++ b/database_autovacuum_tuning/readme/CONTRIBUTORS.md @@ -0,0 +1,2 @@ +- Telmo Santos \<\> +- Alexandre Fayolle \<\> diff --git a/database_autovacuum_tuning/readme/DESCRIPTION.md b/database_autovacuum_tuning/readme/DESCRIPTION.md new file mode 100644 index 00000000000..9193c261573 --- /dev/null +++ b/database_autovacuum_tuning/readme/DESCRIPTION.md @@ -0,0 +1,12 @@ +Database Autovacuum Tuning helps administrators keep PostgreSQL healthy by +exposing recommended autovacuum settings in Odoo. It provides guidance and +documentation for sizing thresholds and scale factors so large, busy databases +avoid table bloat and excessive vacuum lag. Use it to standardize autovacuum +configuration across environments and speed up maintenance operations without +manual tuning. + +This module is mostly useful for PostgreSQL <= 17. PostgreSQL 18.0 introduces +the `autovacuum_vacuum_max_threshold` parameter, which already provides the +capability this module targets. + +The `pgstattuple` extension must be installed on the database. \ No newline at end of file diff --git a/database_autovacuum_tuning/readme/USAGE.md b/database_autovacuum_tuning/readme/USAGE.md new file mode 100644 index 00000000000..c82e039acc4 --- /dev/null +++ b/database_autovacuum_tuning/readme/USAGE.md @@ -0,0 +1,20 @@ +1. Install the module on the database you want to tune. +2. Go to Settings > Technical > Database Structure > Database Autovacuum + Tuning and review the recommended thresholds and scale factors. +3. If needed, override the defaults using the following system parameters: + - `database_autovacuum_tuning.autovacuum_vacuum_max_threshold` + - `database_autovacuum_tuning.autovacuum_vacuum_analyze_max_threshold` +4. The configuration parameters are applied to tables by the daily cron job. + When the number of dead tuples in a table exceeds the vacuum threshold, it + applies the following configuration: + + ```sql + ALTER TABLE {schemaname}.{tablename} SET ( + autovacuum_vacuum_scale_factor = 0, + autovacuum_vacuum_threshold = %s, + autovacuum_analyze_scale_factor = 0, + autovacuum_analyze_threshold = %s + ) + ``` +5. Monitor vacuum activity and table bloat, then adjust the settings if your + workload changes. diff --git a/database_autovacuum_tuning/security/ir.model.access.csv b/database_autovacuum_tuning/security/ir.model.access.csv new file mode 100644 index 00000000000..432a55c91b6 --- /dev/null +++ b/database_autovacuum_tuning/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_database_autovacuum_tuning_system,access_database_autovacuum_tuning_system,model_database_autovacuum_tuning,base.group_system,1,0,1,1 diff --git a/database_autovacuum_tuning/static/description/index.html b/database_autovacuum_tuning/static/description/index.html new file mode 100644 index 00000000000..e909053750c --- /dev/null +++ b/database_autovacuum_tuning/static/description/index.html @@ -0,0 +1,466 @@ + + + + + +Database Autovacuum Tuning + + + +
+

Database Autovacuum Tuning

+ + +

Beta License: LGPL-3 OCA/server-tools Translate me on Weblate Try me on Runboat

+

Database Autovacuum Tuning helps administrators keep PostgreSQL healthy +by exposing recommended autovacuum settings in Odoo. It provides +guidance and documentation for sizing thresholds and scale factors so +large, busy databases avoid table bloat and excessive vacuum lag. Use it +to standardize autovacuum configuration across environments and speed up +maintenance operations without manual tuning.

+

This module is mostly useful for PostgreSQL <= 17. PostgreSQL 18.0 +introduces the autovacuum_vacuum_max_threshold parameter, which +already provides the capability this module targets.

+

The pgstattuple extension must be installed on the database.

+

Table of contents

+ +
+

Usage

+
    +
  1. Install the module on the database you want to tune.

    +
  2. +
  3. Go to Settings > Technical > Database Structure > Database Autovacuum +Tuning and review the recommended thresholds and scale factors.

    +
  4. +
  5. If needed, override the defaults using the following system +parameters:

    +
      +
    • database_autovacuum_tuning.autovacuum_vacuum_max_threshold
    • +
    • database_autovacuum_tuning.autovacuum_vacuum_analyze_max_threshold
    • +
    +
  6. +
  7. The configuration parameters are applied to tables by the daily cron +job. When the number of dead tuples in a table exceeds the vacuum +threshold, it applies the following configuration:

    +
    +ALTER TABLE {schemaname}.{tablename} SET (
    +     autovacuum_vacuum_scale_factor = 0,
    +     autovacuum_vacuum_threshold = %s,
    +     autovacuum_analyze_scale_factor = 0,
    +     autovacuum_analyze_threshold = %s
    +)
    +
    +
  8. +
  9. Monitor vacuum activity and table bloat, then adjust the settings if +your workload changes.

    +
  10. +
+
+
+

Bug Tracker

+

Bugs are tracked on GitHub 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.

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • Camptocamp
  • +
+
+ +
+

Maintainers

+

This module is maintained by the OCA.

+ +Odoo Community Association + +

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/server-tools project on GitHub.

+

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

+
+
+
+ + diff --git a/database_autovacuum_tuning/tests/__init__.py b/database_autovacuum_tuning/tests/__init__.py new file mode 100644 index 00000000000..a17e75ae912 --- /dev/null +++ b/database_autovacuum_tuning/tests/__init__.py @@ -0,0 +1 @@ +from . import test_database_autovacuum_tunning diff --git a/database_autovacuum_tuning/tests/test_database_autovacuum_tunning.py b/database_autovacuum_tuning/tests/test_database_autovacuum_tunning.py new file mode 100644 index 00000000000..e285197e9e1 --- /dev/null +++ b/database_autovacuum_tuning/tests/test_database_autovacuum_tunning.py @@ -0,0 +1,36 @@ +# Copyright 2026 Camptocamp +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). + +from unittest.mock import patch + +from odoo.tests import TransactionCase + + +class TestAutovacuumTunning(TransactionCase): + def _set_thresholds(self, vacuum_threshold=1, analyze_threshold=1): + params = self.env["ir.config_parameter"].sudo() + params.set_param( + "database_autovacuum_tuning.autovacuum_vacuum_max_threshold", + str(vacuum_threshold), + ) + params.set_param( + "database_autovacuum_tuning.autovacuum_vacuum_analyze_max_threshold", + str(analyze_threshold), + ) + + def test_tune_creates_record_for_res_partner(self): + # Set low thresholds to ensure res_partner exceeds them + self._set_thresholds(vacuum_threshold=9, analyze_threshold=5) + # Mock the method to return res_partner as exceeding the thresholds + with patch.object( + self.env.registry["database.autovacuum.tuning"], + "_get_tables_exceeding_dead_tuples", + return_value=[("public", "res_partner", 10)], + ): + self.env["database.autovacuum.tuning"]._db_autovacuum_tune() + record = self.env["database.autovacuum.tuning"].search( + [("name", "=", "public.res_partner")], + limit=1, + ) + + self.assertTrue(record) diff --git a/database_autovacuum_tuning/views/database_autovacuum_tuning_views.xml b/database_autovacuum_tuning/views/database_autovacuum_tuning_views.xml new file mode 100644 index 00000000000..20c6e461166 --- /dev/null +++ b/database_autovacuum_tuning/views/database_autovacuum_tuning_views.xml @@ -0,0 +1,49 @@ + + + + database.autovacuum.tuning + + + + + + + + + + + + database.autovacuum.tuning + + + + + + + + + + + + + Database Vacuum Tuning + database.autovacuum.tuning + list + + + + + Database Autovacuum Tuning + + + + + diff --git a/database_autovacuum_tuning/views/res_config_settings_views.xml b/database_autovacuum_tuning/views/res_config_settings_views.xml new file mode 100644 index 00000000000..b6204ee3ab4 --- /dev/null +++ b/database_autovacuum_tuning/views/res_config_settings_views.xml @@ -0,0 +1,24 @@ + + + + Database Autovacuum Tuning Settings + res.config.settings + + + + + + + + + + + + + From d5418ef6ba0c3746f8c41b4ee3d5b1c6aa44912a Mon Sep 17 00:00:00 2001 From: Denis Leemann Date: Tue, 4 Nov 2025 11:17:02 +0100 Subject: [PATCH 2/8] FIX mail_cleanup: command CLOSE illegal in state AUTH, only allowed in states SELECTED --- mail_cleanup/models/fetchmail_server.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mail_cleanup/models/fetchmail_server.py b/mail_cleanup/models/fetchmail_server.py index e23649a3982..ace780d31b0 100644 --- a/mail_cleanup/models/fetchmail_server.py +++ b/mail_cleanup/models/fetchmail_server.py @@ -51,7 +51,6 @@ def _cleanup_fetchmail_server(self, server, imap_server): expiration_date = datetime.date.today() expiration_date -= relativedelta(days=server.cleanup_days) search_text = expiration_date.strftime("(UNSEEN BEFORE %d-%b-%Y)") - imap_server.select() result, data = imap_server.search(None, search_text) for num in data[0].split(): try: @@ -86,7 +85,6 @@ def _purge_fetchmail_server(self, server, imap_server): purge_date = datetime.date.today() purge_date -= relativedelta(days=server.purge_days) search_text = purge_date.strftime("(BEFORE %d-%b-%Y)") - imap_server.select() result, data = imap_server.search(None, search_text) for num in data[0].split(): try: @@ -122,6 +120,7 @@ def fetch_mail(self, raise_exception=True): if server.server_type == "imap": try: imap_server = server.connect() + imap_server.select() if server.cleanup_days > 0: self._cleanup_fetchmail_server(server, imap_server) if server.purge_days > 0: From ceefe1db2535c396a0d235773024daee747adf9f Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 23 Apr 2026 13:52:43 +0000 Subject: [PATCH 3/8] [BOT] post-merge updates --- README.md | 2 +- mail_cleanup/README.rst | 2 +- mail_cleanup/__manifest__.py | 2 +- mail_cleanup/static/description/index.html | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index fc987dc5750..22edfd55301 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ addon | version | maintainers | summary [html_text](html_text/) | 18.0.1.0.0 | | Generate excerpts from any HTML field [iap_alternative_provider](iap_alternative_provider/) | 18.0.1.0.0 | sebastienbeau | Base module for providing alternative provider for iap apps [jsonifier](jsonifier/) | 18.0.1.1.1 | | JSON-ify data for all models -[mail_cleanup](mail_cleanup/) | 18.0.1.0.1 | | Mark as read or delete mails after a set time +[mail_cleanup](mail_cleanup/) | 18.0.1.0.2 | | Mark as read or delete mails after a set time [mail_template_attachment_per_lang](mail_template_attachment_per_lang/) | 18.0.1.0.0 | | Set language specific attachments on mail templates. [module_analysis](module_analysis/) | 18.0.1.0.0 | legalsylvain | Add analysis tools regarding installed modules to know which installed modules comes from Odoo Core, OCA, or are custom modules [module_auto_update](module_auto_update/) | 18.0.1.0.1 | | Automatically update Odoo modules diff --git a/mail_cleanup/README.rst b/mail_cleanup/README.rst index 54696390bb9..55798cca8d8 100644 --- a/mail_cleanup/README.rst +++ b/mail_cleanup/README.rst @@ -11,7 +11,7 @@ Mail cleanup !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:1c8f7c5378b459f9a9fcf644ee4a95a4bc193225e58b73502defbedc4c2d6bf6 + !! source digest: sha256:b67f9f7207a78cd4df55008d31ccfb9f7b3d260bd4cccd2fbf2d0ae99fd6a749 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png diff --git a/mail_cleanup/__manifest__.py b/mail_cleanup/__manifest__.py index fbd5a10ea5e..8f27f3098d6 100644 --- a/mail_cleanup/__manifest__.py +++ b/mail_cleanup/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { "name": "Mail cleanup", - "version": "18.0.1.0.1", + "version": "18.0.1.0.2", "category": "Tools", "summary": "Mark as read or delete mails after a set time", "author": "Camptocamp, " "Odoo Community Association (OCA)", diff --git a/mail_cleanup/static/description/index.html b/mail_cleanup/static/description/index.html index 40b28a93f4f..3525f9c22c0 100644 --- a/mail_cleanup/static/description/index.html +++ b/mail_cleanup/static/description/index.html @@ -372,7 +372,7 @@

Mail cleanup

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:1c8f7c5378b459f9a9fcf644ee4a95a4bc193225e58b73502defbedc4c2d6bf6 +!! source digest: sha256:b67f9f7207a78cd4df55008d31ccfb9f7b3d260bd4cccd2fbf2d0ae99fd6a749 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

Beta License: AGPL-3 OCA/server-tools Translate me on Weblate Try me on Runboat

From 128e907aadf968eeed6c5f3d95b1ee6920a92609 Mon Sep 17 00:00:00 2001 From: Ediz Duman Date: Sun, 26 Apr 2026 21:59:33 +0000 Subject: [PATCH 4/8] Translated using Weblate (Turkish) Currently translated at 100.0% (91 of 91 strings) Translation: server-tools-18.0/server-tools-18.0-auditlog Translate-URL: https://translation.odoo-community.org/projects/server-tools-18-0/server-tools-18-0-auditlog/tr/ --- auditlog/i18n/tr.po | 111 +++++++++++++++++++++++--------------------- 1 file changed, 58 insertions(+), 53 deletions(-) diff --git a/auditlog/i18n/tr.po b/auditlog/i18n/tr.po index 033cbe302fa..7599479fbed 100644 --- a/auditlog/i18n/tr.po +++ b/auditlog/i18n/tr.po @@ -9,20 +9,20 @@ msgstr "" "Project-Id-Version: Odoo Server 11.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-12-06 03:40+0000\n" -"PO-Revision-Date: 2026-01-15 16:43+0000\n" -"Last-Translator: Betül Öğmen \n" +"PO-Revision-Date: 2026-04-27 00:45+0000\n" +"Last-Translator: Ediz Duman \n" "Language-Team: Turkish (https://www.transifex.com/oca/teams/23907/tr/)\n" "Language: tr\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 5.10.4\n" +"X-Generator: Weblate 5.15.2\n" #. module: auditlog #: model:ir.model.fields,field_description:auditlog.field_auditlog_rule__action_id msgid "Action" -msgstr "Eylem" +msgstr "Aksiyon" #. module: auditlog #: model:ir.ui.menu,name:auditlog.menu_audit @@ -37,23 +37,23 @@ msgstr "Denetim Günlüğü - Eski günlükleri sil" #. module: auditlog #: model:ir.model,name:auditlog.model_auditlog_http_session msgid "Auditlog - HTTP User session log" -msgstr "Denetim Günlüğü - HTTP kullanıcı oturum logu" +msgstr "Denetim Günlüğü - HTTP kullanıcı oturum günlüğü" #. module: auditlog #: model:ir.model,name:auditlog.model_auditlog_http_request msgid "Auditlog - HTTP request log" -msgstr "Denetim Günlüğü - HTTP istek geçmişi" +msgstr "Denetim Günlüğü - HTTP istek günlüğü" #. module: auditlog #: model:ir.model,name:auditlog.model_auditlog_log msgid "Auditlog - Log" -msgstr "Denetim Günlüğü - geçmiş" +msgstr "Denetim Günlüğü - Günlük" #. module: auditlog #: model:ir.model,name:auditlog.model_auditlog_log_line #: model:ir.model,name:auditlog.model_auditlog_log_line_view msgid "Auditlog - Log details (fields updated)" -msgstr "Denetim Günlüğü - Günlük detatları (güncellenen alanlar) " +msgstr "Denetim Günlüğü - Günlük detayları (güncellenen alanlar)" #. module: auditlog #: model:ir.model,name:auditlog.model_auditlog_rule @@ -68,7 +68,7 @@ msgstr "Denetim Günlüğü Yöneticisi" #. module: auditlog #: model:ir.module.category,name:auditlog.security_auditlog_groups msgid "Auditlog Rights" -msgstr "Denetim Günlüğü Hakları" +msgstr "Denetim Günlüğü Yetkileri" #. module: auditlog #: model:res.groups,name:auditlog.group_auditlog_user @@ -78,7 +78,7 @@ msgstr "Denetim Günlüğü Kullanıcısı" #. module: auditlog #: model:ir.actions.server,name:auditlog.ir_cron_auditlog_autovacuum_ir_actions_server msgid "Auto-vacuum audit logs" -msgstr "Otomatik vakum denetim günlüğü" +msgstr "Denetim günlüklerini otomatik temizle" #. module: auditlog #: model:ir.model.fields,field_description:auditlog.field_auditlog_rule__capture_record @@ -112,7 +112,7 @@ msgstr "Oluşturan" #: model_terms:ir.ui.view,arch_db:auditlog.view_auditlog_http_request_search #: model_terms:ir.ui.view,arch_db:auditlog.view_auditlog_http_session_search msgid "Created on" -msgstr "Oluşturuldu" +msgstr "Oluşturulma" #. module: auditlog #: model_terms:ir.ui.view,arch_db:auditlog.view_auditlog_line_search @@ -133,7 +133,7 @@ msgstr "Açıklama" #: model:ir.model.fields,field_description:auditlog.field_auditlog_log_line_view__display_name #: model:ir.model.fields,field_description:auditlog.field_auditlog_rule__display_name msgid "Display Name" -msgstr "Görünen İsim" +msgstr "Görünen Ad" #. module: auditlog #: model:ir.model.fields.selection,name:auditlog.selection__auditlog_rule__state__draft @@ -176,7 +176,7 @@ msgstr "Hariç Tutulacak Alanlar" #: model:ir.model.fields,field_description:auditlog.field_auditlog_log__line_ids #: model_terms:ir.ui.view,arch_db:auditlog.view_auditlog_log_form msgid "Fields updated" -msgstr "Alanlar güncellendi" +msgstr "Güncellenen Alanlar" #. module: auditlog #: model:ir.model.fields.selection,name:auditlog.selection__auditlog_log__log_type__full @@ -192,10 +192,11 @@ msgid "" "Fast log: only log the changes made through the create and write operations " "(less information, but it is faster)" msgstr "" -"Tam Günlük: İşlemden önceki ve sonraki verinin farkını bulur. (hesaplanan " -"alanlar gibi bilgileri saklar ama daha yavaş çalışır)\n" -"Hızlı Günlük: Sadece oluştur ve yaz işlemleri ile yapılanları kaydeder. " -"(daha az bilgi içerir ama daha hızlıdır)" +"Tam Günlük: İşlem öncesi ve sonrası veriler arasındaki farkı bulur " +"(güncellenen hesaplanan alanlar gibi daha fazla bilgi kaydeder, ancak daha " +"yavaştır)\n" +"Hızlı Günlük: Yalnızca oluşturma ve yazma işlemleriyle yapılan " +"değişiklikleri kaydeder (daha az bilgi, ancak daha hızlıdır)" #. module: auditlog #: model_terms:ir.ui.view,arch_db:auditlog.view_auditlog_http_request_search @@ -204,7 +205,7 @@ msgstr "" #: model_terms:ir.ui.view,arch_db:auditlog.view_auditlog_log_search #: model_terms:ir.ui.view,arch_db:auditlog.view_auditlog_rule_search msgid "Group By..." -msgstr "Grupla..." +msgstr "Gruplandır..." #. module: auditlog #: model_terms:ir.ui.view,arch_db:auditlog.view_auditlog_log_form @@ -218,7 +219,7 @@ msgstr "HTTP Bağlamı" #: model_terms:ir.ui.view,arch_db:auditlog.view_auditlog_line_search #: model_terms:ir.ui.view,arch_db:auditlog.view_auditlog_log_search msgid "HTTP Request" -msgstr "HTTP isteği" +msgstr "HTTP İsteği" #. module: auditlog #: model:ir.actions.act_window,name:auditlog.action_auditlog_http_request_tree @@ -227,7 +228,7 @@ msgstr "HTTP isteği" #: model_terms:ir.ui.view,arch_db:auditlog.view_auditlog_http_request_search #: model_terms:ir.ui.view,arch_db:auditlog.view_auditlog_http_session_form msgid "HTTP Requests" -msgstr "HTTP isteği" +msgstr "HTTP İstekleri" #. module: auditlog #: model:ir.model.fields,field_description:auditlog.field_auditlog_autovacuum__id @@ -249,7 +250,7 @@ msgstr "ID" #: model:ir.model.fields,field_description:auditlog.field_auditlog_log_line_view__write_uid #: model:ir.model.fields,field_description:auditlog.field_auditlog_rule__write_uid msgid "Last Updated by" -msgstr "Son güncellendi" +msgstr "Son Güncelleyen" #. module: auditlog #: model:ir.model.fields,field_description:auditlog.field_auditlog_autovacuum__write_date @@ -260,34 +261,34 @@ msgstr "Son güncellendi" #: model:ir.model.fields,field_description:auditlog.field_auditlog_log_line_view__write_date #: model:ir.model.fields,field_description:auditlog.field_auditlog_rule__write_date msgid "Last Updated on" -msgstr "Son güncellenme" +msgstr "Son Güncelleme" #. module: auditlog #: model:ir.model.fields,field_description:auditlog.field_auditlog_log_line__log_id #: model:ir.model.fields,field_description:auditlog.field_auditlog_log_line_view__log_id #: model_terms:ir.ui.view,arch_db:auditlog.view_auditlog_log_form msgid "Log" -msgstr "günlük" +msgstr "Günlük" #. module: auditlog #: model_terms:ir.ui.view,arch_db:auditlog.view_auditlog_log_form msgid "Log - Field updated" -msgstr "Günlük - Güncellenen alan" +msgstr "Günlük - Güncellenen Alan" #. module: auditlog #: model:ir.model.fields,field_description:auditlog.field_auditlog_rule__log_create msgid "Log Creates" -msgstr "Oluşturma günlükleri" +msgstr "Oluşturmaları Günlükle" #. module: auditlog #: model:ir.model.fields,field_description:auditlog.field_auditlog_rule__log_unlink msgid "Log Deletes" -msgstr "Silme günlükleri" +msgstr "Silmeleri Günlükle" #. module: auditlog #: model:ir.model.fields,field_description:auditlog.field_auditlog_rule__log_export_data msgid "Log Exports" -msgstr "Log Dışa Aktarımları" +msgstr "Dışa Aktarma Günlükle" #. module: auditlog #: model:ir.actions.act_window,name:auditlog.action_auditlog_line @@ -299,12 +300,12 @@ msgstr "Günlük Satırları" #. module: auditlog #: model:ir.model.fields,field_description:auditlog.field_auditlog_rule__log_read msgid "Log Reads" -msgstr "Okuma günlükleri" +msgstr "Okumaları Günlükle" #. module: auditlog #: model:ir.model.fields,field_description:auditlog.field_auditlog_rule__log_write msgid "Log Writes" -msgstr "Yazma günlükleri" +msgstr "Yazmaları Günlükle" #. module: auditlog #: model:ir.actions.act_window,name:auditlog.action_auditlog_log_tree @@ -313,13 +314,13 @@ msgstr "Yazma günlükleri" #: model_terms:ir.ui.view,arch_db:auditlog.view_auditlog_http_request_form #: model_terms:ir.ui.view,arch_db:auditlog.view_auditlog_log_search msgid "Logs" -msgstr "günlükler" +msgstr "Günlükler" #. module: auditlog #: model:ir.model.fields,field_description:auditlog.field_auditlog_log__method #: model:ir.model.fields,field_description:auditlog.field_auditlog_log_line_view__method msgid "Method" -msgstr "Method" +msgstr "Yöntem" #. module: auditlog #: model:ir.model.fields,field_description:auditlog.field_auditlog_log__model_id @@ -328,12 +329,12 @@ msgstr "Method" #: model_terms:ir.ui.view,arch_db:auditlog.view_auditlog_line_search #: model_terms:ir.ui.view,arch_db:auditlog.view_auditlog_log_search msgid "Model" -msgstr "Alan" +msgstr "Model" #. module: auditlog #: model:ir.model.fields,field_description:auditlog.field_auditlog_log_line_view__model_model msgid "Model Model" -msgstr "" +msgstr "Model Modeli" #. module: auditlog #: model:ir.model.fields,field_description:auditlog.field_auditlog_log__model_name @@ -348,7 +349,7 @@ msgstr "Model Adı" #: model:ir.model.fields,field_description:auditlog.field_auditlog_log_line_view__name #: model:ir.model.fields,field_description:auditlog.field_auditlog_rule__name msgid "Name" -msgstr "Adı" +msgstr "Ad" #. module: auditlog #: model:ir.model.fields,field_description:auditlog.field_auditlog_log_line__new_value @@ -360,7 +361,7 @@ msgstr "Yeni Değer" #: model:ir.model.fields,field_description:auditlog.field_auditlog_log_line__new_value_text #: model:ir.model.fields,field_description:auditlog.field_auditlog_log_line_view__new_value_text msgid "New value Text" -msgstr "Yeni değer metni" +msgstr "Yeni Değer Metni" #. module: auditlog #. odoo-python @@ -390,7 +391,7 @@ msgstr "Eski Değer" #: model:ir.model.fields,field_description:auditlog.field_auditlog_log_line__old_value_text #: model:ir.model.fields,field_description:auditlog.field_auditlog_log_line_view__old_value_text msgid "Old value Text" -msgstr "Eski değer Metni" +msgstr "Eski Değer Metni" #. module: auditlog #: model:ir.model.fields,field_description:auditlog.field_auditlog_http_request__name @@ -401,7 +402,7 @@ msgstr "Yol" #. module: auditlog #: model:ir.model.fields,field_description:auditlog.field_auditlog_log_line_view__res_id msgid "Res" -msgstr "" +msgstr "Kaynak" #. module: auditlog #: model:ir.model.fields,field_description:auditlog.field_auditlog_log__res_id @@ -413,7 +414,7 @@ msgstr "Kaynak ID" #. module: auditlog #: model:ir.model.fields,field_description:auditlog.field_auditlog_log__res_ids msgid "Resource IDs" -msgstr "" +msgstr "Kaynak ID" #. module: auditlog #: model:ir.model.fields,field_description:auditlog.field_auditlog_log__name @@ -446,7 +447,7 @@ msgstr "Günlük oluşturmak istediğiniz modeli seçin." #. module: auditlog #: model:ir.model.fields,help:auditlog.field_auditlog_rule__capture_record msgid "Select this if you want to keep track of Unlink Record" -msgstr "Silme kayıtlarını takip etmek için bunu seçiniz" +msgstr "Silinen kayıtları takip etmek istiyorsanız bunu seçin" #. module: auditlog #: model:ir.model.fields,help:auditlog.field_auditlog_rule__log_create @@ -454,14 +455,16 @@ msgid "" "Select this if you want to keep track of creation on any record of the model " "of this rule" msgstr "" -"bu modelde oluşturulan her kayıt için günlük tutmak isterseniz bunu seçin." +"Bu kuralın modelinde oluşturulan kayıtları takip etmek istiyorsanız bunu " +"seçin" #. module: auditlog #: model:ir.model.fields,help:auditlog.field_auditlog_rule__log_unlink msgid "" "Select this if you want to keep track of deletion on any record of the model " "of this rule" -msgstr "bu modelde silinen her kayıt için günlük tutmak isterseniz bunu seçin." +msgstr "" +"Bu kuralın modelinde silinen kayıtları takip etmek istiyorsanız bunu seçin" #. module: auditlog #: model:ir.model.fields,help:auditlog.field_auditlog_rule__log_export_data @@ -476,7 +479,8 @@ msgid "" "Select this if you want to keep track of modification on any record of the " "model of this rule" msgstr "" -"bu modelde değiştirilen her kayıt için günlük tutmak isterseniz bunu seçin." +"Bu kuralın modelinde değiştirilen kayıtları takip etmek istiyorsanız bunu " +"seçin" #. module: auditlog #: model:ir.model.fields,help:auditlog.field_auditlog_rule__log_read @@ -484,7 +488,8 @@ msgid "" "Select this if you want to keep track of read/open on any record of the " "model of this rule" msgstr "" -"bu modelde okunan/açılan her kayıt için günlük tutmak isterseniz bunu seçin." +"Bu kuralın modelinde okunan/açılan kayıtları takip etmek istiyorsanız bunu " +"seçin" #. module: auditlog #: model:ir.model.fields,field_description:auditlog.field_auditlog_http_request__http_session_id @@ -507,13 +512,13 @@ msgstr "Durum" #. module: auditlog #: model_terms:ir.ui.view,arch_db:auditlog.view_auditlog_rule_form msgid "Subscribe" -msgstr "Üye ol" +msgstr "Abone Ol" #. module: auditlog #: model:ir.model.fields.selection,name:auditlog.selection__auditlog_rule__state__subscribed #: model_terms:ir.ui.view,arch_db:auditlog.view_auditlog_rule_search msgid "Subscribed" -msgstr "Üye oldu" +msgstr "Abone Olundu" #. module: auditlog #: model:ir.model.fields,field_description:auditlog.field_auditlog_log__model_model @@ -525,7 +530,7 @@ msgstr "Teknik Model Adı" #: model:ir.model.fields,field_description:auditlog.field_auditlog_log_line__field_name #: model:ir.model.fields,field_description:auditlog.field_auditlog_log_line_view__field_name msgid "Technical name" -msgstr "Teknik İsim" +msgstr "Teknik Ad" #. module: auditlog #. odoo-python @@ -545,8 +550,8 @@ msgid "" "There is already a rule defined on this model\n" "You cannot define another: please edit the existing one." msgstr "" -"Bu model için zaten bir kural tanımlanmış\n" -"başka kural tanımlayamazsınız: lütfen olan kaydı güncelleyin." +"Bu model için zaten bir kural tanımlanmış.\n" +"Başka bir kural tanımlayamazsınız: lütfen mevcut kuralı düzenleyin." #. module: auditlog #: model:ir.model.fields,field_description:auditlog.field_auditlog_log__log_type @@ -558,7 +563,7 @@ msgstr "Tür" #. module: auditlog #: model_terms:ir.ui.view,arch_db:auditlog.view_auditlog_rule_form msgid "Unsubscribe" -msgstr "Takibi bırak" +msgstr "Abonelikten Ayrıl" #. module: auditlog #: model:ir.model.fields,field_description:auditlog.field_auditlog_http_request__user_id @@ -578,14 +583,14 @@ msgstr "Kullanıcı" #: model_terms:ir.ui.view,arch_db:auditlog.view_auditlog_line_search #: model_terms:ir.ui.view,arch_db:auditlog.view_auditlog_log_search msgid "User session" -msgstr "Kullanıcı oturumu" +msgstr "Kullanıcı Oturumu" #. module: auditlog #: model:ir.actions.act_window,name:auditlog.action_auditlog_http_session_tree #: model:ir.ui.menu,name:auditlog.menu_action_auditlog_http_session_tree #: model_terms:ir.ui.view,arch_db:auditlog.view_auditlog_http_session_search msgid "User sessions" -msgstr "kullanıcı oturumları" +msgstr "Kullanıcı Oturumları" #. module: auditlog #: model:ir.model.fields,field_description:auditlog.field_auditlog_rule__user_ids @@ -606,12 +611,12 @@ msgstr "Değerler" #. odoo-python #: code:addons/auditlog/models/rule.py:0 msgid "View logs" -msgstr "Günlükleri göster" +msgstr "Günlükleri Görüntüle" #. module: auditlog #: model:ir.model.fields,help:auditlog.field_auditlog_rule__user_ids msgid "if no user is added then it will applicable for all users" -msgstr "Eğer kullanıcı eklenmediyse bütün kullanıcılar için geçerli olur" +msgstr "Kullanıcı eklenmezse tüm kullanıcılar için geçerli olur" #~ msgid "Last Modified on" #~ msgstr "Son değişiklik" From 1266b993f7d4ae83aa71e5bab7aa5ce31ba9e470 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Thu, 30 Apr 2026 05:09:10 +0000 Subject: [PATCH 5/8] [UPD] Update autovacuum_message_attachment.pot --- .../i18n/autovacuum_message_attachment.pot | 1 + 1 file changed, 1 insertion(+) diff --git a/autovacuum_message_attachment/i18n/autovacuum_message_attachment.pot b/autovacuum_message_attachment/i18n/autovacuum_message_attachment.pot index 72370571696..edf2268fcfa 100644 --- a/autovacuum_message_attachment/i18n/autovacuum_message_attachment.pot +++ b/autovacuum_message_attachment/i18n/autovacuum_message_attachment.pot @@ -135,6 +135,7 @@ msgstr "" #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_cleanup_purge_wizard_model__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_cleanup_purge_wizard_module__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_cleanup_purge_wizard_table__assigned_attachment_ids +#: model:ir.model.fields,field_description:autovacuum_message_attachment.field_database_autovacuum_tuning__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_db_backup__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_decimal_precision__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_digest_digest__assigned_attachment_ids From 8fa2a2b468097c2d6d6ff261905ba380d2383b84 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Thu, 30 Apr 2026 05:09:19 +0000 Subject: [PATCH 6/8] [UPD] Update database_autovacuum_tuning.pot --- .../i18n/database_autovacuum_tuning.pot | 122 ++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 database_autovacuum_tuning/i18n/database_autovacuum_tuning.pot diff --git a/database_autovacuum_tuning/i18n/database_autovacuum_tuning.pot b/database_autovacuum_tuning/i18n/database_autovacuum_tuning.pot new file mode 100644 index 00000000000..50eb04f323d --- /dev/null +++ b/database_autovacuum_tuning/i18n/database_autovacuum_tuning.pot @@ -0,0 +1,122 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * database_autovacuum_tuning +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.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: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__analyze_threshold +msgid "Analyze Threshold" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_res_config_settings__autovacuum_vacuum_analyze_max_threshold +msgid "Autovacuum Vacuum Analyze Max Threshold" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_res_config_settings__autovacuum_vacuum_max_threshold +msgid "Autovacuum Vacuum Max Threshold" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model,name:database_autovacuum_tuning.model_res_config_settings +msgid "Config Settings" +msgstr "" + +#. module: database_autovacuum_tuning +#: model_terms:ir.ui.view,arch_db:database_autovacuum_tuning.databaseautovacuum_tuning_view_search +msgid "Create Date" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__create_uid +msgid "Created by" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__create_date +msgid "Created on" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.actions.server,name:database_autovacuum_tuning.cron_database_autovacuum_tuning_ir_actions_server +#: model:ir.model,name:database_autovacuum_tuning.model_database_autovacuum_tuning +#: model:ir.ui.menu,name:database_autovacuum_tuning.menu_model_autovacuum_tuning +msgid "Database Autovacuum Tuning" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.actions.act_window,name:database_autovacuum_tuning.action_model_autovacuum_tuning +msgid "Database Vacuum Tuning" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__display_name +msgid "Display Name" +msgstr "" + +#. module: database_autovacuum_tuning +#: model_terms:ir.ui.view,arch_db:database_autovacuum_tuning.databaseautovacuum_tuning_view_search +msgid "Group By" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__id +msgid "ID" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__write_date +msgid "Last Updated on" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__name +#: model_terms:ir.ui.view,arch_db:database_autovacuum_tuning.databaseautovacuum_tuning_view_search +msgid "Name" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__smart_search +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_res_config_settings__smart_search +msgid "Smart Search" +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,help:database_autovacuum_tuning.field_database_autovacuum_tuning__name +msgid "Table name" +msgstr "" + +#. module: database_autovacuum_tuning +#: model_terms:ir.ui.view,arch_db:database_autovacuum_tuning.res_config_settings_view_form +msgid "" +"The maximum number of tuples that can be updated or deleted before a vacuum " +"analyze is triggered." +msgstr "" + +#. module: database_autovacuum_tuning +#: model_terms:ir.ui.view,arch_db:database_autovacuum_tuning.res_config_settings_view_form +msgid "" +"The maximum number of tuples that can be updated or deleted before a vacuum " +"is triggered." +msgstr "" + +#. module: database_autovacuum_tuning +#: model:ir.model.fields,field_description:database_autovacuum_tuning.field_database_autovacuum_tuning__vacuum_threshold +msgid "Vacuum Threshold" +msgstr "" From 234d85116fdb910c8ae86c6249874fd32294293a Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 30 Apr 2026 05:17:35 +0000 Subject: [PATCH 7/8] [BOT] post-merge updates --- README.md | 1 + database_autovacuum_tuning/README.rst | 17 ++++++--- .../static/description/icon.png | Bin 0 -> 10254 bytes .../static/description/index.html | 34 ++++++++++++------ setup/_metapackage/pyproject.toml | 3 +- 5 files changed, 39 insertions(+), 16 deletions(-) create mode 100644 database_autovacuum_tuning/static/description/icon.png diff --git a/README.md b/README.md index 22edfd55301..0efde1c73e0 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,7 @@ addon | version | maintainers | summary [base_time_window](base_time_window/) | 18.0.1.1.1 | | Base model to handle time windows [base_view_inheritance_extension](base_view_inheritance_extension/) | 18.0.1.0.2 | | Adds more operators for view inheritance [bus_alt_connection](bus_alt_connection/) | 18.0.1.0.0 | | Needed when using PgBouncer as a connection pooler +[database_autovacuum_tuning](database_autovacuum_tuning/) | 18.0.1.0.1 | | Scheduled checks for Odoo autovacuum thresholds and scale factors [database_cleanup](database_cleanup/) | 18.0.1.0.2 | | Database cleanup [database_size](database_size/) | 18.0.1.0.2 | | Database Size [dbfilter_from_header](dbfilter_from_header/) | 18.0.1.0.0 | | Filter databases with HTTP headers diff --git a/database_autovacuum_tuning/README.rst b/database_autovacuum_tuning/README.rst index 5dcbc419bbf..60ee46d8437 100644 --- a/database_autovacuum_tuning/README.rst +++ b/database_autovacuum_tuning/README.rst @@ -1,3 +1,7 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + ========================== Database Autovacuum Tuning ========================== @@ -7,13 +11,13 @@ Database Autovacuum Tuning !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:162a7723c383e0b6239b46e50d6884767430de1a22f1c42a6c90d80e25b1b4fd + !! source digest: sha256:ed2cea913a7d93d83e99dc2d84a053972a91963c100bf3ea8ceca5e69c1c7315 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png +.. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png :target: https://odoo-community.org/page/development-status - :alt: Beta -.. |badge2| image:: https://img.shields.io/badge/licence-LGPL--3-blue.png + :alt: Alpha +.. |badge2| image:: https://img.shields.io/badge/license-LGPL--3-blue.png :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html :alt: License: LGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github @@ -41,6 +45,11 @@ already provides the capability this module targets. The ``pgstattuple`` extension must be installed on the database. +.. IMPORTANT:: + This is an alpha version, the data model and design can change at any time without warning. + Only for development or testing purpose, do not use in production. + `More details on development status `_ + **Table of contents** .. contents:: diff --git a/database_autovacuum_tuning/static/description/icon.png b/database_autovacuum_tuning/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1dcc49c24f364e9adf0afbc6fc0bac6dbecdeb11 GIT binary patch literal 10254 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 -Database Autovacuum Tuning +README.rst -
-

Database Autovacuum Tuning

+
+ + +Odoo Community Association + +
+

Database Autovacuum Tuning

-

Beta License: LGPL-3 OCA/server-tools Translate me on Weblate Try me on Runboat

+

Alpha License: LGPL-3 OCA/server-tools Translate me on Weblate Try me on Runboat

Database Autovacuum Tuning helps administrators keep PostgreSQL healthy by exposing recommended autovacuum settings in Odoo. It provides guidance and documentation for sizing thresholds and scale factors so @@ -380,6 +385,12 @@

Database Autovacuum Tuning

introduces the autovacuum_vacuum_max_threshold parameter, which already provides the capability this module targets.

The pgstattuple extension must be installed on the database.

+
+

Important

+

This is an alpha version, the data model and design can change at any time without warning. +Only for development or testing purpose, do not use in production. +More details on development status

+

Table of contents

    @@ -394,7 +405,7 @@

    Database Autovacuum Tuning

-

Usage

+

Usage

  1. Install the module on the database you want to tune.

  2. @@ -426,7 +437,7 @@

    Usage

-

Bug Tracker

+

Bug Tracker

Bugs are tracked on GitHub 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 @@ -434,22 +445,22 @@

Bug Tracker

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

+
diff --git a/setup/_metapackage/pyproject.toml b/setup/_metapackage/pyproject.toml index c6edf428663..25d7fe2e438 100644 --- a/setup/_metapackage/pyproject.toml +++ b/setup/_metapackage/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "odoo-addons-oca-server-tools" -version = "18.0.20260416.0" +version = "18.0.20260430.0" dependencies = [ "odoo-addon-attachment_delete_restrict==18.0.*", "odoo-addon-attachment_queue==18.0.*", @@ -28,6 +28,7 @@ dependencies = [ "odoo-addon-base_time_window==18.0.*", "odoo-addon-base_view_inheritance_extension==18.0.*", "odoo-addon-bus_alt_connection==18.0.*", + "odoo-addon-database_autovacuum_tuning==18.0.*", "odoo-addon-database_cleanup==18.0.*", "odoo-addon-database_size==18.0.*", "odoo-addon-dbfilter_from_header==18.0.*", From 57745163a1fdef43f480c5816e9c89833ea99e9c Mon Sep 17 00:00:00 2001 From: Weblate Date: Thu, 30 Apr 2026 05:17:45 +0000 Subject: [PATCH 8/8] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: server-tools-18.0/server-tools-18.0-autovacuum_message_attachment Translate-URL: https://translation.odoo-community.org/projects/server-tools-18-0/server-tools-18-0-autovacuum_message_attachment/ --- autovacuum_message_attachment/i18n/ca.po | 1 + autovacuum_message_attachment/i18n/es.po | 1 + autovacuum_message_attachment/i18n/es_AR.po | 1 + autovacuum_message_attachment/i18n/fr.po | 1 + autovacuum_message_attachment/i18n/it.po | 1 + 5 files changed, 5 insertions(+) diff --git a/autovacuum_message_attachment/i18n/ca.po b/autovacuum_message_attachment/i18n/ca.po index 3549ba233e3..1764d6e3bde 100644 --- a/autovacuum_message_attachment/i18n/ca.po +++ b/autovacuum_message_attachment/i18n/ca.po @@ -136,6 +136,7 @@ msgstr "" #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_cleanup_purge_wizard_model__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_cleanup_purge_wizard_module__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_cleanup_purge_wizard_table__assigned_attachment_ids +#: model:ir.model.fields,field_description:autovacuum_message_attachment.field_database_autovacuum_tuning__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_db_backup__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_decimal_precision__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_digest_digest__assigned_attachment_ids diff --git a/autovacuum_message_attachment/i18n/es.po b/autovacuum_message_attachment/i18n/es.po index 07cc1b7e2b8..4c321589856 100644 --- a/autovacuum_message_attachment/i18n/es.po +++ b/autovacuum_message_attachment/i18n/es.po @@ -138,6 +138,7 @@ msgstr "Todos" #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_cleanup_purge_wizard_model__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_cleanup_purge_wizard_module__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_cleanup_purge_wizard_table__assigned_attachment_ids +#: model:ir.model.fields,field_description:autovacuum_message_attachment.field_database_autovacuum_tuning__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_db_backup__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_decimal_precision__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_digest_digest__assigned_attachment_ids diff --git a/autovacuum_message_attachment/i18n/es_AR.po b/autovacuum_message_attachment/i18n/es_AR.po index 346c4dde032..b3667f0cb93 100644 --- a/autovacuum_message_attachment/i18n/es_AR.po +++ b/autovacuum_message_attachment/i18n/es_AR.po @@ -138,6 +138,7 @@ msgstr "Todos" #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_cleanup_purge_wizard_model__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_cleanup_purge_wizard_module__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_cleanup_purge_wizard_table__assigned_attachment_ids +#: model:ir.model.fields,field_description:autovacuum_message_attachment.field_database_autovacuum_tuning__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_db_backup__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_decimal_precision__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_digest_digest__assigned_attachment_ids diff --git a/autovacuum_message_attachment/i18n/fr.po b/autovacuum_message_attachment/i18n/fr.po index faf09127e59..d7f73284848 100644 --- a/autovacuum_message_attachment/i18n/fr.po +++ b/autovacuum_message_attachment/i18n/fr.po @@ -138,6 +138,7 @@ msgstr "Tous" #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_cleanup_purge_wizard_model__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_cleanup_purge_wizard_module__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_cleanup_purge_wizard_table__assigned_attachment_ids +#: model:ir.model.fields,field_description:autovacuum_message_attachment.field_database_autovacuum_tuning__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_db_backup__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_decimal_precision__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_digest_digest__assigned_attachment_ids diff --git a/autovacuum_message_attachment/i18n/it.po b/autovacuum_message_attachment/i18n/it.po index 8f1c6255261..de5f4cc70e0 100644 --- a/autovacuum_message_attachment/i18n/it.po +++ b/autovacuum_message_attachment/i18n/it.po @@ -138,6 +138,7 @@ msgstr "Tutti" #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_cleanup_purge_wizard_model__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_cleanup_purge_wizard_module__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_cleanup_purge_wizard_table__assigned_attachment_ids +#: model:ir.model.fields,field_description:autovacuum_message_attachment.field_database_autovacuum_tuning__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_db_backup__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_decimal_precision__assigned_attachment_ids #: model:ir.model.fields,field_description:autovacuum_message_attachment.field_digest_digest__assigned_attachment_ids