From 9e0f05e1f05ee035ff04edc651e59d773e7c7eda Mon Sep 17 00:00:00 2001 From: Akim Juillerat Date: Thu, 5 Dec 2019 15:12:14 +0100 Subject: [PATCH 01/13] Add module base_m2m_custom_field --- base_m2m_custom_field/__init__.py | 1 + base_m2m_custom_field/__manifest__.py | 15 +++++ base_m2m_custom_field/fields.py | 23 +++++++ base_m2m_custom_field/readme/CONTRIBUTORS.rst | 1 + base_m2m_custom_field/readme/DESCRIPTION.rst | 1 + base_m2m_custom_field/readme/USAGE.rst | 65 +++++++++++++++++++ 6 files changed, 106 insertions(+) create mode 100644 base_m2m_custom_field/__init__.py create mode 100644 base_m2m_custom_field/__manifest__.py create mode 100644 base_m2m_custom_field/fields.py create mode 100644 base_m2m_custom_field/readme/CONTRIBUTORS.rst create mode 100644 base_m2m_custom_field/readme/DESCRIPTION.rst create mode 100644 base_m2m_custom_field/readme/USAGE.rst diff --git a/base_m2m_custom_field/__init__.py b/base_m2m_custom_field/__init__.py new file mode 100644 index 00000000000..73544389301 --- /dev/null +++ b/base_m2m_custom_field/__init__.py @@ -0,0 +1 @@ +from . import fields diff --git a/base_m2m_custom_field/__manifest__.py b/base_m2m_custom_field/__manifest__.py new file mode 100644 index 00000000000..76ae9eb5be0 --- /dev/null +++ b/base_m2m_custom_field/__manifest__.py @@ -0,0 +1,15 @@ +# Copyright 2019 Camptocamp SA +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl) +{ + "name": "Base Many2many Custom Field", + "summary": "Customizations of Many2many", + "version": "12.0.1.0.0", + "category": "Technical Settings", + "author": "Camptocamp, Odoo Community Association (OCA)", + "license": "AGPL-3", + "website": "https://github.com/OCA/server-tools", + "depends": [ + "base", + ], + "installable": True, +} diff --git a/base_m2m_custom_field/fields.py b/base_m2m_custom_field/fields.py new file mode 100644 index 00000000000..6136f37fa23 --- /dev/null +++ b/base_m2m_custom_field/fields.py @@ -0,0 +1,23 @@ +# Copyright 2019 Camptocamp SA +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl) +from odoo import fields + + +class Many2manyCustom(fields.Many2many): + """ Many2manyCustom field is intended to customize Many2many properties. + + :param create_table: defines if the relational table must be created + at the initialization of the field (boolean) + """ + + _slots = { + 'create_table': True + } + + def update_db(self, model, columns): + if not self.create_table: + return + return super().update_db(model, columns) + + +fields.Many2manyCustom = Many2manyCustom diff --git a/base_m2m_custom_field/readme/CONTRIBUTORS.rst b/base_m2m_custom_field/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000000..e31e2f0c4fc --- /dev/null +++ b/base_m2m_custom_field/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Akim Juillerat diff --git a/base_m2m_custom_field/readme/DESCRIPTION.rst b/base_m2m_custom_field/readme/DESCRIPTION.rst new file mode 100644 index 00000000000..0a88d036753 --- /dev/null +++ b/base_m2m_custom_field/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +This module adds a new Many2many custom field with a `create_table` attribute. diff --git a/base_m2m_custom_field/readme/USAGE.rst b/base_m2m_custom_field/readme/USAGE.rst new file mode 100644 index 00000000000..834fa397dc6 --- /dev/null +++ b/base_m2m_custom_field/readme/USAGE.rst @@ -0,0 +1,65 @@ +Many2manyCustom field is useful when a direct access to the relational table +is needed, for example to be editable in a dedicated tree view. + +Let's consider following models: + +.. code-block:: python + + class MyModelA(models.Model): + + _name = 'my.model.a' + + my_model_b_ids = fields.Many2manyCustom( + 'my.model.b', + 'my_model_a_b_rel', + 'my_model_a_id', + 'my_model_b_id', + create_table=False, + ) + + + class MyModelB(models.Model): + + _name = 'my.model.b' + + my_model_a_ids = fields.Many2manyCustom( + 'my.model.a', + 'my_model_a_b_rel', + 'my_model_b_id', + 'my_model_a_id', + create_table=False, + ) + + + class MyModelABRel(models.Model): + + _name = 'my.model.a.b.rel' + + my_model_a_id = fields.Many2one( + 'my.model.a', + required=True, + index=True, # Index is mandatory here + ) + my_model_b_id = fields.Many2one( + 'my.model.b', + required=True, + index=True, # Index is mandatory here + ) + + +By setting `create_table=False` on the Many2manyCustom field, and using the +relational table name, as `_name` for the relational model, we're able to +define a dedicated tree view for `my.model.a.b.rel`. + +.. code-block:: xml + + + my.model.a.b.rel.tree.view + my.model.a.b.rel + + + + + + + From f0f7328926dfa1f526de616cca06a7e9bc81868d Mon Sep 17 00:00:00 2001 From: Akim Juillerat Date: Wed, 8 Jan 2020 16:26:27 +0100 Subject: [PATCH 02/13] [IMP] base_m2m_custom_field: black, isort --- base_m2m_custom_field/__manifest__.py | 4 +--- base_m2m_custom_field/fields.py | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/base_m2m_custom_field/__manifest__.py b/base_m2m_custom_field/__manifest__.py index 76ae9eb5be0..7d72be6d1e2 100644 --- a/base_m2m_custom_field/__manifest__.py +++ b/base_m2m_custom_field/__manifest__.py @@ -8,8 +8,6 @@ "author": "Camptocamp, Odoo Community Association (OCA)", "license": "AGPL-3", "website": "https://github.com/OCA/server-tools", - "depends": [ - "base", - ], + "depends": ["base"], "installable": True, } diff --git a/base_m2m_custom_field/fields.py b/base_m2m_custom_field/fields.py index 6136f37fa23..65729bd45b8 100644 --- a/base_m2m_custom_field/fields.py +++ b/base_m2m_custom_field/fields.py @@ -10,9 +10,7 @@ class Many2manyCustom(fields.Many2many): at the initialization of the field (boolean) """ - _slots = { - 'create_table': True - } + _slots = {"create_table": True} def update_db(self, model, columns): if not self.create_table: From c15f7eeed852395348acd1c6685be4831d1237db Mon Sep 17 00:00:00 2001 From: Akim Juillerat Date: Wed, 8 Jan 2020 16:29:29 +0100 Subject: [PATCH 03/13] [MIG] base_m2m_custom_field: Migration to 13.0 --- base_m2m_custom_field/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base_m2m_custom_field/__manifest__.py b/base_m2m_custom_field/__manifest__.py index 7d72be6d1e2..8fb5e575de5 100644 --- a/base_m2m_custom_field/__manifest__.py +++ b/base_m2m_custom_field/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Base Many2many Custom Field", "summary": "Customizations of Many2many", - "version": "12.0.1.0.0", + "version": "13.0.1.0.0", "category": "Technical Settings", "author": "Camptocamp, Odoo Community Association (OCA)", "license": "AGPL-3", From 087d6d932c82c16a8e9e61cb287406e1768555b8 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Wed, 29 Jan 2020 14:34:15 +0000 Subject: [PATCH 04/13] [UPD] Update base_m2m_custom_field.pot --- base_m2m_custom_field/README.rst | 142 +++++ .../i18n/base_m2m_custom_field.pot | 13 + .../static/description/index.html | 483 ++++++++++++++++++ 3 files changed, 638 insertions(+) create mode 100644 base_m2m_custom_field/README.rst create mode 100644 base_m2m_custom_field/i18n/base_m2m_custom_field.pot create mode 100644 base_m2m_custom_field/static/description/index.html diff --git a/base_m2m_custom_field/README.rst b/base_m2m_custom_field/README.rst new file mode 100644 index 00000000000..bcfae17cc51 --- /dev/null +++ b/base_m2m_custom_field/README.rst @@ -0,0 +1,142 @@ +=========================== +Base Many2many Custom Field +=========================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github + :target: https://github.com/OCA/server-tools/tree/13.0/base_m2m_custom_field + :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-13-0/server-tools-13-0-base_m2m_custom_field + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/149/13.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module adds a new Many2many custom field with a `create_table` attribute. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +Many2manyCustom field is useful when a direct access to the relational table +is needed, for example to be editable in a dedicated tree view. + +Let's consider following models: + +.. code-block:: python + + class MyModelA(models.Model): + + _name = 'my.model.a' + + my_model_b_ids = fields.Many2manyCustom( + 'my.model.b', + 'my_model_a_b_rel', + 'my_model_a_id', + 'my_model_b_id', + create_table=False, + ) + + + class MyModelB(models.Model): + + _name = 'my.model.b' + + my_model_a_ids = fields.Many2manyCustom( + 'my.model.a', + 'my_model_a_b_rel', + 'my_model_b_id', + 'my_model_a_id', + create_table=False, + ) + + + class MyModelABRel(models.Model): + + _name = 'my.model.a.b.rel' + + my_model_a_id = fields.Many2one( + 'my.model.a', + required=True, + index=True, # Index is mandatory here + ) + my_model_b_id = fields.Many2one( + 'my.model.b', + required=True, + index=True, # Index is mandatory here + ) + + +By setting `create_table=False` on the Many2manyCustom field, and using the +relational table name, as `_name` for the relational model, we're able to +define a dedicated tree view for `my.model.a.b.rel`. + +.. code-block:: xml + + + my.model.a.b.rel.tree.view + my.model.a.b.rel + + + + + + + + +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 smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Camptocamp + +Contributors +~~~~~~~~~~~~ + +* Akim Juillerat + +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/base_m2m_custom_field/i18n/base_m2m_custom_field.pot b/base_m2m_custom_field/i18n/base_m2m_custom_field.pot new file mode 100644 index 00000000000..cc93d01ee54 --- /dev/null +++ b/base_m2m_custom_field/i18n/base_m2m_custom_field.pot @@ -0,0 +1,13 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.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" diff --git a/base_m2m_custom_field/static/description/index.html b/base_m2m_custom_field/static/description/index.html new file mode 100644 index 00000000000..5e37801b9d9 --- /dev/null +++ b/base_m2m_custom_field/static/description/index.html @@ -0,0 +1,483 @@ + + + + + + +Base Many2many Custom Field + + + +
+

Base Many2many Custom Field

+ + +

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

+

This module adds a new Many2many custom field with a create_table attribute.

+

Table of contents

+ +
+

Usage

+

Many2manyCustom field is useful when a direct access to the relational table +is needed, for example to be editable in a dedicated tree view.

+

Let’s consider following models:

+
+class MyModelA(models.Model):
+
+    _name = 'my.model.a'
+
+    my_model_b_ids = fields.Many2manyCustom(
+        'my.model.b',
+        'my_model_a_b_rel',
+        'my_model_a_id',
+        'my_model_b_id',
+        create_table=False,
+    )
+
+
+class MyModelB(models.Model):
+
+    _name = 'my.model.b'
+
+    my_model_a_ids = fields.Many2manyCustom(
+        'my.model.a',
+        'my_model_a_b_rel',
+        'my_model_b_id',
+        'my_model_a_id',
+        create_table=False,
+    )
+
+
+class MyModelABRel(models.Model):
+
+    _name = 'my.model.a.b.rel'
+
+    my_model_a_id = fields.Many2one(
+        'my.model.a',
+        required=True,
+        index=True,  # Index is mandatory here
+    )
+    my_model_b_id = fields.Many2one(
+        'my.model.b',
+        required=True,
+        index=True,  # Index is mandatory here
+    )
+
+

By setting create_table=False on the Many2manyCustom field, and using the +relational table name, as _name for the relational model, we’re able to +define a dedicated tree view for my.model.a.b.rel.

+
+<record id="my_model_a_b_rel_tree_view" model="ir.ui.view">
+    <field name="name">my.model.a.b.rel.tree.view</field>
+    <field name="model">my.model.a.b.rel</field>
+    <field name="arch" type="xml">
+        <tree editable="top">
+            <field name="my_model_a_id" />
+            <field name="my_model_b_id" />
+        </tree>
+    </field>
+</record>
+
+
+
+

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 smashing 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.

+
+
+
+ + From 8da6baedc1d6984ab87a2dd5c37f091b7f5518a7 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 29 Jan 2020 14:39:06 +0000 Subject: [PATCH 05/13] [ADD] icon.png --- .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 12 ++++++------ 2 files changed, 6 insertions(+), 6 deletions(-) create mode 100644 base_m2m_custom_field/static/description/icon.png diff --git a/base_m2m_custom_field/static/description/icon.png b/base_m2m_custom_field/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/base_m2m_custom_field/static/description/index.html b/base_m2m_custom_field/static/description/index.html index 5e37801b9d9..68eec0fadb5 100644 --- a/base_m2m_custom_field/static/description/index.html +++ b/base_m2m_custom_field/static/description/index.html @@ -397,7 +397,7 @@

Usage

'my_model_a_b_rel', 'my_model_a_id', 'my_model_b_id', - create_table=False, + create_table=False, ) @@ -410,7 +410,7 @@

Usage

'my_model_a_b_rel', 'my_model_b_id', 'my_model_a_id', - create_table=False, + create_table=False, ) @@ -420,13 +420,13 @@

Usage

my_model_a_id = fields.Many2one( 'my.model.a', - required=True, - index=True, # Index is mandatory here + required=True, + index=True, # Index is mandatory here ) my_model_b_id = fields.Many2one( 'my.model.b', - required=True, - index=True, # Index is mandatory here + required=True, + index=True, # Index is mandatory here )

By setting create_table=False on the Many2manyCustom field, and using the From 1074e8f986c761575773a9cfa216a8648016f386 Mon Sep 17 00:00:00 2001 From: hparfr Date: Wed, 13 Jan 2021 17:45:34 +0100 Subject: [PATCH 06/13] [IMP] base_m2m_custom_field: black, isort, prettier --- base_m2m_custom_field/fields.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/base_m2m_custom_field/fields.py b/base_m2m_custom_field/fields.py index 65729bd45b8..80e3372f62e 100644 --- a/base_m2m_custom_field/fields.py +++ b/base_m2m_custom_field/fields.py @@ -4,10 +4,10 @@ class Many2manyCustom(fields.Many2many): - """ Many2manyCustom field is intended to customize Many2many properties. + """Many2manyCustom field is intended to customize Many2many properties. - :param create_table: defines if the relational table must be created - at the initialization of the field (boolean) + :param create_table: defines if the relational table must be created + at the initialization of the field (boolean) """ _slots = {"create_table": True} From 7392a1914a090ed341b37ac6c2cd129fdf9195eb Mon Sep 17 00:00:00 2001 From: hparfr Date: Wed, 13 Jan 2021 17:45:34 +0100 Subject: [PATCH 07/13] [MIG] base_m2m_custom_field: Migration to 14.0 --- base_m2m_custom_field/__manifest__.py | 2 +- base_m2m_custom_field/fields.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/base_m2m_custom_field/__manifest__.py b/base_m2m_custom_field/__manifest__.py index 8fb5e575de5..260f581defc 100644 --- a/base_m2m_custom_field/__manifest__.py +++ b/base_m2m_custom_field/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Base Many2many Custom Field", "summary": "Customizations of Many2many", - "version": "13.0.1.0.0", + "version": "14.0.1.0.0", "category": "Technical Settings", "author": "Camptocamp, Odoo Community Association (OCA)", "license": "AGPL-3", diff --git a/base_m2m_custom_field/fields.py b/base_m2m_custom_field/fields.py index 80e3372f62e..269d0f5c473 100644 --- a/base_m2m_custom_field/fields.py +++ b/base_m2m_custom_field/fields.py @@ -10,7 +10,7 @@ class Many2manyCustom(fields.Many2many): at the initialization of the field (boolean) """ - _slots = {"create_table": True} + create_table = True def update_db(self, model, columns): if not self.create_table: From 0c37b49f696fb4332247ffb7bb33b01481d03e0c Mon Sep 17 00:00:00 2001 From: oca-travis Date: Tue, 9 Feb 2021 23:07:58 +0000 Subject: [PATCH 08/13] [UPD] Update base_m2m_custom_field.pot --- base_m2m_custom_field/i18n/base_m2m_custom_field.pot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base_m2m_custom_field/i18n/base_m2m_custom_field.pot b/base_m2m_custom_field/i18n/base_m2m_custom_field.pot index cc93d01ee54..4d8b20f912f 100644 --- a/base_m2m_custom_field/i18n/base_m2m_custom_field.pot +++ b/base_m2m_custom_field/i18n/base_m2m_custom_field.pot @@ -3,7 +3,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 13.0\n" +"Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" From 8ce9e06cb6864854c30552e5e2e3c3be2d4a1950 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Tue, 9 Feb 2021 23:11:10 +0000 Subject: [PATCH 09/13] [UPD] README.rst --- base_m2m_custom_field/README.rst | 10 +++++----- base_m2m_custom_field/static/description/index.html | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/base_m2m_custom_field/README.rst b/base_m2m_custom_field/README.rst index bcfae17cc51..4809b736f4d 100644 --- a/base_m2m_custom_field/README.rst +++ b/base_m2m_custom_field/README.rst @@ -14,13 +14,13 @@ Base Many2many Custom Field :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github - :target: https://github.com/OCA/server-tools/tree/13.0/base_m2m_custom_field + :target: https://github.com/OCA/server-tools/tree/14.0/base_m2m_custom_field :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-13-0/server-tools-13-0-base_m2m_custom_field + :target: https://translation.odoo-community.org/projects/server-tools-14-0/server-tools-14-0-base_m2m_custom_field :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/149/13.0 + :target: https://runbot.odoo-community.org/runbot/149/14.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -107,7 +107,7 @@ 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 smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -137,6 +137,6 @@ 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. +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/base_m2m_custom_field/static/description/index.html b/base_m2m_custom_field/static/description/index.html index 68eec0fadb5..3a370d14b59 100644 --- a/base_m2m_custom_field/static/description/index.html +++ b/base_m2m_custom_field/static/description/index.html @@ -367,7 +367,7 @@

Base Many2many Custom Field

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

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

+

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

This module adds a new Many2many custom field with a create_table attribute.

Table of contents

@@ -450,7 +450,7 @@

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 smashing it by providing a detailed and welcomed -feedback.

+feedback.

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

@@ -474,7 +474,7 @@

Maintainers

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.

+

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.

From 0b947440546b0a3ed49beb8985b4d764981b4f8c Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Tue, 9 Feb 2021 23:11:11 +0000 Subject: [PATCH 10/13] base_m2m_custom_field 14.0.1.1.0 --- base_m2m_custom_field/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base_m2m_custom_field/__manifest__.py b/base_m2m_custom_field/__manifest__.py index 260f581defc..e6987764712 100644 --- a/base_m2m_custom_field/__manifest__.py +++ b/base_m2m_custom_field/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Base Many2many Custom Field", "summary": "Customizations of Many2many", - "version": "14.0.1.0.0", + "version": "14.0.1.1.0", "category": "Technical Settings", "author": "Camptocamp, Odoo Community Association (OCA)", "license": "AGPL-3", From 27bce7f3414cf60628d8a0ddc4a8d784f721064b Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Sun, 3 Sep 2023 16:46:20 +0000 Subject: [PATCH 11/13] [UPD] README.rst --- base_m2m_custom_field/README.rst | 15 ++- .../static/description/index.html | 118 +++++++++--------- 2 files changed, 69 insertions(+), 64 deletions(-) diff --git a/base_m2m_custom_field/README.rst b/base_m2m_custom_field/README.rst index 4809b736f4d..ed5df6ef769 100644 --- a/base_m2m_custom_field/README.rst +++ b/base_m2m_custom_field/README.rst @@ -2,10 +2,13 @@ Base Many2many Custom Field =========================== -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:ac28509a998ece35b07c3c8ca1c0a85e96d0ff5b587a83505e5fdb616cc4c1e7 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status @@ -19,11 +22,11 @@ Base Many2many Custom Field .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png :target: https://translation.odoo-community.org/projects/server-tools-14-0/server-tools-14-0-base_m2m_custom_field :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/149/14.0 - :alt: Try me on Runbot +.. |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=14.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| This module adds a new Many2many custom field with a `create_table` attribute. @@ -106,7 +109,7 @@ 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 smashing it by providing a detailed and welcomed +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. diff --git a/base_m2m_custom_field/static/description/index.html b/base_m2m_custom_field/static/description/index.html index 3a370d14b59..d344091525e 100644 --- a/base_m2m_custom_field/static/description/index.html +++ b/base_m2m_custom_field/static/description/index.html @@ -1,20 +1,20 @@ - + - + Base Many2many Custom Field