diff --git a/README.md b/README.md index c7d5aeb62..2839c15a4 100644 --- a/README.md +++ b/README.md @@ -23,14 +23,16 @@ addon | version | maintainers | summary --- | --- | --- | --- [base_external_dbsource](base_external_dbsource/) | 16.0.1.0.1 | | External Database Sources [base_external_dbsource_mssql](base_external_dbsource_mssql/) | 16.0.1.0.1 | [![anddago78](https://github.com/anddago78.png?size=30px)](https://github.com/anddago78) | External Database Source - MSSQL -[base_external_dbsource_sqlite](base_external_dbsource_sqlite/) | 16.0.1.0.1 | [![anddago78](https://github.com/anddago78.png?size=30px)](https://github.com/anddago78) | External Database Source - SQLite +[base_external_dbsource_sqlite](base_external_dbsource_sqlite/) | 16.0.1.0.2 | [![anddago78](https://github.com/anddago78.png?size=30px)](https://github.com/anddago78) | External Database Source - SQLite [base_external_system](base_external_system/) | 16.0.1.0.0 | | Data models allowing for connection to external systems. [base_global_discount](base_global_discount/) | 16.0.1.0.0 | | Base Global Discount +[base_group_backend](base_group_backend/) | 16.0.1.0.0 | [![FranzPoize](https://github.com/FranzPoize.png?size=30px)](https://github.com/FranzPoize) [![bealdav](https://github.com/bealdav.png?size=30px)](https://github.com/bealdav) | Group backend [base_import_match](base_import_match/) | 16.0.1.0.0 | | Try to avoid duplicates before importing [base_portal_type](base_portal_type/) | 16.0.1.0.0 | [![hbrunn](https://github.com/hbrunn.png?size=30px)](https://github.com/hbrunn) | Base module to allow different types of portals -[base_user_role](base_user_role/) | 16.0.1.2.2 | [![sebalix](https://github.com/sebalix.png?size=30px)](https://github.com/sebalix) [![jcdrubay](https://github.com/jcdrubay.png?size=30px)](https://github.com/jcdrubay) [![novawish](https://github.com/novawish.png?size=30px)](https://github.com/novawish) | User roles +[base_user_role](base_user_role/) | 16.0.1.3.0 | [![sebalix](https://github.com/sebalix.png?size=30px)](https://github.com/sebalix) [![jcdrubay](https://github.com/jcdrubay.png?size=30px)](https://github.com/jcdrubay) [![novawish](https://github.com/novawish.png?size=30px)](https://github.com/novawish) | User roles [base_user_role_company](base_user_role_company/) | 16.0.1.1.0 | | User roles by company [base_user_role_history](base_user_role_history/) | 16.0.1.0.0 | [![ThomasBinsfeld](https://github.com/ThomasBinsfeld.png?size=30px)](https://github.com/ThomasBinsfeld) | This module allows to track the changes on users roles. +[server_action_sort](server_action_sort/) | 16.0.1.0.0 | [![legalsylvain](https://github.com/legalsylvain.png?size=30px)](https://github.com/legalsylvain) | Sort any lines of any models by any criterias [//]: # (end addons) diff --git a/base_external_dbsource_sqlite/README.rst b/base_external_dbsource_sqlite/README.rst index 328e5f43f..e3e503f70 100644 --- a/base_external_dbsource_sqlite/README.rst +++ b/base_external_dbsource_sqlite/README.rst @@ -7,7 +7,7 @@ External Database Source - SQLite !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:dcf54306e6d3c761f7e679fafdfc561041b62202ae0e83a47aad643383d975b6 + !! source digest: sha256:be42980ba34bb6865c363361ab0af4b4c54884df329f861dd1d906f1723643ab !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png diff --git a/base_external_dbsource_sqlite/__manifest__.py b/base_external_dbsource_sqlite/__manifest__.py index 0211c5990..3bfdaa069 100644 --- a/base_external_dbsource_sqlite/__manifest__.py +++ b/base_external_dbsource_sqlite/__manifest__.py @@ -3,7 +3,7 @@ # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). { "name": "External Database Source - SQLite", - "version": "16.0.1.0.1", + "version": "16.0.1.0.2", "category": "Tools", "author": "Daniel Reis, LasLabs, Odoo Community Association (OCA)", "maintainers": ["anddago78"], diff --git a/base_external_dbsource_sqlite/models/base_external_dbsource.py b/base_external_dbsource_sqlite/models/base_external_dbsource.py index 37b886fc3..fc6ba2f1f 100644 --- a/base_external_dbsource_sqlite/models/base_external_dbsource.py +++ b/base_external_dbsource_sqlite/models/base_external_dbsource.py @@ -38,5 +38,7 @@ def _execute_sqlalchemy(self, sqlquery, sqlparams, metadata): cur = connection.execute(sqlquery, sqlparams) if metadata: cols = list(cur.keys()) - rows = [r for r in cur] + # If the query doesn't return rows, trying to get them anyway + # will raise an exception `sqlalchemy.exc.ResourceClosedError` + rows = [r for r in cur] if cur.returns_rows else [] return rows, cols diff --git a/base_external_dbsource_sqlite/static/description/index.html b/base_external_dbsource_sqlite/static/description/index.html index 17ca128eb..2a7de1768 100644 --- a/base_external_dbsource_sqlite/static/description/index.html +++ b/base_external_dbsource_sqlite/static/description/index.html @@ -1,4 +1,3 @@ - @@ -367,7 +366,7 @@

External Database Source - SQLite

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

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

This module extends base_external_dbsource, allowing you to connect to diff --git a/base_group_backend/README.rst b/base_group_backend/README.rst new file mode 100644 index 000000000..71120920c --- /dev/null +++ b/base_group_backend/README.rst @@ -0,0 +1,181 @@ +============= +Group backend +============= + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:879007f368a0b75ad5da7f5d3e3d1d6ae386da26d27df7fc4dec1a6865cf0233 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png + :target: https://odoo-community.org/page/development-status + :alt: Alpha +.. |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--backend-lightgray.png?logo=github + :target: https://github.com/OCA/server-backend/tree/16.0/base_group_backend + :alt: OCA/server-backend +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/server-backend-16-0/server-backend-16-0-base_group_backend + :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-backend&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module was written to extend the standard functionality regarding users +and groups management by adding a new `Backend user` group that only gives access +to odoo backend (`/web`): + +* minimal default access: + * users and partners (this is necessary to access your own data) + * mail activity, notification and channel + * presence +* minimal default menu + * notification + * activities +* minimal default access rules + +The problem with the `Internal user` is when you want to gives access to the +backend to a really thin part of your business to some users, it's quite hard +to properly maintain those roles over the project life, a lot of models use +that group (`base.group_user`) by default which makes hard to maintains. + +So that helps creating well-defined user groups with more controls. + +This modules does 3 things: +* It hijack the has_group method of res.users by returning True for group_backend users when the requested group is group_user (The need for this needs to be investigated) +* It sets the res_users.share to False for group_backend users. This allows those users to access the backend. +* It sets the bare minimum permission in the ir.model.access.csv to display the backend + +We suggest to use this module with its compagnon `base_user_role` + + +Here is an example where a backend ui user can only access and use the dummy app. No other application are available to this user. You may define your own application instead of the dummy one. + +.. figure:: https://raw.githubusercontent.com/OCA/server-backend/16.0/base_group_backend/static/description/dummy_app.png + :alt: Dummy app for demo + + + +Limitations +~~~~~~~~~~~ + +At the time of writing, Odoo uses `res.users.share == False` to give the +backend access. +However to be able to access the backend without any errors some basic rights are necessary. +This module change the way `res.users.share` is computed to allow `group_backend users` to use the backend. + +This avoids to write a lot of overwrite in different controllers from +different modules ('portal', 'web', 'base', 'website') with hard coded statements +that check if user is part of the `base.group_user` or `share == False` group. + +.. warning:: + + Using this module and grant a user with `group_backend`'s group is + equivalent to grant `group_user`'s group everywhere `has_group` + has been used. + +.. 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:: + :local: + +Configuration +============= + +To allow `group_backend` to interact with a model you can either add access rules to the group +or you can add `implied_ids` to `group_backend`. + +.. note:: + + Be aware users can only belong to one group from the user type category + (`base.module_category_user_type`). So your other groups can't inherit both + internal users and backend users. + +Usage +===== + +To use this module, you need to: + +#. Go to Configuration / Users / Users, choose a user and set the user type. + +You get a users that is only able to access to the Odoo backend which you +can attach other groups that not implies other kind of users (`portal`, +`internal users`) + +.. figure:: https://raw.githubusercontent.com/OCA/server-backend/16.0/base_group_backend/static/description/backend_ui.png + :alt: Backend UI user + +Known issues / Roadmap +====================== + +Current module depends on `base_install_request` instead of `base`. + +We don't need `base_install_request` auto install module but we must override it to set a security group on `App` menu. + +This dependency should be remove if possible in future versions. + +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 +~~~~~~~ + +* Pierre Verkest + +Contributors +~~~~~~~~~~~~ + +* Pierre Verkest +* François Poizat + +Do not contact contributors directly about support or help with technical issues. + +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. + +.. |maintainer-FranzPoize| image:: https://github.com/FranzPoize.png?size=40px + :target: https://github.com/FranzPoize + :alt: FranzPoize +.. |maintainer-bealdav| image:: https://github.com/bealdav.png?size=40px + :target: https://github.com/bealdav + :alt: bealdav + +Current `maintainers `__: + +|maintainer-FranzPoize| |maintainer-bealdav| + +This module is part of the `OCA/server-backend `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/base_group_backend/__init__.py b/base_group_backend/__init__.py new file mode 100644 index 000000000..fc95f8e72 --- /dev/null +++ b/base_group_backend/__init__.py @@ -0,0 +1,2 @@ +from . import models +from . import demo diff --git a/base_group_backend/__manifest__.py b/base_group_backend/__manifest__.py new file mode 100644 index 000000000..6b4af75f2 --- /dev/null +++ b/base_group_backend/__manifest__.py @@ -0,0 +1,30 @@ +# Copyright 2021 Pierre Verkest +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +{ + "name": "Group backend", + "version": "16.0.1.0.0", + "development_status": "Alpha", + "category": "Tools", + "author": "Pierre Verkest, Odoo Community Association (OCA)", + "license": "LGPL-3", + "website": "https://github.com/OCA/server-backend", + "depends": [ + "base", + "base_install_request", # weird module, we need to survive with it + "mail", + ], + "maintainers": ["FranzPoize", "bealdav"], + "demo": [ + "demo/test-model.xml", + "demo/ir.model.access.csv", + "demo/backend_dummy_model.xml", + "demo/res_partners.xml", + "demo/res_users.xml", + ], + "data": [ + "data/res_groups.xml", + "data/ir_ui_menu.xml", + "security/ir.model.access.csv", + ], + "installable": True, +} diff --git a/base_group_backend/data/ir_ui_menu.xml b/base_group_backend/data/ir_ui_menu.xml new file mode 100644 index 000000000..a8a80e106 --- /dev/null +++ b/base_group_backend/data/ir_ui_menu.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/base_group_backend/data/res_groups.xml b/base_group_backend/data/res_groups.xml new file mode 100644 index 000000000..db3df0068 --- /dev/null +++ b/base_group_backend/data/res_groups.xml @@ -0,0 +1,43 @@ + + + + Backend user + + + This group is used to gives user backend access. + + While users in `base.group_user` gets a lot of default access + which makes hard to define properly records/rules/menu access. + + So for maintainability you shouldn't linked any access right, rules, + menu, and so on to this group directly. + + The only intent of this groups is to be able to get a session + to Odoo backend (`/web`). + + + + + Backend UI user + + + This group is used to gives user basic ui access. + + + + + diff --git a/base_group_backend/demo/__init__.py b/base_group_backend/demo/__init__.py new file mode 100644 index 000000000..87682b5ef --- /dev/null +++ b/base_group_backend/demo/__init__.py @@ -0,0 +1,4 @@ +from odoo.tools import config + +if not config["without_demo"]: + from . import backend_dummy_model diff --git a/base_group_backend/demo/backend_dummy_model.py b/base_group_backend/demo/backend_dummy_model.py new file mode 100644 index 000000000..649f22418 --- /dev/null +++ b/base_group_backend/demo/backend_dummy_model.py @@ -0,0 +1,15 @@ +from odoo import fields, models + + +class BackendDummyModel(models.Model): + _name = "backend.dummy.model" + _description = "Backend Dummy Model demo" + + my_value = fields.Char(name="Value", required=True) + my_other_value = fields.Char(name="Other value", required=True) + date_start = fields.Datetime( + name="Date start", required=True, default=fields.Datetime.now + ) + date_stop = fields.Datetime( + name="Date stop", required=True, default=fields.Datetime.now + ) diff --git a/base_group_backend/demo/backend_dummy_model.xml b/base_group_backend/demo/backend_dummy_model.xml new file mode 100644 index 000000000..ade0d44c0 --- /dev/null +++ b/base_group_backend/demo/backend_dummy_model.xml @@ -0,0 +1,44 @@ + + + + Backend dummy tree view + backend.dummy.model + + + + + + + + + + Dummies + ir.actions.act_window + backend.dummy.model + tree,form,kanban,calendar,pivot,graph,activity + + + + + + + + diff --git a/base_group_backend/demo/ir.model.access.csv b/base_group_backend/demo/ir.model.access.csv new file mode 100644 index 000000000..6c353bcb6 --- /dev/null +++ b/base_group_backend/demo/ir.model.access.csv @@ -0,0 +1,3 @@ +"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" +"backend_dummy_models","backend dummy.model","model_backend_dummy_model",group_backend_ui_users,1,0,0,0 +"backend_dummy_models_user_grp","backend dummy.model user grp","model_backend_dummy_model",base.group_user,1,0,0,0 diff --git a/base_group_backend/demo/res_partners.xml b/base_group_backend/demo/res_partners.xml new file mode 100644 index 000000000..32b455809 --- /dev/null +++ b/base_group_backend/demo/res_partners.xml @@ -0,0 +1,12 @@ + + + + Demo partner backend + + + Demo partner backend 1 + + + Demo partner backend 2 + + diff --git a/base_group_backend/demo/res_users.xml b/base_group_backend/demo/res_users.xml new file mode 100644 index 000000000..37baa44a6 --- /dev/null +++ b/base_group_backend/demo/res_users.xml @@ -0,0 +1,21 @@ + + + + demo backend user + + + + + demo backend user 1 + + + + + demo backend user 2 + + + + diff --git a/base_group_backend/demo/test-model.xml b/base_group_backend/demo/test-model.xml new file mode 100644 index 000000000..3ced409a7 --- /dev/null +++ b/base_group_backend/demo/test-model.xml @@ -0,0 +1,7 @@ + + + + hello + hello + + diff --git a/base_group_backend/i18n/base_group_backend.pot b/base_group_backend/i18n/base_group_backend.pot new file mode 100644 index 000000000..ecffaa6ef --- /dev/null +++ b/base_group_backend/i18n/base_group_backend.pot @@ -0,0 +1,130 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_group_backend +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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: base_group_backend +#: model:res.groups,comment:base_group_backend.base_group_backend +msgid "" +"\n" +" This group is used to gives user backend access.\n" +"\n" +" While users in `base.group_user` gets a lot of default access\n" +" which makes hard to define properly records/rules/menu access.\n" +"\n" +" So for maintainability you shouldn't linked any access right, rules,\n" +" menu, and so on to this group directly.\n" +"\n" +" The only intent of this groups is to be able to get a session\n" +" to Odoo backend (`/web`).\n" +" " +msgstr "" + +#. module: base_group_backend +#: model:res.groups,comment:base_group_backend.group_backend_ui_users +msgid "" +"\n" +" This group is used to gives user basic ui access.\n" +" " +msgstr "" + +#. module: base_group_backend +#: model:ir.model,name:base_group_backend.model_backend_dummy_model +msgid "Backend Dummy Model demo" +msgstr "" + +#. module: base_group_backend +#: model:res.groups,name:base_group_backend.group_backend_ui_users +msgid "Backend UI user" +msgstr "" + +#. module: base_group_backend +#: model:res.groups,name:base_group_backend.base_group_backend +msgid "Backend user" +msgstr "" + +#. module: base_group_backend +#: model:ir.model.fields,field_description:base_group_backend.field_backend_dummy_model__create_uid +msgid "Created by" +msgstr "" + +#. module: base_group_backend +#: model:ir.model.fields,field_description:base_group_backend.field_backend_dummy_model__create_date +msgid "Created on" +msgstr "" + +#. module: base_group_backend +#: model:ir.model.fields,field_description:base_group_backend.field_backend_dummy_model__date_start +msgid "Date Start" +msgstr "" + +#. module: base_group_backend +#: model:ir.model.fields,field_description:base_group_backend.field_backend_dummy_model__date_stop +msgid "Date Stop" +msgstr "" + +#. module: base_group_backend +#: model:ir.model.fields,field_description:base_group_backend.field_backend_dummy_model__display_name +msgid "Display Name" +msgstr "" + +#. module: base_group_backend +#: model:ir.actions.act_window,name:base_group_backend.action_dummy_list +msgid "Dummies" +msgstr "" + +#. module: base_group_backend +#: model:ir.ui.menu,name:base_group_backend.menu_dummy_menu +#: model:ir.ui.menu,name:base_group_backend.menu_dummy_root +msgid "Dummy" +msgstr "" + +#. module: base_group_backend +#: model:ir.ui.menu,name:base_group_backend.menu_dummy_list +msgid "Dummy list" +msgstr "" + +#. module: base_group_backend +#: model:ir.model.fields,field_description:base_group_backend.field_backend_dummy_model__id +msgid "ID" +msgstr "" + +#. module: base_group_backend +#: model:ir.model.fields,field_description:base_group_backend.field_backend_dummy_model____last_update +msgid "Last Modified on" +msgstr "" + +#. module: base_group_backend +#: model:ir.model.fields,field_description:base_group_backend.field_backend_dummy_model__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: base_group_backend +#: model:ir.model.fields,field_description:base_group_backend.field_backend_dummy_model__write_date +msgid "Last Updated on" +msgstr "" + +#. module: base_group_backend +#: model:ir.model.fields,field_description:base_group_backend.field_backend_dummy_model__my_other_value +msgid "My Other Value" +msgstr "" + +#. module: base_group_backend +#: model:ir.model.fields,field_description:base_group_backend.field_backend_dummy_model__my_value +msgid "My Value" +msgstr "" + +#. module: base_group_backend +#: model:ir.model,name:base_group_backend.model_res_users +msgid "User" +msgstr "" diff --git a/base_group_backend/models/__init__.py b/base_group_backend/models/__init__.py new file mode 100644 index 000000000..883516533 --- /dev/null +++ b/base_group_backend/models/__init__.py @@ -0,0 +1 @@ +from . import res_users diff --git a/base_group_backend/models/res_users.py b/base_group_backend/models/res_users.py new file mode 100644 index 000000000..87a6c2484 --- /dev/null +++ b/base_group_backend/models/res_users.py @@ -0,0 +1,50 @@ +import logging + +from odoo import api, models + +_logger = logging.getLogger(__name__) + + +class Users(models.Model): + _inherit = "res.users" + + @api.model + def has_group(self, group_ext_id): + """While ensuring a user is part of `base.group_user` this code will + try if user is in the `base_group_backend.group_backend` group to let access + to the odoo backend. + + This code avoid to overwrite a lot of places in controllers from + different modules ('portal', 'web', 'base') with hardcoded statement + that check if user is part of `base.group_user` group. + + As far `base.group_user` have a lot of default permission this + makes hard to maintain proper access right according your business. + """ + res = super().has_group(group_ext_id) + if not res and (group_ext_id == "base.group_user"): + has_base_group_backend = super().has_group( + "base_group_backend.base_group_backend" + ) or super().has_group("base_group_backend.group_backend_ui_users") + if has_base_group_backend: + _logger.warning( + "Forcing has_group to return True" + + " for group_backend and base_group_backend_ui_users" + ) + return has_base_group_backend + return res + + @api.depends("groups_id") + def _compute_share(self): + res = super()._compute_share() + backend_user_group_id = self.env["ir.model.data"]._xmlid_to_res_id( + "base_group_backend.base_group_backend" + ) + backend_ui_user_group_id = self.env["ir.model.data"]._xmlid_to_res_id( + "base_group_backend.group_backend_ui_users" + ) + internal_users = self.filtered_domain( + [("groups_id", "in", [backend_user_group_id, backend_ui_user_group_id])] + ) + internal_users.share = False + return res diff --git a/base_group_backend/readme/CONFIGURE.rst b/base_group_backend/readme/CONFIGURE.rst new file mode 100644 index 000000000..e480b4f2c --- /dev/null +++ b/base_group_backend/readme/CONFIGURE.rst @@ -0,0 +1,8 @@ +To allow `group_backend` to interact with a model you can either add access rules to the group +or you can add `implied_ids` to `group_backend`. + +.. note:: + + Be aware users can only belong to one group from the user type category + (`base.module_category_user_type`). So your other groups can't inherit both + internal users and backend users. diff --git a/base_group_backend/readme/CONTRIBUTORS.rst b/base_group_backend/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..f8032a3b4 --- /dev/null +++ b/base_group_backend/readme/CONTRIBUTORS.rst @@ -0,0 +1,4 @@ +* Pierre Verkest +* François Poizat + +Do not contact contributors directly about support or help with technical issues. diff --git a/base_group_backend/readme/DESCRIPTION.rst b/base_group_backend/readme/DESCRIPTION.rst new file mode 100644 index 000000000..831690200 --- /dev/null +++ b/base_group_backend/readme/DESCRIPTION.rst @@ -0,0 +1,52 @@ +This module was written to extend the standard functionality regarding users +and groups management by adding a new `Backend user` group that only gives access +to odoo backend (`/web`): + +* minimal default access: + * users and partners (this is necessary to access your own data) + * mail activity, notification and channel + * presence +* minimal default menu + * notification + * activities +* minimal default access rules + +The problem with the `Internal user` is when you want to gives access to the +backend to a really thin part of your business to some users, it's quite hard +to properly maintain those roles over the project life, a lot of models use +that group (`base.group_user`) by default which makes hard to maintains. + +So that helps creating well-defined user groups with more controls. + +This modules does 3 things: +* It hijack the has_group method of res.users by returning True for group_backend users when the requested group is group_user (The need for this needs to be investigated) +* It sets the res_users.share to False for group_backend users. This allows those users to access the backend. +* It sets the bare minimum permission in the ir.model.access.csv to display the backend + +We suggest to use this module with its compagnon `base_user_role` + + +Here is an example where a backend ui user can only access and use the dummy app. No other application are available to this user. You may define your own application instead of the dummy one. + +.. figure:: ../static/description/dummy_app.png + :alt: Dummy app for demo + + + +Limitations +~~~~~~~~~~~ + +At the time of writing, Odoo uses `res.users.share == False` to give the +backend access. +However to be able to access the backend without any errors some basic rights are necessary. +This module change the way `res.users.share` is computed to allow `group_backend users` to use the backend. + +This avoids to write a lot of overwrite in different controllers from +different modules ('portal', 'web', 'base', 'website') with hard coded statements +that check if user is part of the `base.group_user` or `share == False` group. + +.. warning:: + + Using this module and grant a user with `group_backend`'s group is + equivalent to grant `group_user`'s group everywhere `has_group` + has been used. diff --git a/base_group_backend/readme/ROADMAP.rst b/base_group_backend/readme/ROADMAP.rst new file mode 100644 index 000000000..5190afe11 --- /dev/null +++ b/base_group_backend/readme/ROADMAP.rst @@ -0,0 +1,5 @@ +Current module depends on `base_install_request` instead of `base`. + +We don't need `base_install_request` auto install module but we must override it to set a security group on `App` menu. + +This dependency should be remove if possible in future versions. diff --git a/base_group_backend/readme/USAGE.rst b/base_group_backend/readme/USAGE.rst new file mode 100644 index 000000000..eab476cef --- /dev/null +++ b/base_group_backend/readme/USAGE.rst @@ -0,0 +1,10 @@ +To use this module, you need to: + +#. Go to Configuration / Users / Users, choose a user and set the user type. + +You get a users that is only able to access to the Odoo backend which you +can attach other groups that not implies other kind of users (`portal`, +`internal users`) + +.. figure:: ../static/description/backend_ui.png + :alt: Backend UI user diff --git a/base_group_backend/security/ir.model.access.csv b/base_group_backend/security/ir.model.access.csv new file mode 100644 index 000000000..1746a2398 --- /dev/null +++ b/base_group_backend/security/ir.model.access.csv @@ -0,0 +1,33 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +backend_ui_users_ir_default,backend_ui_users_ir_default,base.model_ir_default,group_backend_ui_users,1,1,1,1 +backend_ui_users_ir_filters,backend_ui_users_ir_filters,base.model_ir_filters,group_backend_ui_users,1,1,1,1 +backend_ui_users_ir_model,backend_ui_users_ir_model,base.model_ir_model,group_backend_ui_users,1,0,0,0 +backend_ui_users_ir_model_fields,backend_ui_users_ir_model_fields,base.model_ir_model_fields,group_backend_ui_users,1,0,0,0 +backend_ui_users_ir_model_data,backend_ui_users_ir_model_data,base.model_ir_model_data,group_backend_ui_users,1,0,1,0 +backend_ui_users_ir_model_fields_selection,backend_ui_users_ir_model_fields_selection,base.model_ir_model_fields_selection,group_backend_ui_users,1,0,0,0 +backend_ui_users_ir_sequence,backend_ui_users_ir_sequence,base.model_ir_sequence,group_backend_ui_users,1,0,0,0 +backend_ui_users_ir_sequence_date_range,backend_ui_users_ir_sequence_date_range,base.model_ir_sequence_date_range,group_backend_ui_users,1,0,0,0 +backend_ui_users_ir_ui_menu,backend_ui_users_ir_ui_menu,base.model_ir_ui_menu,group_backend_ui_users,1,0,0,0 +backend_ui_users_ir_attachment,backend_ui_users_ir_attachment,base.model_ir_attachment,group_backend_ui_users,1,0,1,0 +backend_ui_users_res_partner,backend_ui_users_res_partner,base.model_res_partner,group_backend_ui_users,1,0,0,0 +backend_ui_users_bus_presence,backend_ui_users_bus_presence,bus.model_bus_presence,group_backend_ui_users,1,1,1,1 +backend_ui_users_mail_channel_member_public,backend_ui_users_mail_channel_member,mail.model_mail_channel_member,group_backend_ui_users,1,1,1,0 +backend_ui_users_mail_channel_public,backend_ui_users_mail_channel_member,mail.model_mail_channel,group_backend_ui_users,1,1,1,0 +backend_ui_users_mail_activity,backend_ui_users_mail_activity,mail.model_mail_activity,group_backend_ui_users,1,1,1,1 +backend_ui_users_mail_activity_type,backend_ui_users_mail_activity_type,mail.model_mail_activity_type,group_backend_ui_users,1,0,0,0 +backend_ui_users_mail_followers,backend_ui_users_mail_followers,mail.model_mail_followers,group_backend_ui_users,1,0,0,0 +backend_ui_users_mail_mail,backend_ui_users_mail_mail,mail.model_mail_mail,group_backend_ui_users,0,0,0,0 +backend_ui_users_mail_compose_message,backend_ui_users_mail_compose_message,mail.model_mail_compose_message,group_backend_ui_users,1,1,1,0 +backend_ui_users_mail_wizard_invite,backend_ui_users_mail_wizard_invite,mail.model_mail_wizard_invite,group_backend_ui_users,1,1,1,0 +backend_ui_users_mail_template,backend_ui_users_mail_template,mail.model_mail_template,group_backend_ui_users,1,0,0,0 +backend_ui_users_mail_template_preview,backend_ui_users_mail_template_preview,mail.model_mail_template_preview,group_backend_ui_users,1,0,0,0 +backend_ui_users_mail_message,backend_ui_users_mail_message,mail.model_mail_message,group_backend_ui_users,1,1,1,0 +backend_ui_users_mail_resend_message,backend_ui_users_mail_resend_message,mail.model_mail_resend_message,group_backend_ui_users,1,1,1,0 +backend_ui_users_mail_notification,backend_ui_users_mail_notification,mail.model_mail_notification,group_backend_ui_users,1,1,1,1 +backend_ui_users_mail_alias,backend_ui_users_mail_alias,mail.model_mail_alias,group_backend_ui_users,1,0,0,0 +backend_ui_users_res_groups,backend_ui_users_res_groups,base.model_res_groups,group_backend_ui_users,1,0,0,0 +backend_ui_users_res_partner_category,backend_ui_users_res_partner_category,base.model_res_partner_category,group_backend_ui_users,1,0,0,0 +backend_ui_users_res_partner_industry,backend_ui_users_res_partner_industry,base.model_res_partner_industry,group_backend_ui_users,1,0,0,0 +backend_ui_users_res_users_identitycheck,backend_ui_users_res_users_identitycheck,base.model_res_users_identitycheck,group_backend_ui_users,1,1,1,0 +backend_ui_users_res_bank,backend_ui_users_res_bank,base.model_res_bank,group_backend_ui_users,1,0,0,0 +backend_ui_users_res_partner_bank,backend_ui_users_res_partner_bank,base.model_res_partner_bank,group_backend_ui_users,1,0,0,0 diff --git a/base_group_backend/static/description/backend_ui.png b/base_group_backend/static/description/backend_ui.png new file mode 100644 index 000000000..f0c6a0b8f Binary files /dev/null and b/base_group_backend/static/description/backend_ui.png differ diff --git a/base_group_backend/static/description/dummy_app.png b/base_group_backend/static/description/dummy_app.png new file mode 100644 index 000000000..70bd4571a Binary files /dev/null and b/base_group_backend/static/description/dummy_app.png differ diff --git a/base_group_backend/static/description/icon.png b/base_group_backend/static/description/icon.png new file mode 100644 index 000000000..3a0328b51 Binary files /dev/null and b/base_group_backend/static/description/icon.png differ diff --git a/base_group_backend/static/description/index.html b/base_group_backend/static/description/index.html new file mode 100644 index 000000000..bfe6eafd1 --- /dev/null +++ b/base_group_backend/static/description/index.html @@ -0,0 +1,501 @@ + + + + + + +Group backend + + + +

+

Group backend

+ + +

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

+

This module was written to extend the standard functionality regarding users +and groups management by adding a new Backend user group that only gives access +to odoo backend (/web):

+ +

The problem with the Internal user is when you want to gives access to the +backend to a really thin part of your business to some users, it’s quite hard +to properly maintain those roles over the project life, a lot of models use +that group (base.group_user) by default which makes hard to maintains.

+

So that helps creating well-defined user groups with more controls.

+

This modules does 3 things: +* It hijack the has_group method of res.users by returning True for group_backend users when the requested group is group_user (The need for this needs to be investigated) +* It sets the res_users.share to False for group_backend users. This allows those users to access the backend. +* It sets the bare minimum permission in the ir.model.access.csv to display the backend

+

We suggest to use this module with its compagnon base_user_role

+

Here is an example where a backend ui user can only access and use the dummy app. No other application are available to this user. You may define your own application instead of the dummy one.

+
+Dummy app for demo +
+
+

Limitations

+

At the time of writing, Odoo uses res.users.share == False to give the +backend access. +However to be able to access the backend without any errors some basic rights are necessary. +This module change the way res.users.share is computed to allow group_backend users to use the backend.

+

This avoids to write a lot of overwrite in different controllers from +different modules (‘portal’, ‘web’, ‘base’, ‘website’) with hard coded statements +that check if user is part of the base.group_user or share == False group.

+
+

Warning

+

Using this module and grant a user with group_backend’s group is +equivalent to grant group_user’s group everywhere has_group +has been used.

+
+
+

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

+ +
+

Configuration

+

To allow group_backend to interact with a model you can either add access rules to the group +or you can add implied_ids to group_backend.

+
+

Note

+

Be aware users can only belong to one group from the user type category +(base.module_category_user_type). So your other groups can’t inherit both +internal users and backend users.

+
+
+
+

Usage

+

To use this module, you need to:

+
    +
  1. Go to Configuration / Users / Users, choose a user and set the user type.
  2. +
+

You get a users that is only able to access to the Odoo backend which you +can attach other groups that not implies other kind of users (portal, +internal users)

+
+Backend UI user +
+
+
+

Known issues / Roadmap

+

Current module depends on base_install_request instead of base.

+

We don’t need base_install_request auto install module but we must override it to set a security group on App menu.

+

This dependency should be remove if possible in future versions.

+
+
+

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.

+
+ +
+
+

Authors

+ +
+
+

Contributors

+ +

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

+
+
+

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.

+

Current maintainers:

+

FranzPoize bealdav

+

This module is part of the OCA/server-backend project on GitHub.

+

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

+
+
+ + diff --git a/base_group_backend/tests/__init__.py b/base_group_backend/tests/__init__.py new file mode 100644 index 000000000..d9b96c4fa --- /dev/null +++ b/base_group_backend/tests/__init__.py @@ -0,0 +1 @@ +from . import test_module diff --git a/base_group_backend/tests/test_module.py b/base_group_backend/tests/test_module.py new file mode 100644 index 000000000..ec2098055 --- /dev/null +++ b/base_group_backend/tests/test_module.py @@ -0,0 +1,31 @@ +from odoo import Command +from odoo.tests.common import TransactionCase + + +class TestResUsers(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.base_group_backend = cls.env.ref("base_group_backend.base_group_backend") + cls.internal_user = cls.env.ref("base.user_demo") + cls.portal_user = cls.env.ref("base_group_backend.user_demo_external") + cls.portal_ui_user = cls.env.ref( + "base_group_backend.user_demo_external_with_ui" + ) + + def test_has_groups(self): + self.assertTrue(self.internal_user.has_group("base.group_user")) + self.assertFalse(self.portal_user.has_group("base.group_user")) + self.assertTrue(self.portal_ui_user.has_group("base.group_user")) + self.portal_user.write( + {"groups_id": [Command.set([self.base_group_backend.id])]} + ) + self.assertTrue(self.portal_user.has_group("base.group_user")) + + def test_share(self): + self.assertTrue(self.portal_user.share) + self.portal_user.write( + {"groups_id": [Command.set([self.base_group_backend.id])]} + ) + self.assertFalse(self.portal_user.share) + self.assertFalse(self.portal_ui_user.share) diff --git a/base_user_role/README.rst b/base_user_role/README.rst index 5016a8e00..04c460ead 100644 --- a/base_user_role/README.rst +++ b/base_user_role/README.rst @@ -7,7 +7,7 @@ User roles !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:c476130dcc75dc43a4aa9cfcc84eba040aafbdb3b9ff2b672278a59bd46f91ef + !! source digest: sha256:994951cc466397bd2b24e18e463c587be4b41a92628a226aad69fdbd1b149613 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png diff --git a/base_user_role/__manifest__.py b/base_user_role/__manifest__.py index f9f7ea3d0..e091b9cd6 100644 --- a/base_user_role/__manifest__.py +++ b/base_user_role/__manifest__.py @@ -4,7 +4,7 @@ { "name": "User roles", - "version": "16.0.1.2.2", + "version": "16.0.1.3.0", "category": "Tools", "author": "ABF OSIELL, Odoo Community Association (OCA)", "license": "LGPL-3", diff --git a/base_user_role/i18n/am.po b/base_user_role/i18n/am.po index 3565927d1..531cae18e 100644 --- a/base_user_role/i18n/am.po +++ b/base_user_role/i18n/am.po @@ -31,6 +31,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -291,6 +301,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/ar.po b/base_user_role/i18n/ar.po index f606f8a4e..aeee15fa6 100644 --- a/base_user_role/i18n/ar.po +++ b/base_user_role/i18n/ar.po @@ -33,6 +33,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -293,6 +303,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/base_user_role.pot b/base_user_role/i18n/base_user_role.pot index d83fb4cad..5ccd7266a 100644 --- a/base_user_role/i18n/base_user_role.pot +++ b/base_user_role/i18n/base_user_role.pot @@ -26,6 +26,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -286,6 +296,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/bg.po b/base_user_role/i18n/bg.po index edff772c4..550aae9e9 100644 --- a/base_user_role/i18n/bg.po +++ b/base_user_role/i18n/bg.po @@ -31,6 +31,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -291,6 +301,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/bs.po b/base_user_role/i18n/bs.po index 705fdc232..f8c0d4902 100644 --- a/base_user_role/i18n/bs.po +++ b/base_user_role/i18n/bs.po @@ -32,6 +32,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -292,6 +302,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/ca.po b/base_user_role/i18n/ca.po index f1f687986..f00cdd434 100644 --- a/base_user_role/i18n/ca.po +++ b/base_user_role/i18n/ca.po @@ -32,6 +32,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -293,6 +303,11 @@ msgstr "" msgid "Share Group" msgstr "Comparteix el grup" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/cs.po b/base_user_role/i18n/cs.po index 7e7bf6567..604087159 100644 --- a/base_user_role/i18n/cs.po +++ b/base_user_role/i18n/cs.po @@ -32,6 +32,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -292,6 +302,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/da.po b/base_user_role/i18n/da.po index 45c78c9c5..b2ab36d12 100644 --- a/base_user_role/i18n/da.po +++ b/base_user_role/i18n/da.po @@ -32,6 +32,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -296,6 +306,11 @@ msgstr "" msgid "Share Group" msgstr "Gruppe for data deling" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/de.po b/base_user_role/i18n/de.po index ed523db4e..fcb9390ef 100644 --- a/base_user_role/i18n/de.po +++ b/base_user_role/i18n/de.po @@ -32,6 +32,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -294,6 +304,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/el_GR.po b/base_user_role/i18n/el_GR.po index 308bd6975..95e1bdc57 100644 --- a/base_user_role/i18n/el_GR.po +++ b/base_user_role/i18n/el_GR.po @@ -33,6 +33,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -293,6 +303,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/en_GB.po b/base_user_role/i18n/en_GB.po index 83f1da8c8..c49fbba87 100644 --- a/base_user_role/i18n/en_GB.po +++ b/base_user_role/i18n/en_GB.po @@ -32,6 +32,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -292,6 +302,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/es.po b/base_user_role/i18n/es.po index 097b1598e..be0777013 100644 --- a/base_user_role/i18n/es.po +++ b/base_user_role/i18n/es.po @@ -35,6 +35,16 @@ msgstr "# Roles" msgid "%s (copy)" msgstr "%s(copia)" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -299,6 +309,11 @@ msgstr "Recuento de reglas" msgid "Share Group" msgstr "Compartir Grupo" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/es_AR.po b/base_user_role/i18n/es_AR.po index 375f0e9e4..1ac1b7298 100644 --- a/base_user_role/i18n/es_AR.po +++ b/base_user_role/i18n/es_AR.po @@ -32,6 +32,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -292,6 +302,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/es_CL.po b/base_user_role/i18n/es_CL.po index 25a80f0b2..24f75c03e 100644 --- a/base_user_role/i18n/es_CL.po +++ b/base_user_role/i18n/es_CL.po @@ -32,6 +32,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -292,6 +302,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/es_CO.po b/base_user_role/i18n/es_CO.po index d61ea82b5..901b3e172 100644 --- a/base_user_role/i18n/es_CO.po +++ b/base_user_role/i18n/es_CO.po @@ -32,6 +32,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -292,6 +302,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/es_CR.po b/base_user_role/i18n/es_CR.po index 6df9d5abd..d649e144f 100644 --- a/base_user_role/i18n/es_CR.po +++ b/base_user_role/i18n/es_CR.po @@ -32,6 +32,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -292,6 +302,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/es_DO.po b/base_user_role/i18n/es_DO.po index f945bad7a..53eaf99e1 100644 --- a/base_user_role/i18n/es_DO.po +++ b/base_user_role/i18n/es_DO.po @@ -32,6 +32,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -292,6 +302,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/es_EC.po b/base_user_role/i18n/es_EC.po index fc84a0684..536bc1984 100644 --- a/base_user_role/i18n/es_EC.po +++ b/base_user_role/i18n/es_EC.po @@ -32,6 +32,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -292,6 +302,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/es_ES.po b/base_user_role/i18n/es_ES.po index f9e99404c..0f15ab3c3 100644 --- a/base_user_role/i18n/es_ES.po +++ b/base_user_role/i18n/es_ES.po @@ -32,6 +32,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -292,6 +302,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/es_MX.po b/base_user_role/i18n/es_MX.po index 1694f389f..2f9c76e36 100644 --- a/base_user_role/i18n/es_MX.po +++ b/base_user_role/i18n/es_MX.po @@ -33,6 +33,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -295,6 +305,11 @@ msgstr "" msgid "Share Group" msgstr "Compartir Grupo" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/es_PE.po b/base_user_role/i18n/es_PE.po index 762fb071f..1a8cd8ac0 100644 --- a/base_user_role/i18n/es_PE.po +++ b/base_user_role/i18n/es_PE.po @@ -32,6 +32,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -292,6 +302,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/es_PY.po b/base_user_role/i18n/es_PY.po index 4e590fc62..a9901d5b5 100644 --- a/base_user_role/i18n/es_PY.po +++ b/base_user_role/i18n/es_PY.po @@ -32,6 +32,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -292,6 +302,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/es_VE.po b/base_user_role/i18n/es_VE.po index 8780d5f9b..4c347ccdd 100644 --- a/base_user_role/i18n/es_VE.po +++ b/base_user_role/i18n/es_VE.po @@ -32,6 +32,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -292,6 +302,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/et.po b/base_user_role/i18n/et.po index 6555ff7f1..153bae580 100644 --- a/base_user_role/i18n/et.po +++ b/base_user_role/i18n/et.po @@ -31,6 +31,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -291,6 +301,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/eu.po b/base_user_role/i18n/eu.po index 36406cf7f..3bf3c5bf8 100644 --- a/base_user_role/i18n/eu.po +++ b/base_user_role/i18n/eu.po @@ -31,6 +31,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -291,6 +301,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/fa.po b/base_user_role/i18n/fa.po index 12e6bb4ae..468344baf 100644 --- a/base_user_role/i18n/fa.po +++ b/base_user_role/i18n/fa.po @@ -31,6 +31,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -291,6 +301,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/fi.po b/base_user_role/i18n/fi.po index 9694c1ae6..a7126c04a 100644 --- a/base_user_role/i18n/fi.po +++ b/base_user_role/i18n/fi.po @@ -31,6 +31,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -291,6 +301,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/fr.po b/base_user_role/i18n/fr.po index 0eab506aa..0802dea79 100644 --- a/base_user_role/i18n/fr.po +++ b/base_user_role/i18n/fr.po @@ -32,6 +32,16 @@ msgstr "# Rôles" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -297,6 +307,11 @@ msgstr "Nombre de règles" msgid "Share Group" msgstr "Groupe de partage" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/fr_CA.po b/base_user_role/i18n/fr_CA.po index 04b4a4e9d..8974118fa 100644 --- a/base_user_role/i18n/fr_CA.po +++ b/base_user_role/i18n/fr_CA.po @@ -33,6 +33,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -293,6 +303,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/fr_CH.po b/base_user_role/i18n/fr_CH.po index 5d4f3555b..cb53832bd 100644 --- a/base_user_role/i18n/fr_CH.po +++ b/base_user_role/i18n/fr_CH.po @@ -33,6 +33,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -293,6 +303,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/fr_FR.po b/base_user_role/i18n/fr_FR.po index 8d356d7c0..64c3d993c 100644 --- a/base_user_role/i18n/fr_FR.po +++ b/base_user_role/i18n/fr_FR.po @@ -32,6 +32,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -292,6 +302,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/gl.po b/base_user_role/i18n/gl.po index 20ed7f02a..22070d0f7 100644 --- a/base_user_role/i18n/gl.po +++ b/base_user_role/i18n/gl.po @@ -33,6 +33,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -293,6 +303,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/gl_ES.po b/base_user_role/i18n/gl_ES.po index 939818b82..896f90c85 100644 --- a/base_user_role/i18n/gl_ES.po +++ b/base_user_role/i18n/gl_ES.po @@ -32,6 +32,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -292,6 +302,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/he.po b/base_user_role/i18n/he.po index 4bfe86cbd..7eea28f49 100644 --- a/base_user_role/i18n/he.po +++ b/base_user_role/i18n/he.po @@ -31,6 +31,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -291,6 +301,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/hr.po b/base_user_role/i18n/hr.po index a70d189d5..e09122e91 100644 --- a/base_user_role/i18n/hr.po +++ b/base_user_role/i18n/hr.po @@ -33,6 +33,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -297,6 +307,11 @@ msgstr "" msgid "Share Group" msgstr "Dijeli grupu" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/hr_HR.po b/base_user_role/i18n/hr_HR.po index b1a5f9d79..8e07a908d 100644 --- a/base_user_role/i18n/hr_HR.po +++ b/base_user_role/i18n/hr_HR.po @@ -34,6 +34,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -294,6 +304,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/hu.po b/base_user_role/i18n/hu.po index b2a10d543..881ef7089 100644 --- a/base_user_role/i18n/hu.po +++ b/base_user_role/i18n/hu.po @@ -31,6 +31,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -291,6 +301,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/id.po b/base_user_role/i18n/id.po index 8f3454860..ec691ac73 100644 --- a/base_user_role/i18n/id.po +++ b/base_user_role/i18n/id.po @@ -31,6 +31,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -291,6 +301,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/it.po b/base_user_role/i18n/it.po index 3f92c7033..b39a31b56 100644 --- a/base_user_role/i18n/it.po +++ b/base_user_role/i18n/it.po @@ -35,6 +35,16 @@ msgstr "N° ruoli" msgid "%s (copy)" msgstr "%s (copia)" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -299,6 +309,11 @@ msgstr "Conteggio regole" msgid "Share Group" msgstr "Gruppo condivisione" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/ja.po b/base_user_role/i18n/ja.po index cff946e41..a84607375 100644 --- a/base_user_role/i18n/ja.po +++ b/base_user_role/i18n/ja.po @@ -31,6 +31,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -291,6 +301,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/ko.po b/base_user_role/i18n/ko.po index 461c605a8..d95fd825c 100644 --- a/base_user_role/i18n/ko.po +++ b/base_user_role/i18n/ko.po @@ -31,6 +31,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -291,6 +301,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/lt.po b/base_user_role/i18n/lt.po index 9cb40b1b4..237b5a5cc 100644 --- a/base_user_role/i18n/lt.po +++ b/base_user_role/i18n/lt.po @@ -32,6 +32,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -292,6 +302,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/lt_LT.po b/base_user_role/i18n/lt_LT.po index 0c1376670..3a1ee9878 100644 --- a/base_user_role/i18n/lt_LT.po +++ b/base_user_role/i18n/lt_LT.po @@ -33,6 +33,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -293,6 +303,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/lv.po b/base_user_role/i18n/lv.po index 41bb17bab..4150f6b35 100644 --- a/base_user_role/i18n/lv.po +++ b/base_user_role/i18n/lv.po @@ -32,6 +32,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -292,6 +302,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/mk.po b/base_user_role/i18n/mk.po index f8dd48102..0b2f49231 100644 --- a/base_user_role/i18n/mk.po +++ b/base_user_role/i18n/mk.po @@ -31,6 +31,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -291,6 +301,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/mn.po b/base_user_role/i18n/mn.po index 82c3f7ef6..58cf8b21c 100644 --- a/base_user_role/i18n/mn.po +++ b/base_user_role/i18n/mn.po @@ -31,6 +31,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -291,6 +301,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/nb.po b/base_user_role/i18n/nb.po index 5c8d52067..564c6a547 100644 --- a/base_user_role/i18n/nb.po +++ b/base_user_role/i18n/nb.po @@ -32,6 +32,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -292,6 +302,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/nb_NO.po b/base_user_role/i18n/nb_NO.po index 81f2c3066..6f4107300 100644 --- a/base_user_role/i18n/nb_NO.po +++ b/base_user_role/i18n/nb_NO.po @@ -32,6 +32,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -292,6 +302,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/nl.po b/base_user_role/i18n/nl.po index 2e513ca21..388ceeb59 100644 --- a/base_user_role/i18n/nl.po +++ b/base_user_role/i18n/nl.po @@ -32,6 +32,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -292,6 +302,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/nl_BE.po b/base_user_role/i18n/nl_BE.po index 60215dcd0..c0a775d2a 100644 --- a/base_user_role/i18n/nl_BE.po +++ b/base_user_role/i18n/nl_BE.po @@ -32,6 +32,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -292,6 +302,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/nl_NL.po b/base_user_role/i18n/nl_NL.po index 06cae4479..0e8dac4d5 100644 --- a/base_user_role/i18n/nl_NL.po +++ b/base_user_role/i18n/nl_NL.po @@ -32,6 +32,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -292,6 +302,11 @@ msgstr "" msgid "Share Group" msgstr "Deel Groep" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/pl.po b/base_user_role/i18n/pl.po index 22a8cfe32..3c1ea9316 100644 --- a/base_user_role/i18n/pl.po +++ b/base_user_role/i18n/pl.po @@ -32,6 +32,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -292,6 +302,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/pt.po b/base_user_role/i18n/pt.po index 6e86c0210..144232d15 100644 --- a/base_user_role/i18n/pt.po +++ b/base_user_role/i18n/pt.po @@ -33,6 +33,16 @@ msgstr "# Funções" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -297,6 +307,11 @@ msgstr "Contagem de Regras" msgid "Share Group" msgstr "Partilhar Grupo" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/pt_BR.po b/base_user_role/i18n/pt_BR.po index b3a4cd5b7..8dc656aa6 100644 --- a/base_user_role/i18n/pt_BR.po +++ b/base_user_role/i18n/pt_BR.po @@ -33,6 +33,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -293,6 +303,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/pt_PT.po b/base_user_role/i18n/pt_PT.po index 7d46b0519..cc7f56540 100644 --- a/base_user_role/i18n/pt_PT.po +++ b/base_user_role/i18n/pt_PT.po @@ -33,6 +33,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -293,6 +303,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/ro.po b/base_user_role/i18n/ro.po index 4e103b465..bc086595f 100644 --- a/base_user_role/i18n/ro.po +++ b/base_user_role/i18n/ro.po @@ -33,6 +33,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -293,6 +303,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/ru.po b/base_user_role/i18n/ru.po index b144680c3..08433729e 100644 --- a/base_user_role/i18n/ru.po +++ b/base_user_role/i18n/ru.po @@ -33,6 +33,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -293,6 +303,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/sk.po b/base_user_role/i18n/sk.po index be140312f..c25bd3d0f 100644 --- a/base_user_role/i18n/sk.po +++ b/base_user_role/i18n/sk.po @@ -31,6 +31,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -291,6 +301,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/sl.po b/base_user_role/i18n/sl.po index 5d0df8818..2f6ba4529 100644 --- a/base_user_role/i18n/sl.po +++ b/base_user_role/i18n/sl.po @@ -32,6 +32,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -294,6 +304,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/sr.po b/base_user_role/i18n/sr.po index 2cd468c05..30a6ac0e1 100644 --- a/base_user_role/i18n/sr.po +++ b/base_user_role/i18n/sr.po @@ -32,6 +32,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -292,6 +302,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/sr@latin.po b/base_user_role/i18n/sr@latin.po index cb8fee0a3..df26e38ed 100644 --- a/base_user_role/i18n/sr@latin.po +++ b/base_user_role/i18n/sr@latin.po @@ -33,6 +33,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -293,6 +303,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/sv.po b/base_user_role/i18n/sv.po index 4d094d1dc..af8329e3d 100644 --- a/base_user_role/i18n/sv.po +++ b/base_user_role/i18n/sv.po @@ -31,6 +31,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -291,6 +301,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/th.po b/base_user_role/i18n/th.po index fdf3da474..ead994ede 100644 --- a/base_user_role/i18n/th.po +++ b/base_user_role/i18n/th.po @@ -31,6 +31,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -291,6 +301,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/tr.po b/base_user_role/i18n/tr.po index 81cf73a0b..2e5f85cc7 100644 --- a/base_user_role/i18n/tr.po +++ b/base_user_role/i18n/tr.po @@ -32,6 +32,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -292,6 +302,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/tr_TR.po b/base_user_role/i18n/tr_TR.po index 58fb19664..6344fdef9 100644 --- a/base_user_role/i18n/tr_TR.po +++ b/base_user_role/i18n/tr_TR.po @@ -32,6 +32,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -292,6 +302,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/uk.po b/base_user_role/i18n/uk.po index de03b7012..320eb3efb 100644 --- a/base_user_role/i18n/uk.po +++ b/base_user_role/i18n/uk.po @@ -32,6 +32,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -292,6 +302,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/vi.po b/base_user_role/i18n/vi.po index 0e8c30de4..e2799f3b1 100644 --- a/base_user_role/i18n/vi.po +++ b/base_user_role/i18n/vi.po @@ -31,6 +31,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -291,6 +301,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/vi_VN.po b/base_user_role/i18n/vi_VN.po index 25dd234bb..0aeef0c60 100644 --- a/base_user_role/i18n/vi_VN.po +++ b/base_user_role/i18n/vi_VN.po @@ -33,6 +33,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -295,6 +305,11 @@ msgstr "" msgid "Share Group" msgstr "Nhóm chia sẻ" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/zh_CN.po b/base_user_role/i18n/zh_CN.po index 2686fca72..6ea3dbad2 100644 --- a/base_user_role/i18n/zh_CN.po +++ b/base_user_role/i18n/zh_CN.po @@ -33,6 +33,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -293,6 +303,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/i18n/zh_TW.po b/base_user_role/i18n/zh_TW.po index 2e708e6a3..f555f5eba 100644 --- a/base_user_role/i18n/zh_TW.po +++ b/base_user_role/i18n/zh_TW.po @@ -32,6 +32,16 @@ msgstr "" msgid "%s (copy)" msgstr "" +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "Any configuration changes made here will not be persistent." +msgstr "" + +#. module: base_user_role +#: model_terms:ir.ui.view,arch_db:base_user_role.view_res_users_form_inherit +msgid "The access rights of this user are managed by roles." +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role__model_access msgid "Access Controls" @@ -292,6 +302,11 @@ msgstr "" msgid "Share Group" msgstr "" +#. module: base_user_role +#: model:ir.model.fields,field_description:base_user_role.field_res_users__show_alert +msgid "Show Alert" +msgstr "" + #. module: base_user_role #: model:ir.model.fields,field_description:base_user_role.field_res_users_role_line__date_to msgid "To" diff --git a/base_user_role/models/user.py b/base_user_role/models/user.py index 4070c7510..5879e66f9 100644 --- a/base_user_role/models/user.py +++ b/base_user_role/models/user.py @@ -12,6 +12,14 @@ class ResUsers(models.Model): string="Role lines", default=lambda self: self._default_role_lines(), ) + + show_alert = fields.Boolean(compute="_compute_show_alert") + + @api.depends("role_line_ids") + def _compute_show_alert(self): + for user in self: + user.show_alert = user.role_line_ids.filtered(lambda rec: rec.is_enabled) + role_ids = fields.One2many( comodel_name="res.users.role", string="Roles", diff --git a/base_user_role/static/description/index.html b/base_user_role/static/description/index.html index da5d87699..79e75e790 100644 --- a/base_user_role/static/description/index.html +++ b/base_user_role/static/description/index.html @@ -1,4 +1,3 @@ - @@ -367,7 +366,7 @@

User roles

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:c476130dcc75dc43a4aa9cfcc84eba040aafbdb3b9ff2b672278a59bd46f91ef +!! source digest: sha256:994951cc466397bd2b24e18e463c587be4b41a92628a226aad69fdbd1b149613 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

Production/Stable License: LGPL-3 OCA/server-backend Translate me on Weblate Try me on Runboat

This module was written to extend the standard functionality regarding users diff --git a/base_user_role/tests/test_user_role.py b/base_user_role/tests/test_user_role.py index dede38e18..17c266076 100644 --- a/base_user_role/tests/test_user_role.py +++ b/base_user_role/tests/test_user_role.py @@ -245,3 +245,12 @@ def test_create_role_from_user(self): user_group_ids = sorted(set(self.user_id.groups_id.ids)) role_group_ids = sorted(set(role.trans_implied_ids.ids)) self.assertEqual(user_group_ids, role_group_ids) + + def test_show_alert_computation(self): + """Test the computation of the `show_alert` field.""" + self.user_id.write({"role_line_ids": [(0, 0, {"role_id": self.role1_id.id})]}) + self.assertTrue(self.user_id.show_alert) + + # disable role + self.user_id.role_line_ids.unlink() + self.assertFalse(self.user_id.show_alert) diff --git a/base_user_role/views/user.xml b/base_user_role/views/user.xml index 77469e18e..164dc85d7 100644 --- a/base_user_role/views/user.xml +++ b/base_user_role/views/user.xml @@ -24,8 +24,28 @@ + + +

+ + + res.users.search.inherit res.users diff --git a/server_action_sort/README.rst b/server_action_sort/README.rst new file mode 100644 index 000000000..4412fd72f --- /dev/null +++ b/server_action_sort/README.rst @@ -0,0 +1,141 @@ +================================ +Server Actions - Mass Sort Lines +================================ + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:e221269a77f3ad06e190cd3f0c72ecdfc6d1cd0022b81e3ec57722b3c6dad475 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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--backend-lightgray.png?logo=github + :target: https://github.com/OCA/server-backend/tree/16.0/server_action_sort + :alt: OCA/server-backend +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/server-backend-16-0/server-backend-16-0-server_action_sort + :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-backend&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module provides a generic tools to have the possibility to sort the lines +of a list of items. + +For exemple, if you use the sale module, you can want to reorder the sale +order lines, by any criterias. + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +* Go to 'Setting / Technical / Actions / Server Actions' + +* Create a new item + +.. figure:: https://raw.githubusercontent.com/OCA/server-backend/16.0/server_action_sort/static/description/ir_actions_server_form.png + +* Set a name that will be used for the Contextual Action + +* choose a model + +* Select 'Sort' option in the field 'Action To Do' + +* Then, select a field to sort of this model. It should be a ``one2many`` field. + +* Select then the criterias used to sort the selected field. + + +**Extra options** + +* you can define groups whose members will have access to that option. + +Usage +===== + +* Go to a tree view, for a model for which you have defined a 'Sort' action. + +* Select some items you want to reorder. + +* click on 'Action' Button + +.. figure:: https://raw.githubusercontent.com/OCA/server-backend/16.0/server_action_sort/static/description/sale_order_tree.png + + +* then click on the name of the configured Action and see the results + +**Before** + +.. figure:: https://raw.githubusercontent.com/OCA/server-backend/16.0/server_action_sort/static/description/sale_order_form_before.png + +**After** + +.. figure:: https://raw.githubusercontent.com/OCA/server-backend/16.0/server_action_sort/static/description/sale_order_form_after.png + +Known issues / Roadmap +====================== + +For instance, the module allow to order with many criterias, but +without "dot" notation : it is not possible to order sale order lines +by ``product_id.seller_ids.code`` for exemple. + +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 +~~~~~~~ + +* GRAP + +Contributors +~~~~~~~~~~~~ + +* Sylvain LE GAL (https://www.twitter.com/legalsylvain) + +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. + +.. |maintainer-legalsylvain| image:: https://github.com/legalsylvain.png?size=40px + :target: https://github.com/legalsylvain + :alt: legalsylvain + +Current `maintainer `__: + +|maintainer-legalsylvain| + +This module is part of the `OCA/server-backend `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/server_action_sort/__init__.py b/server_action_sort/__init__.py new file mode 100644 index 000000000..0650744f6 --- /dev/null +++ b/server_action_sort/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/server_action_sort/__manifest__.py b/server_action_sort/__manifest__.py new file mode 100644 index 000000000..7fa31bc4d --- /dev/null +++ b/server_action_sort/__manifest__.py @@ -0,0 +1,20 @@ +# Copyright (C) 2020 - Today: GRAP (http://www.grap.coop) +# @author: Sylvain LE GAL (https://twitter.com/legalsylvain) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +{ + "name": "Server Actions - Mass Sort Lines", + "version": "16.0.1.0.0", + "author": "GRAP, " "Odoo Community Association (OCA)", + "summary": "Sort any lines of any models by any criterias", + "category": "Tools", + "website": "https://github.com/OCA/server-backend", + "license": "AGPL-3", + "depends": ["base"], + "maintainers": ["legalsylvain"], + "data": [ + "security/ir.model.access.csv", + "views/view_ir_actions_server.xml", + ], + "demo": ["demo/ir_actions_server.xml"], +} diff --git a/server_action_sort/demo/ir_actions_server.xml b/server_action_sort/demo/ir_actions_server.xml new file mode 100644 index 000000000..6e0b22143 --- /dev/null +++ b/server_action_sort/demo/ir_actions_server.xml @@ -0,0 +1,43 @@ + + + + + + Action Server Sort Lines + sort + + + + + + 1 + + + + + + + 2 + + + + + + + + + + diff --git a/server_action_sort/i18n/fr.po b/server_action_sort/i18n/fr.po new file mode 100644 index 000000000..add9f090a --- /dev/null +++ b/server_action_sort/i18n/fr.po @@ -0,0 +1,192 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * server_action_sort +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-03-16 18:08+0000\n" +"PO-Revision-Date: 2020-03-16 18:08+0000\n" +"Last-Translator: <>\n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: server_action_sort +#: model:ir.model.fields,field_description:server_action_sort.field_ir_actions_server_sort_line__action_id +msgid "Action" +msgstr "Action" + +#. module: server_action_sort +#: model:ir.actions.server,name:server_action_sort.sort_action_server_lines +#, fuzzy +msgid "Action Server Sort Lines" +msgstr "Démo - Action serveur : Trier les lignes" + +#. module: server_action_sort +#: model:ir.model.fields,field_description:server_action_sort.field_ir_actions_server__state +#: model:ir.model.fields,field_description:server_action_sort.field_ir_cron__state +msgid "Action To Do" +msgstr "Action à effectuer" + +#. module: server_action_sort +#: model:ir.model.fields,field_description:server_action_sort.field_ir_actions_server_sort_line__create_uid +msgid "Created by" +msgstr "Créé par" + +#. module: server_action_sort +#: model:ir.model.fields,field_description:server_action_sort.field_ir_actions_server_sort_line__create_date +msgid "Created on" +msgstr "Créé le" + +#. module: server_action_sort +#: model:ir.model.fields,field_description:server_action_sort.field_ir_actions_server_sort_line__display_name +msgid "Display Name" +msgstr "Nom affiché" + +#. module: server_action_sort +#: model:ir.model.fields,field_description:server_action_sort.field_ir_actions_server_sort_line__field_id +msgid "Field" +msgstr "Champ" + +#. module: server_action_sort +#: model:ir.model.fields,field_description:server_action_sort.field_ir_actions_server_sort_line__field_name +msgid "Field Name" +msgstr "Nom de Champ" + +#. module: server_action_sort +#: model:ir.model.fields,field_description:server_action_sort.field_ir_actions_server__sort_field_id +#: model:ir.model.fields,field_description:server_action_sort.field_ir_cron__sort_field_id +msgid "Field to Sort" +msgstr "Champ à trier" + +#. module: server_action_sort +#: model:ir.model.fields,help:server_action_sort.field_ir_actions_server__sort_field_id_model +#: model:ir.model.fields,help:server_action_sort.field_ir_cron__sort_field_id_model +msgid "For relationship fields, the technical name of the target model" +msgstr "Pour les champs de relation, le nom technique du modèle cible" + +#. module: server_action_sort +#: model:ir.model.fields,field_description:server_action_sort.field_ir_actions_server_sort_line__id +msgid "ID" +msgstr "ID" + +#. module: server_action_sort +#: model:ir.model.fields,field_description:server_action_sort.field_ir_actions_server_sort_line__desc +msgid "Inverse Order" +msgstr "Ordre inverse" + +#. module: server_action_sort +#: model:ir.model.fields,field_description:server_action_sort.field_ir_actions_server_sort_line____last_update +msgid "Last Modified on" +msgstr "Dernière modification le" + +#. module: server_action_sort +#: model:ir.model.fields,field_description:server_action_sort.field_ir_actions_server_sort_line__write_uid +msgid "Last Updated by" +msgstr "Dernière mise à jour par" + +#. module: server_action_sort +#: model:ir.model.fields,field_description:server_action_sort.field_ir_actions_server_sort_line__write_date +msgid "Last Updated on" +msgstr "Dernière mise à jour le" + +#. module: server_action_sort +#: model:ir.model.fields,field_description:server_action_sort.field_ir_actions_server__sort_field_id_model +#: model:ir.model.fields,field_description:server_action_sort.field_ir_cron__sort_field_id_model +msgid "Model of the Field to Sort" +msgstr "Modèle du champ à trier" + +#. module: server_action_sort +#: model:ir.model.fields,field_description:server_action_sort.field_ir_actions_server_sort_line__sequence +msgid "Sequence" +msgstr "Séquence" + +#. module: server_action_sort +#: model:ir.model,name:server_action_sort.model_ir_actions_server +msgid "Server Action" +msgstr "Action du serveur" + +#. module: server_action_sort +#: model:ir.model,name:server_action_sort.model_ir_actions_server_sort_line +msgid "Server Actions Sort Lines" +msgstr "Ligne de tri d'Action Serveur" + +#. module: server_action_sort +#: model:ir.model.fields.selection,name:server_action_sort.selection__ir_actions_server__state__sort +msgid "Sort" +msgstr "Trier" + +#. module: server_action_sort +#: model_terms:ir.ui.view,arch_db:server_action_sort.view_ir_actions_server_form +msgid "Sort Options" +msgstr "Options de tri" + +#. module: server_action_sort +#: model:ir.model.fields,field_description:server_action_sort.field_ir_actions_server__sort_line_ids +#: model:ir.model.fields,field_description:server_action_sort.field_ir_cron__sort_line_ids +msgid "Sorting Criterias" +msgstr "Critères de tri" + +#. module: server_action_sort +#. odoo-python +#: code:addons/server_action_sort/models/ir_actions_server.py:0 +#, python-format +msgid "" +"The Action Server %s is not correctly set :\n" +"No lines defined" +msgstr "" +"L'action Serveur %s n'est pas correctement paramétré : \n" +"Pas de lignes définies" + +#. module: server_action_sort +#: model:ir.model.fields,help:server_action_sort.field_ir_actions_server__state +#: model:ir.model.fields,help:server_action_sort.field_ir_cron__state +msgid "" +"Type of server action. The following values are available:\n" +"- 'Execute Python Code': a block of python code that will be executed\n" +"- 'Create a new Record': create a new record with new values\n" +"- 'Update a Record': update the values of a record\n" +"- 'Execute several actions': define an action that triggers several other " +"server actions\n" +"- 'Send Email': post a message, a note or send an email (Discuss)\n" +"- 'Add Followers': add followers to a record (Discuss)\n" +"- 'Create Next Activity': create an activity (Discuss)\n" +"- 'Send SMS Text Message': send SMS, log them on documents (SMS)" +msgstr "" + +#. module: server_action_sort +#. odoo-python +#: code:addons/server_action_sort/models/ir_actions_server.py:0 +#, python-format +msgid "" +"You can not run this Action Server that way.\n" +" Please use contextual 'Action' menu." +msgstr "" +"Vous ne pouvez pas exécuter cette action serveur de cette façon.\n" +" Veuillez utiliser le menu contextuel 'Action'." + +#~ msgid "Add Followers" +#~ msgstr "Ajouter des abonnés" + +#~ msgid "Create Next Activity" +#~ msgstr "Créer une activité " + +#~ msgid "Create a new Record" +#~ msgstr "Créer un nouvel enregistrement" + +#~ msgid "Execute Python Code" +#~ msgstr "Exécuter le code Python" + +#~ msgid "Execute several actions" +#~ msgstr "Exécuter plusieurs actions" + +#~ msgid "Send Email" +#~ msgstr "Envoyer par courriel" + +#~ msgid "Update the Record" +#~ msgstr "Mettre à jour l'enregistrement" diff --git a/server_action_sort/i18n/server_action_sort.pot b/server_action_sort/i18n/server_action_sort.pot new file mode 100644 index 000000000..6e1422971 --- /dev/null +++ b/server_action_sort/i18n/server_action_sort.pot @@ -0,0 +1,162 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * server_action_sort +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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: server_action_sort +#: model:ir.model.fields,field_description:server_action_sort.field_ir_actions_server_sort_line__action_id +msgid "Action" +msgstr "" + +#. module: server_action_sort +#: model:ir.actions.server,name:server_action_sort.sort_action_server_lines +msgid "Action Server Sort Lines" +msgstr "" + +#. module: server_action_sort +#: model:ir.model.fields,field_description:server_action_sort.field_ir_actions_server__state +#: model:ir.model.fields,field_description:server_action_sort.field_ir_cron__state +msgid "Action To Do" +msgstr "" + +#. module: server_action_sort +#: model:ir.model.fields,field_description:server_action_sort.field_ir_actions_server_sort_line__create_uid +msgid "Created by" +msgstr "" + +#. module: server_action_sort +#: model:ir.model.fields,field_description:server_action_sort.field_ir_actions_server_sort_line__create_date +msgid "Created on" +msgstr "" + +#. module: server_action_sort +#: model:ir.model.fields,field_description:server_action_sort.field_ir_actions_server_sort_line__display_name +msgid "Display Name" +msgstr "" + +#. module: server_action_sort +#: model:ir.model.fields,field_description:server_action_sort.field_ir_actions_server_sort_line__field_id +msgid "Field" +msgstr "" + +#. module: server_action_sort +#: model:ir.model.fields,field_description:server_action_sort.field_ir_actions_server_sort_line__field_name +msgid "Field Name" +msgstr "" + +#. module: server_action_sort +#: model:ir.model.fields,field_description:server_action_sort.field_ir_actions_server__sort_field_id +#: model:ir.model.fields,field_description:server_action_sort.field_ir_cron__sort_field_id +msgid "Field to Sort" +msgstr "" + +#. module: server_action_sort +#: model:ir.model.fields,help:server_action_sort.field_ir_actions_server__sort_field_id_model +#: model:ir.model.fields,help:server_action_sort.field_ir_cron__sort_field_id_model +msgid "For relationship fields, the technical name of the target model" +msgstr "" + +#. module: server_action_sort +#: model:ir.model.fields,field_description:server_action_sort.field_ir_actions_server_sort_line__id +msgid "ID" +msgstr "" + +#. module: server_action_sort +#: model:ir.model.fields,field_description:server_action_sort.field_ir_actions_server_sort_line__desc +msgid "Inverse Order" +msgstr "" + +#. module: server_action_sort +#: model:ir.model.fields,field_description:server_action_sort.field_ir_actions_server_sort_line____last_update +msgid "Last Modified on" +msgstr "" + +#. module: server_action_sort +#: model:ir.model.fields,field_description:server_action_sort.field_ir_actions_server_sort_line__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: server_action_sort +#: model:ir.model.fields,field_description:server_action_sort.field_ir_actions_server_sort_line__write_date +msgid "Last Updated on" +msgstr "" + +#. module: server_action_sort +#: model:ir.model.fields,field_description:server_action_sort.field_ir_actions_server__sort_field_id_model +#: model:ir.model.fields,field_description:server_action_sort.field_ir_cron__sort_field_id_model +msgid "Model of the Field to Sort" +msgstr "" + +#. module: server_action_sort +#: model:ir.model.fields,field_description:server_action_sort.field_ir_actions_server_sort_line__sequence +msgid "Sequence" +msgstr "" + +#. module: server_action_sort +#: model:ir.model,name:server_action_sort.model_ir_actions_server +msgid "Server Action" +msgstr "" + +#. module: server_action_sort +#: model:ir.model,name:server_action_sort.model_ir_actions_server_sort_line +msgid "Server Actions Sort Lines" +msgstr "" + +#. module: server_action_sort +#: model:ir.model.fields.selection,name:server_action_sort.selection__ir_actions_server__state__sort +msgid "Sort" +msgstr "" + +#. module: server_action_sort +#: model_terms:ir.ui.view,arch_db:server_action_sort.view_ir_actions_server_form +msgid "Sort Options" +msgstr "" + +#. module: server_action_sort +#: model:ir.model.fields,field_description:server_action_sort.field_ir_actions_server__sort_line_ids +#: model:ir.model.fields,field_description:server_action_sort.field_ir_cron__sort_line_ids +msgid "Sorting Criterias" +msgstr "" + +#. module: server_action_sort +#. odoo-python +#: code:addons/server_action_sort/models/ir_actions_server.py:0 +#, python-format +msgid "" +"The Action Server %s is not correctly set :\n" +"No lines defined" +msgstr "" + +#. module: server_action_sort +#: model:ir.model.fields,help:server_action_sort.field_ir_actions_server__state +#: model:ir.model.fields,help:server_action_sort.field_ir_cron__state +msgid "" +"Type of server action. The following values are available:\n" +"- 'Execute Python Code': a block of python code that will be executed\n" +"- 'Create a new Record': create a new record with new values\n" +"- 'Update a Record': update the values of a record\n" +"- 'Execute several actions': define an action that triggers several other server actions\n" +"- 'Send Email': post a message, a note or send an email (Discuss)\n" +"- 'Add Followers': add followers to a record (Discuss)\n" +"- 'Create Next Activity': create an activity (Discuss)\n" +"- 'Send SMS Text Message': send SMS, log them on documents (SMS)" +msgstr "" + +#. module: server_action_sort +#. odoo-python +#: code:addons/server_action_sort/models/ir_actions_server.py:0 +#, python-format +msgid "" +"You can not run this Action Server that way.\n" +" Please use contextual 'Action' menu." +msgstr "" diff --git a/server_action_sort/models/__init__.py b/server_action_sort/models/__init__.py new file mode 100644 index 000000000..7a4e06cef --- /dev/null +++ b/server_action_sort/models/__init__.py @@ -0,0 +1,2 @@ +from . import ir_actions_server +from . import ir_actions_server_sort_line diff --git a/server_action_sort/models/ir_actions_server.py b/server_action_sort/models/ir_actions_server.py new file mode 100644 index 000000000..3874273a1 --- /dev/null +++ b/server_action_sort/models/ir_actions_server.py @@ -0,0 +1,66 @@ +# Copyright (C) 2020 - Today: GRAP (http://www.grap.coop) +# @author: Sylvain LE GAL (https://twitter.com/legalsylvain) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import _, fields, models +from odoo.exceptions import UserError + + +class IrActionsServer(models.Model): + _inherit = "ir.actions.server" + + state = fields.Selection( + selection_add=[("sort", "Sort")], ondelete={"sort": "set default"} + ) + + sort_line_ids = fields.One2many( + comodel_name="ir.actions.server.sort.line", + inverse_name="action_id", + string="Sorting Criterias", + ) + + sort_field_id = fields.Many2one( + comodel_name="ir.model.fields", + string="Field to Sort", + domain="[('model_id', '=', model_id), ('ttype', '=', 'one2many')]", + ) + + sort_field_id_model = fields.Char( + string="Model of the Field to Sort", related="sort_field_id.relation" + ) + + def _run_action_sort_multi(self, eval_context=None): + self.ensure_one() + if len(self.sort_line_ids) == 0: + raise UserError( + _("The Action Server %s is not correctly set :\n" "No lines defined") + % (self.name) + ) + + if eval_context is None: + raise UserError( + _( + "You can not run this Action Server that way.\n" + " Please use contextual 'Action' menu." + ) + ) + + order_list = [] + for line in self.sort_line_ids: + order_list.append( + line.desc and "%s desc" % line.field_id.name or line.field_id.name + ) + order = ", ".join(order_list) + + One2manyModel = self.env[self.sort_field_id_model] + parent_field = self.sort_field_id.relation_field + + for item in eval_context["records"]: + # DB Query sort by the correct order + lines = One2manyModel.search([(parent_field, "=", item.id)], order=order) + + # Write new sequence to sort lines + sequence = 1 + for line in lines: + line.sequence = sequence + sequence += 1 diff --git a/server_action_sort/models/ir_actions_server_sort_line.py b/server_action_sort/models/ir_actions_server_sort_line.py new file mode 100644 index 000000000..c01bb6573 --- /dev/null +++ b/server_action_sort/models/ir_actions_server_sort_line.py @@ -0,0 +1,31 @@ +# Copyright (C) 2020 - Today: GRAP (http://www.grap.coop) +# @author: Sylvain LE GAL (https://twitter.com/legalsylvain) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import fields, models + + +class IrActionsServerNavigateLine(models.Model): + _name = "ir.actions.server.sort.line" + _description = "Server Actions Sort Lines" + _order = "sequence" + + sequence = fields.Integer() + + action_id = fields.Many2one( + comodel_name="ir.actions.server", + string="Action", + required=True, + ondelete="cascade", + ) + + field_id = fields.Many2one( + comodel_name="ir.model.fields", + required=True, + domain="[('model', '=', parent.sort_field_id_model)]", + ondelete="cascade", + ) + + field_name = fields.Char(string="Field Name", related="field_id.name", store=True) + + desc = fields.Boolean(string="Inverse Order") diff --git a/server_action_sort/readme/CONFIGURE.rst b/server_action_sort/readme/CONFIGURE.rst new file mode 100644 index 000000000..60b5b7120 --- /dev/null +++ b/server_action_sort/readme/CONFIGURE.rst @@ -0,0 +1,20 @@ +* Go to 'Setting / Technical / Actions / Server Actions' + +* Create a new item + +.. figure:: ../static/description/ir_actions_server_form.png + +* Set a name that will be used for the Contextual Action + +* choose a model + +* Select 'Sort' option in the field 'Action To Do' + +* Then, select a field to sort of this model. It should be a ``one2many`` field. + +* Select then the criterias used to sort the selected field. + + +**Extra options** + +* you can define groups whose members will have access to that option. diff --git a/server_action_sort/readme/CONTRIBUTORS.rst b/server_action_sort/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..e1525ce04 --- /dev/null +++ b/server_action_sort/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Sylvain LE GAL (https://www.twitter.com/legalsylvain) diff --git a/server_action_sort/readme/DESCRIPTION.rst b/server_action_sort/readme/DESCRIPTION.rst new file mode 100644 index 000000000..56a9d339a --- /dev/null +++ b/server_action_sort/readme/DESCRIPTION.rst @@ -0,0 +1,5 @@ +This module provides a generic tools to have the possibility to sort the lines +of a list of items. + +For exemple, if you use the sale module, you can want to reorder the sale +order lines, by any criterias. diff --git a/server_action_sort/readme/ROADMAP.rst b/server_action_sort/readme/ROADMAP.rst new file mode 100644 index 000000000..00645b1ac --- /dev/null +++ b/server_action_sort/readme/ROADMAP.rst @@ -0,0 +1,3 @@ +For instance, the module allow to order with many criterias, but +without "dot" notation : it is not possible to order sale order lines +by ``product_id.seller_ids.code`` for exemple. diff --git a/server_action_sort/readme/USAGE.rst b/server_action_sort/readme/USAGE.rst new file mode 100644 index 000000000..86cd4fdf6 --- /dev/null +++ b/server_action_sort/readme/USAGE.rst @@ -0,0 +1,18 @@ +* Go to a tree view, for a model for which you have defined a 'Sort' action. + +* Select some items you want to reorder. + +* click on 'Action' Button + +.. figure:: ../static/description/sale_order_tree.png + + +* then click on the name of the configured Action and see the results + +**Before** + +.. figure:: ../static/description/sale_order_form_before.png + +**After** + +.. figure:: ../static/description/sale_order_form_after.png diff --git a/server_action_sort/security/ir.model.access.csv b/server_action_sort/security/ir.model.access.csv new file mode 100644 index 000000000..2f38a0454 --- /dev/null +++ b/server_action_sort/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +ir_actions_server_sort_line_all,ir_actions_server_sort_line_all,model_ir_actions_server_sort_line,,1,0,0,0 +ir_actions_server_sort_line_group_system,ir_actions_server_sort_line_group_system,model_ir_actions_server_sort_line,base.group_system,1,1,1,1 diff --git a/server_action_sort/static/description/icon.png b/server_action_sort/static/description/icon.png new file mode 100644 index 000000000..3a0328b51 Binary files /dev/null and b/server_action_sort/static/description/icon.png differ diff --git a/server_action_sort/static/description/index.html b/server_action_sort/static/description/index.html new file mode 100644 index 000000000..e0ddfb730 --- /dev/null +++ b/server_action_sort/static/description/index.html @@ -0,0 +1,478 @@ + + + + + + +Server Actions - Mass Sort Lines + + + +
+

Server Actions - Mass Sort Lines

+ + +

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

+

This module provides a generic tools to have the possibility to sort the lines +of a list of items.

+

For exemple, if you use the sale module, you can want to reorder the sale +order lines, by any criterias.

+

Table of contents

+ +
+

Configuration

+
    +
  • Go to ‘Setting / Technical / Actions / Server Actions’
  • +
  • Create a new item
  • +
+
+https://raw.githubusercontent.com/OCA/server-backend/16.0/server_action_sort/static/description/ir_actions_server_form.png +
+
    +
  • Set a name that will be used for the Contextual Action
  • +
  • choose a model
  • +
  • Select ‘Sort’ option in the field ‘Action To Do’
  • +
  • Then, select a field to sort of this model. It should be a one2many field.
  • +
  • Select then the criterias used to sort the selected field.
  • +
+

Extra options

+
    +
  • you can define groups whose members will have access to that option.
  • +
+
+
+

Usage

+
    +
  • Go to a tree view, for a model for which you have defined a ‘Sort’ action.
  • +
  • Select some items you want to reorder.
  • +
  • click on ‘Action’ Button
  • +
+
+https://raw.githubusercontent.com/OCA/server-backend/16.0/server_action_sort/static/description/sale_order_tree.png +
+
    +
  • then click on the name of the configured Action and see the results
  • +
+

Before

+
+https://raw.githubusercontent.com/OCA/server-backend/16.0/server_action_sort/static/description/sale_order_form_before.png +
+

After

+
+https://raw.githubusercontent.com/OCA/server-backend/16.0/server_action_sort/static/description/sale_order_form_after.png +
+
+
+

Known issues / Roadmap

+

For instance, the module allow to order with many criterias, but +without “dot” notation : it is not possible to order sale order lines +by product_id.seller_ids.code for exemple.

+
+
+

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

+
    +
  • GRAP
  • +
+
+ +
+

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.

+

Current maintainer:

+

legalsylvain

+

This module is part of the OCA/server-backend project on GitHub.

+

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

+
+
+
+ + diff --git a/server_action_sort/static/description/ir_actions_server_form.png b/server_action_sort/static/description/ir_actions_server_form.png new file mode 100644 index 000000000..015a626e3 Binary files /dev/null and b/server_action_sort/static/description/ir_actions_server_form.png differ diff --git a/server_action_sort/static/description/sale_order_form_after.png b/server_action_sort/static/description/sale_order_form_after.png new file mode 100644 index 000000000..85da92483 Binary files /dev/null and b/server_action_sort/static/description/sale_order_form_after.png differ diff --git a/server_action_sort/static/description/sale_order_form_before.png b/server_action_sort/static/description/sale_order_form_before.png new file mode 100644 index 000000000..f53471a32 Binary files /dev/null and b/server_action_sort/static/description/sale_order_form_before.png differ diff --git a/server_action_sort/static/description/sale_order_tree.png b/server_action_sort/static/description/sale_order_tree.png new file mode 100644 index 000000000..a5bee7203 Binary files /dev/null and b/server_action_sort/static/description/sale_order_tree.png differ diff --git a/server_action_sort/tests/__init__.py b/server_action_sort/tests/__init__.py new file mode 100644 index 000000000..d9b96c4fa --- /dev/null +++ b/server_action_sort/tests/__init__.py @@ -0,0 +1 @@ +from . import test_module diff --git a/server_action_sort/tests/test_module.py b/server_action_sort/tests/test_module.py new file mode 100644 index 000000000..0c2f3de0b --- /dev/null +++ b/server_action_sort/tests/test_module.py @@ -0,0 +1,25 @@ +# Copyright (C) 2020 - Today: GRAP (http://www.grap.coop) +# @author: Sylvain LE GAL (https://twitter.com/legalsylvain) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo.tests.common import TransactionCase + + +class TestModule(TransactionCase): + def setUp(self): + super().setUp() + self.action_server = self.env.ref("server_action_sort.sort_action_server_lines") + self.line_1 = self.env.ref("server_action_sort.sort_action_server_lines_line_1") + self.line_2 = self.env.ref("server_action_sort.sort_action_server_lines_line_2") + + def test_action_result(self): + self.assertEqual(self.line_1.sequence, 1) + self.assertEqual(self.line_2.sequence, 2) + + # Reorder lines + self.action_server.with_context( + active_model="ir.actions.server", active_ids=[self.action_server.id] + ).run() + + self.assertEqual(self.line_1.sequence, 2) + self.assertEqual(self.line_2.sequence, 1) diff --git a/server_action_sort/views/view_ir_actions_server.xml b/server_action_sort/views/view_ir_actions_server.xml new file mode 100644 index 000000000..124e7382d --- /dev/null +++ b/server_action_sort/views/view_ir_actions_server.xml @@ -0,0 +1,42 @@ + + + + + + ir.actions.server + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/setup/_metapackage/VERSION.txt b/setup/_metapackage/VERSION.txt index 5aaaf2459..b90109d6c 100644 --- a/setup/_metapackage/VERSION.txt +++ b/setup/_metapackage/VERSION.txt @@ -1 +1 @@ -16.0.20230821.0 \ No newline at end of file +16.0.20240309.1 \ No newline at end of file diff --git a/setup/_metapackage/setup.py b/setup/_metapackage/setup.py index 8a4da23d3..4a537af27 100644 --- a/setup/_metapackage/setup.py +++ b/setup/_metapackage/setup.py @@ -13,11 +13,13 @@ 'odoo-addon-base_external_dbsource_sqlite>=16.0dev,<16.1dev', 'odoo-addon-base_external_system>=16.0dev,<16.1dev', 'odoo-addon-base_global_discount>=16.0dev,<16.1dev', + 'odoo-addon-base_group_backend>=16.0dev,<16.1dev', 'odoo-addon-base_import_match>=16.0dev,<16.1dev', 'odoo-addon-base_portal_type>=16.0dev,<16.1dev', 'odoo-addon-base_user_role>=16.0dev,<16.1dev', 'odoo-addon-base_user_role_company>=16.0dev,<16.1dev', 'odoo-addon-base_user_role_history>=16.0dev,<16.1dev', + 'odoo-addon-server_action_sort>=16.0dev,<16.1dev', ], classifiers=[ 'Programming Language :: Python', diff --git a/setup/base_group_backend/odoo/addons/base_group_backend b/setup/base_group_backend/odoo/addons/base_group_backend new file mode 120000 index 000000000..997602481 --- /dev/null +++ b/setup/base_group_backend/odoo/addons/base_group_backend @@ -0,0 +1 @@ +../../../../base_group_backend \ No newline at end of file diff --git a/setup/base_group_backend/setup.py b/setup/base_group_backend/setup.py new file mode 100644 index 000000000..28c57bb64 --- /dev/null +++ b/setup/base_group_backend/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/setup/server_action_sort/odoo/addons/server_action_sort b/setup/server_action_sort/odoo/addons/server_action_sort new file mode 120000 index 000000000..34b0f0e8e --- /dev/null +++ b/setup/server_action_sort/odoo/addons/server_action_sort @@ -0,0 +1 @@ +../../../../server_action_sort \ No newline at end of file diff --git a/setup/server_action_sort/setup.py b/setup/server_action_sort/setup.py new file mode 100644 index 000000000..28c57bb64 --- /dev/null +++ b/setup/server_action_sort/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +)