From d85b7da4cc27724369a234f8e687f62942a51e44 Mon Sep 17 00:00:00 2001 From: Benoit Aimont Date: Mon, 30 Sep 2019 12:02:31 +0200 Subject: [PATCH 01/12] [9.0][ADD] - base_user_role_history --- base_user_role_history/README.rst | 97 ++++ base_user_role_history/__init__.py | 1 + base_user_role_history/__openerp__.py | 30 ++ .../i18n/base_user_role_history.pot | 169 +++++++ base_user_role_history/i18n/fr.po | 170 +++++++ base_user_role_history/i18n/fr_BE.po | 170 +++++++ base_user_role_history/models/__init__.py | 2 + .../models/base_user_role_line_history.py | 145 ++++++ base_user_role_history/models/res_users.py | 75 +++ .../readme/CONTRIBUTORS.rst | 2 + base_user_role_history/readme/DESCRIPTION.rst | 4 + base_user_role_history/readme/ROADMAP.rst | 3 + base_user_role_history/readme/USAGE.rst | 1 + .../security/base_user_role_line_history.xml | 17 + .../static/description/index.html | 437 ++++++++++++++++++ base_user_role_history/tests/__init__.py | 1 + .../tests/test_base_user_role_history.py | 160 +++++++ .../views/base_user_role_line_history.xml | 89 ++++ base_user_role_history/views/res_users.xml | 29 ++ 19 files changed, 1602 insertions(+) create mode 100644 base_user_role_history/README.rst create mode 100644 base_user_role_history/__init__.py create mode 100644 base_user_role_history/__openerp__.py create mode 100644 base_user_role_history/i18n/base_user_role_history.pot create mode 100644 base_user_role_history/i18n/fr.po create mode 100644 base_user_role_history/i18n/fr_BE.po create mode 100644 base_user_role_history/models/__init__.py create mode 100644 base_user_role_history/models/base_user_role_line_history.py create mode 100644 base_user_role_history/models/res_users.py create mode 100644 base_user_role_history/readme/CONTRIBUTORS.rst create mode 100644 base_user_role_history/readme/DESCRIPTION.rst create mode 100644 base_user_role_history/readme/ROADMAP.rst create mode 100644 base_user_role_history/readme/USAGE.rst create mode 100644 base_user_role_history/security/base_user_role_line_history.xml create mode 100644 base_user_role_history/static/description/index.html create mode 100644 base_user_role_history/tests/__init__.py create mode 100644 base_user_role_history/tests/test_base_user_role_history.py create mode 100644 base_user_role_history/views/base_user_role_line_history.xml create mode 100644 base_user_role_history/views/res_users.xml diff --git a/base_user_role_history/README.rst b/base_user_role_history/README.rst new file mode 100644 index 00000000..369df50b --- /dev/null +++ b/base_user_role_history/README.rst @@ -0,0 +1,97 @@ +====================== +Base User Role History +====================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github + :target: https://github.com/OCA/server-tools/tree/9.0/base_user_role_history + :alt: OCA/server-tools +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/server-tools-9-0/server-tools-9-0-base_user_role_history + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/149/9.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This addon provides history for roles modifications on users. +Each time a role is added/updated/unlinked on a user, a new role history line +is created mentioning what changes were made and who made them. +Theses informations are directly accessible from users via a smart button. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +Changes on user roles are easily accessible via a button on user form view. + +Known issues / Roadmap +====================== + +Since roles on role history line have 'cascade' ondelete, role deletion leads +to role history line deletion. In order to keep history even in the case of +a role deletion, module could be upgraded. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* ACSONE SA/NV + +Contributors +~~~~~~~~~~~~ + +* Benoit Aimont (https://acsone.eu) +* Thomas Binsfeld (https://acsone.eu) + +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-ThomasBinsfeld| image:: https://github.com/ThomasBinsfeld.png?size=40px + :target: https://github.com/ThomasBinsfeld + :alt: ThomasBinsfeld + +Current `maintainer `__: + +|maintainer-ThomasBinsfeld| + +This module is part of the `OCA/server-tools `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/base_user_role_history/__init__.py b/base_user_role_history/__init__.py new file mode 100644 index 00000000..0650744f --- /dev/null +++ b/base_user_role_history/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/base_user_role_history/__openerp__.py b/base_user_role_history/__openerp__.py new file mode 100644 index 00000000..60c033a4 --- /dev/null +++ b/base_user_role_history/__openerp__.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +# Copyright 2019 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + 'name': 'Base User Role History', + 'summary': """ + This module allows to track the changes on users roles.""", + 'version': '9.0.1.0.0', + 'license': 'AGPL-3', + 'author': 'ACSONE SA/NV, ' + 'Odoo Community Association (OCA)', + 'website': 'https://github.com/OCA/server-tools', + 'depends': [ + # Odoo + 'mail', + # OCA + 'base_user_role', + 'base_suspend_security', + ], + 'data': [ + 'security/base_user_role_line_history.xml', + 'views/base_user_role_line_history.xml', + 'views/res_users.xml', + ], + 'development_status': 'Beta', + 'maintainers': [ + 'ThomasBinsfeld' + ], +} diff --git a/base_user_role_history/i18n/base_user_role_history.pot b/base_user_role_history/i18n/base_user_role_history.pot new file mode 100644 index 00000000..dbf1e4c9 --- /dev/null +++ b/base_user_role_history/i18n/base_user_role_history.pot @@ -0,0 +1,169 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_user_role_history +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-09-30 11:50+0000\n" +"PO-Revision-Date: 2019-09-30 11:50+0000\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_user_role_history +#: model:ir.ui.view,arch_db:base_user_role_history.res_users_form_view +msgid "Last update of roles" +msgstr "" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_performed_action +#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view +msgid "Action" +msgstr "" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_is_enabled +msgid "Active after edit" +msgstr "" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_is_enabled +msgid "Active before edit" +msgstr "" + +#. module: base_user_role_history +#: selection:base.user.role.line.history,performed_action:0 +msgid "Add" +msgstr "" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_create_uid +msgid "Created by" +msgstr "" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_create_date +msgid "Created on" +msgstr "" + +#. module: base_user_role_history +#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view +#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view +msgid "Date and time of edition" +msgstr "" + +#. module: base_user_role_history +#: selection:base.user.role.line.history,performed_action:0 +msgid "Delete" +msgstr "" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_display_name +msgid "Display Name" +msgstr "" + +#. module: base_user_role_history +#: selection:base.user.role.line.history,performed_action:0 +msgid "Edit" +msgstr "" + +#. module: base_user_role_history +#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view +msgid "Edited user" +msgstr "" + +#. module: base_user_role_history +#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view +#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view +msgid "Editor" +msgstr "" + +#. module: base_user_role_history +#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view +msgid "Group By" +msgstr "" + +#. module: base_user_role_history +#: model:ir.model,name:base_user_role_history.model_base_user_role_line_history +msgid "History of user roles" +msgstr "" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_id +msgid "ID" +msgstr "" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history___last_update +msgid "Last Modified on" +msgstr "" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_write_uid +msgid "Last Updated by" +msgstr "" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_write_date +msgid "Last Updated on" +msgstr "" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_res_users_last_role_line_modification +msgid "Last roles modification" +msgstr "" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_date_to +msgid "New end date" +msgstr "" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_role_id +#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view +msgid "New role" +msgstr "" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_date_from +msgid "New start date" +msgstr "" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_date_to +msgid "Old end date" +msgstr "" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_role_id +#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view +msgid "Old role" +msgstr "" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_date_from +msgid "Old start date" +msgstr "" + +#. module: base_user_role_history +#: code:addons/base_user_role_history/models/res_users.py:70 +#: model:ir.ui.view,arch_db:base_user_role_history.res_users_form_view +#, python-format +msgid "Roles history" +msgstr "" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_user_id +msgid "User" +msgstr "" + +#. module: base_user_role_history +#: model:ir.model,name:base_user_role_history.model_res_users +msgid "Users" +msgstr "" + diff --git a/base_user_role_history/i18n/fr.po b/base_user_role_history/i18n/fr.po new file mode 100644 index 00000000..39fbe849 --- /dev/null +++ b/base_user_role_history/i18n/fr.po @@ -0,0 +1,170 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_user_role_history +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-09-30 11:51+0000\n" +"PO-Revision-Date: 2019-09-30 11:51+0000\n" +"Last-Translator: <>\n" +"Language-Team: \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: base_user_role_history +#: model:ir.ui.view,arch_db:base_user_role_history.res_users_form_view +msgid "Last update of roles" +msgstr "Dernière modification des rôles" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_performed_action +#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view +msgid "Action" +msgstr "Action" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_is_enabled +msgid "Active after edit" +msgstr "Actif après édition" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_is_enabled +msgid "Active before edit" +msgstr "Actif avant édition" + +#. module: base_user_role_history +#: selection:base.user.role.line.history,performed_action:0 +msgid "Add" +msgstr "Ajouter" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_create_uid +msgid "Created by" +msgstr "Créé par" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_create_date +msgid "Created on" +msgstr "Créé le" + +#. module: base_user_role_history +#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view +#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view +msgid "Date and time of edition" +msgstr "Date et heure de modification" + +#. module: base_user_role_history +#: selection:base.user.role.line.history,performed_action:0 +msgid "Delete" +msgstr "Supprimer" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_display_name +msgid "Display Name" +msgstr "Nom affiché" + +#. module: base_user_role_history +#: selection:base.user.role.line.history,performed_action:0 +msgid "Edit" +msgstr "Modifier" + +#. module: base_user_role_history +#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view +msgid "Edited user" +msgstr "Utilisateur modifié" + +#. module: base_user_role_history +#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view +#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view +msgid "Editor" +msgstr "Utilisateur modificateur" + +#. module: base_user_role_history +#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view +msgid "Group By" +msgstr "Regrouper par" + +#. module: base_user_role_history +#: model:ir.model,name:base_user_role_history.model_base_user_role_line_history +msgid "History of user roles" +msgstr "Historique des rôles de l'utilisateur" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_id +msgid "ID" +msgstr "ID" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history___last_update +msgid "Last Modified on" +msgstr "Dernière modification le" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_write_uid +msgid "Last Updated by" +msgstr "Mis à jour par" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_write_date +msgid "Last Updated on" +msgstr "Mis à jour le" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_res_users_last_role_line_modification +msgid "Last roles modification" +msgstr "Dernière modification des rôles" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_date_to +msgid "New end date" +msgstr "Nouvelle date de fin" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_role_id +#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view +msgid "New role" +msgstr "Nouveau rôle" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_date_from +msgid "New start date" +msgstr "Nouvelle date de début" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_date_to +msgid "Old end date" +msgstr "Ancienne date de fin" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_role_id +#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view +msgid "Old role" +msgstr "Ancien rôle" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_date_from +msgid "Old start date" +msgstr "Ancienne date de début" + +#. module: base_user_role_history +#: code:addons/base_user_role_history/models/res_users.py:70 +#: model:ir.ui.view,arch_db:base_user_role_history.res_users_form_view +#, python-format +msgid "Roles history" +msgstr "Historique des rôles" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_user_id +msgid "User" +msgstr "Utilisateur" + +#. module: base_user_role_history +#: model:ir.model,name:base_user_role_history.model_res_users +msgid "Users" +msgstr "Utilisateurs" + diff --git a/base_user_role_history/i18n/fr_BE.po b/base_user_role_history/i18n/fr_BE.po new file mode 100644 index 00000000..457621b4 --- /dev/null +++ b/base_user_role_history/i18n/fr_BE.po @@ -0,0 +1,170 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_user_role_history +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-09-30 11:50+0000\n" +"PO-Revision-Date: 2019-09-30 11:50+0000\n" +"Last-Translator: <>\n" +"Language-Team: \n" +"Language: fr_BE\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: base_user_role_history +#: model:ir.ui.view,arch_db:base_user_role_history.res_users_form_view +msgid "Last update of roles" +msgstr "Dernière modification des rôles" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_performed_action +#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view +msgid "Action" +msgstr "Action" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_is_enabled +msgid "Active after edit" +msgstr "Actif après édition" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_is_enabled +msgid "Active before edit" +msgstr "Actif avant édition" + +#. module: base_user_role_history +#: selection:base.user.role.line.history,performed_action:0 +msgid "Add" +msgstr "Ajouter" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_create_uid +msgid "Created by" +msgstr "Créé par" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_create_date +msgid "Created on" +msgstr "Créé le" + +#. module: base_user_role_history +#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view +#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view +msgid "Date and time of edition" +msgstr "Date et heure de modification" + +#. module: base_user_role_history +#: selection:base.user.role.line.history,performed_action:0 +msgid "Delete" +msgstr "Supprimer" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_display_name +msgid "Display Name" +msgstr "Nom affiché" + +#. module: base_user_role_history +#: selection:base.user.role.line.history,performed_action:0 +msgid "Edit" +msgstr "Modifier" + +#. module: base_user_role_history +#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view +msgid "Edited user" +msgstr "Utilisateur modifié" + +#. module: base_user_role_history +#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view +#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view +msgid "Editor" +msgstr "Utilisateur modificateur" + +#. module: base_user_role_history +#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view +msgid "Group By" +msgstr "Regrouper par" + +#. module: base_user_role_history +#: model:ir.model,name:base_user_role_history.model_base_user_role_line_history +msgid "History of user roles" +msgstr "Historique des rôles de l'utilisateur" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_id +msgid "ID" +msgstr "ID" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history___last_update +msgid "Last Modified on" +msgstr "Dernière modification le" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_write_uid +msgid "Last Updated by" +msgstr "Derniere fois mis à jour par" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_write_date +msgid "Last Updated on" +msgstr "Dernière mis à jour le" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_res_users_last_role_line_modification +msgid "Last roles modification" +msgstr "Dernière modification des rôles" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_date_to +msgid "New end date" +msgstr "Nouvelle date de fin" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_role_id +#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view +msgid "New role" +msgstr "Nouveau rôle" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_date_from +msgid "New start date" +msgstr "Nouvelle date de début" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_date_to +msgid "Old end date" +msgstr "Ancienne date de fin" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_role_id +#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view +msgid "Old role" +msgstr "Ancien rôle" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_date_from +msgid "Old start date" +msgstr "Ancienne date de début" + +#. module: base_user_role_history +#: code:addons/base_user_role_history/models/res_users.py:70 +#: model:ir.ui.view,arch_db:base_user_role_history.res_users_form_view +#, python-format +msgid "Roles history" +msgstr "Historique des rôles" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_user_id +msgid "User" +msgstr "Utilisateur" + +#. module: base_user_role_history +#: model:ir.model,name:base_user_role_history.model_res_users +msgid "Users" +msgstr "Utilisateurs" + diff --git a/base_user_role_history/models/__init__.py b/base_user_role_history/models/__init__.py new file mode 100644 index 00000000..9ce69302 --- /dev/null +++ b/base_user_role_history/models/__init__.py @@ -0,0 +1,2 @@ +from . import res_users +from . import base_user_role_line_history diff --git a/base_user_role_history/models/base_user_role_line_history.py b/base_user_role_history/models/base_user_role_line_history.py new file mode 100644 index 00000000..f89c2b85 --- /dev/null +++ b/base_user_role_history/models/base_user_role_line_history.py @@ -0,0 +1,145 @@ +# -*- coding: utf-8 -*- +# Copyright 2019 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from openerp import api, fields, models + + +class BaseUserRoleLineHistory(models.Model): + _name = 'base.user.role.line.history' + _description = "History of user roles" + _order = 'id desc' + + performed_action = fields.Selection( + string="Action", + selection=[ + ('add', 'Add'), + ('unlink', 'Delete'), + ('edit', 'Edit') + ], + required=True, + readonly=True, + ) + user_id = fields.Many2one( + string="User", + comodel_name='res.users', + ondelete='cascade', + readonly=True, + index=True, + ) + old_role_id = fields.Many2one( + string="Old role", + comodel_name='res.users.role', + ondelete='cascade', + readonly=True, + index=True, + ) + new_role_id = fields.Many2one( + string="New role", + comodel_name='res.users.role', + ondelete='cascade', + readonly=True, + index=True, + ) + old_date_from = fields.Date( + string="Old start date", + readonly=True, + ) + new_date_from = fields.Date( + string="New start date", + readonly=True, + ) + old_date_to = fields.Date( + string="Old end date", + readonly=True, + ) + new_date_to = fields.Date( + string="New end date", + readonly=True, + ) + old_is_enabled = fields.Boolean( + string="Active before edit", + readonly=True, + ) + new_is_enabled = fields.Boolean( + string="Active after edit", + readonly=True, + ) + + @api.model + def _prepare_create_from_vals( + self, + old_role_line_values_by_user, + new_role_line_values_by_user + ): + role_history_line_vals_by_role_line = {} + for key, value in new_role_line_values_by_user.items(): + old_vals = old_role_line_values_by_user.get(key, {}) + new_vals = value + # Manage deletion of role lines and old values of modified lines + for role_line_id, role_line_vals in old_vals.items(): + action = 'unlink' if role_line_id not in new_vals else 'edit' + if action == 'edit': + # Skip if no change + if not any( + role_line_vals[k] != new_vals[role_line_id][k] + for k in role_line_vals + ): + continue + role_history_line_vals_by_role_line.setdefault( + role_line_id, {} + ) + role_history_line_vals_by_role_line[role_line_id].update({ + 'performed_action': action, + 'user_id': role_line_vals['user_id'], + 'old_role_id': role_line_vals['role_id'], + 'old_date_from': role_line_vals['date_from'], + 'old_date_to': role_line_vals['date_to'], + 'old_is_enabled': role_line_vals['is_enabled'], + }) + # Manage addition of role lines and new values of modified ones + for role_line_id, role_line_vals in new_vals.items(): + action = 'add' if role_line_id not in old_vals else 'edit' + if action == 'edit': + # Skip if no change + if not any( + role_line_vals[k] != old_vals[role_line_id][k] + for k in role_line_vals + ): + continue + role_history_line_vals_by_role_line.setdefault( + role_line_id, {} + ) + role_history_line_vals_by_role_line[role_line_id].update({ + 'performed_action': action, + 'user_id': role_line_vals['user_id'], + 'new_role_id': role_line_vals['role_id'], + 'new_date_from': role_line_vals['date_from'], + 'new_date_to': role_line_vals['date_to'], + 'new_is_enabled': role_line_vals['is_enabled'], + }) + return role_history_line_vals_by_role_line + + @api.model + def create_from_vals( + self, + old_role_line_values_by_user, + new_role_line_values_by_user + ): + """ + This method creates user role line history objects based on given + old/new values. + old_role_line_values_by_user and new_role_line_values_by_user are like: + {user_id: + {role_line_id: + {role_line_values}, + }, + } + """ + role_history_line_vals_by_role_line = self._prepare_create_from_vals( + old_role_line_values_by_user, new_role_line_values_by_user + ) + # Create the history lines with suspend security + # (nobody has the create right) + for role_history_vals in role_history_line_vals_by_role_line.values(): + self.suspend_security().create(role_history_vals) diff --git a/base_user_role_history/models/res_users.py b/base_user_role_history/models/res_users.py new file mode 100644 index 00000000..5f4dd4ab --- /dev/null +++ b/base_user_role_history/models/res_users.py @@ -0,0 +1,75 @@ +# -*- coding: utf-8 -*- +# Copyright 2019 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from openerp import api, fields, models, _ + + +class ResUsers(models.Model): + _inherit = 'res.users' + + last_role_line_modification = fields.Datetime( + string="Last roles modification", + readonly=True, + ) + + @api.model + def _prepare_role_line_history_dict(self, role_line): + return { + 'user_id': role_line.user_id.id, + 'role_id': role_line.role_id.id, + 'date_from': fields.Date.from_string(role_line.date_from), + 'date_to': fields.Date.from_string(role_line.date_to), + 'is_enabled': role_line.is_enabled, + } + + @api.multi + def _get_role_line_values_by_user(self): + role_line_values_by_user = {} + for rec in self: + role_line_values_by_user.setdefault(rec, {}) + for role_line in rec.role_line_ids: + role_line_values_by_user[rec][role_line.id] = \ + self._prepare_role_line_history_dict(role_line) + return role_line_values_by_user + + @api.model + def create(self, vals): + res = super(ResUsers, self).create(vals) + if 'role_line_ids' not in vals: + return res + new_role_line_values_by_user = res._get_role_line_values_by_user() + self.env['base.user.role.line.history'].create_from_vals( + {}, + new_role_line_values_by_user + ) + res.last_role_line_modification = fields.Datetime.now() + return res + + @api.multi + def write(self, vals): + if 'role_line_ids' not in vals: + return super(ResUsers, self).write(vals) + old_role_line_values_by_user = self._get_role_line_values_by_user() + res = super(ResUsers, self).write(vals) + new_role_line_values_by_user = self._get_role_line_values_by_user() + self.env['base.user.role.line.history'].create_from_vals( + old_role_line_values_by_user, + new_role_line_values_by_user + ) + self.write({ + 'last_role_line_modification': fields.Datetime.now() + }) + return res + + @api.multi + def show_role_lines_history(self): # pragma: no cover + self.ensure_one() + domain = [('user_id', '=', self.id)] + return { + 'name': _("Roles history"), + 'type': 'ir.actions.act_window', + 'view_mode': 'tree,form', + 'res_model': 'base.user.role.line.history', + 'domain': domain, + } diff --git a/base_user_role_history/readme/CONTRIBUTORS.rst b/base_user_role_history/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000..ce9dedf8 --- /dev/null +++ b/base_user_role_history/readme/CONTRIBUTORS.rst @@ -0,0 +1,2 @@ +* Benoit Aimont (https://acsone.eu) +* Thomas Binsfeld (https://acsone.eu) diff --git a/base_user_role_history/readme/DESCRIPTION.rst b/base_user_role_history/readme/DESCRIPTION.rst new file mode 100644 index 00000000..ddc8ccf5 --- /dev/null +++ b/base_user_role_history/readme/DESCRIPTION.rst @@ -0,0 +1,4 @@ +This addon provides history for roles modifications on users. +Each time a role is added/updated/unlinked on a user, a new role history line +is created mentioning what changes were made and who made them. +Theses informations are directly accessible from users via a smart button. diff --git a/base_user_role_history/readme/ROADMAP.rst b/base_user_role_history/readme/ROADMAP.rst new file mode 100644 index 00000000..620ab933 --- /dev/null +++ b/base_user_role_history/readme/ROADMAP.rst @@ -0,0 +1,3 @@ +Since roles on role history line have 'cascade' ondelete, role deletion leads +to role history line deletion. In order to keep history even in the case of +a role deletion, module could be upgraded. diff --git a/base_user_role_history/readme/USAGE.rst b/base_user_role_history/readme/USAGE.rst new file mode 100644 index 00000000..8c22abc6 --- /dev/null +++ b/base_user_role_history/readme/USAGE.rst @@ -0,0 +1 @@ +Changes on user roles are easily accessible via a button on user form view. diff --git a/base_user_role_history/security/base_user_role_line_history.xml b/base_user_role_history/security/base_user_role_line_history.xml new file mode 100644 index 00000000..c99c1365 --- /dev/null +++ b/base_user_role_history/security/base_user_role_line_history.xml @@ -0,0 +1,17 @@ + + + + + + + base.user.role.line.history access user + + + + + + + + + diff --git a/base_user_role_history/static/description/index.html b/base_user_role_history/static/description/index.html new file mode 100644 index 00000000..ad88ec88 --- /dev/null +++ b/base_user_role_history/static/description/index.html @@ -0,0 +1,437 @@ + + + + + + +Base User Role History + + + +
+

Base User Role History

+ + +

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

+

This addon provides history for roles modifications on users. +Each time a role is added/updated/unlinked on a user, a new role history line +is created mentioning what changes were made and who made them. +Theses informations are directly accessible from users via a smart button.

+

Table of contents

+ +
+

Usage

+

Changes on user roles are easily accessible via a button on user form view.

+
+
+

Known issues / Roadmap

+

Since roles on role history line have ‘cascade’ ondelete, role deletion leads +to role history line deletion. In order to keep history even in the case of +a role deletion, module could be upgraded.

+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +feedback.

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • ACSONE SA/NV
  • +
+
+ +
+

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:

+

ThomasBinsfeld

+

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

+

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

+
+
+
+ + diff --git a/base_user_role_history/tests/__init__.py b/base_user_role_history/tests/__init__.py new file mode 100644 index 00000000..c9a4ca3c --- /dev/null +++ b/base_user_role_history/tests/__init__.py @@ -0,0 +1 @@ +from . import test_base_user_role_history diff --git a/base_user_role_history/tests/test_base_user_role_history.py b/base_user_role_history/tests/test_base_user_role_history.py new file mode 100644 index 00000000..29fa717e --- /dev/null +++ b/base_user_role_history/tests/test_base_user_role_history.py @@ -0,0 +1,160 @@ +# -*- coding: utf-8 -*- +# Copyright 2019 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).µ + +from datetime import date, timedelta + +from openerp import fields +from openerp.tests.common import SavepointCase + + +class TestBaseUserRoleHistory(SavepointCase): + + @classmethod + def setUpClass(cls): + super(TestBaseUserRoleHistory, cls).setUpClass() + + # MODELS + + cls.history_line_model = cls.env['base.user.role.line.history'] + cls.role_model = cls.env['res.users.role'] + cls.user_model = cls.env['res.users'] + + # INSTANCE + + cls.user_01 = cls.user_model.search([ + ('id', '!=', cls.env.user.id) + ], limit=1) + cls.role_01 = cls.role_model.create({ + 'name': "Role test 01", + }) + + def test_write_role_lines_on_user(self): + """ + Data : + - user with no role + Test case : + 1) add a role + 2) role modification with dates + 3) role modification with no change + 4) role unlink + Expected results : + 1) new role history line created with performed_action == 'add' + 2) new role history line created with performed_action == 'edit' + 3) no new role history line created + 4) new role history line created with performed_action == 'unlink' + """ + # 1 + history_lines_0 = self.history_line_model.search([ + ('user_id', '=', self.user_01.id) + ]) + self.assertFalse(history_lines_0) + self.user_01.write({ + 'role_line_ids': [ + (0, 0, { + 'role_id': self.role_01.id + }) + ] + }) + history_lines_1 = self.history_line_model.search([ + ('user_id', '=', self.user_01.id) + ]) + self.assertTrue(history_lines_1) + self.assertEqual(len(history_lines_1), 1) + self.assertEqual(history_lines_1.performed_action, 'add') + self.assertFalse(history_lines_1.old_role_id) + self.assertEqual(history_lines_1.new_role_id, self.role_01) + # 2 + self.user_01.write({ + 'role_line_ids': [ + (1, self.user_01.role_line_ids[0].id, { + 'date_from': date.today(), + 'date_to': date.today() + timedelta(days=5), + }) + ] + }) + history_lines_2 = self.history_line_model.search([ + ('user_id', '=', self.user_01.id), + ('id', 'not in', history_lines_1.ids) + ]) + self.assertTrue(history_lines_2) + self.assertEqual(len(history_lines_2), 1) + self.assertEqual(history_lines_2.performed_action, 'edit') + self.assertEqual(history_lines_2.old_role_id, self.role_01) + self.assertEqual(history_lines_2.new_role_id, self.role_01) + self.assertFalse(history_lines_2.old_date_from) + self.assertEqual(history_lines_2.new_date_from, + fields.Date.to_string(date.today())) + self.assertFalse(history_lines_2.old_date_to) + self.assertEqual(history_lines_2.new_date_to, + fields.Date.to_string( + date.today() + timedelta(days=5))) + self.user_01.write({ + 'role_line_ids': [(1, self.user_01.role_line_ids[0].id, {})] + }) + history_lines_3 = self.history_line_model.search([ + ('user_id', '=', self.user_01.id), + ('id', 'not in', (history_lines_1 | history_lines_2).ids) + ]) + self.assertFalse(history_lines_3) + # 4 + self.user_01.write({ + 'role_line_ids': [(2, self.user_01.role_line_ids[0].id, False)], + }) + history_lines_4 = self.history_line_model.search([ + ('user_id', '=', self.user_01.id), + ('id', 'not in', (history_lines_1 | history_lines_2).ids) + ]) + self.assertTrue(history_lines_4) + self.assertEqual(len(history_lines_4), 1) + self.assertEqual(history_lines_4.performed_action, 'unlink') + self.assertEqual(history_lines_4.old_role_id, self.role_01) + self.assertFalse(history_lines_4.new_role_id) + self.assertEqual(history_lines_4.old_date_from, + fields.Date.to_string(date.today())) + self.assertFalse(history_lines_4.new_date_from) + self.assertEqual(history_lines_4.old_date_to, + fields.Date.to_string( + date.today() + timedelta(days=5))) + self.assertFalse(history_lines_4.new_date_to) + + def test_create_role_lines_on_new_user(self): + """ + Data : / + Test case : + - create a user with a role + Expected results : + - new role history line created with performed_action == 'add' + """ + new_user = self.user_model.create({ + 'login': 'new_user', + 'name': 'new_user', + 'role_line_ids': [ + (0, 0, { + 'role_id': self.role_01.id, + }) + ] + }) + history_lines = self.history_line_model.search([ + ('user_id', '=', new_user.id) + ]) + self.assertTrue(history_lines) + self.assertEqual(len(history_lines), 1) + self.assertEqual(history_lines.performed_action, 'add') + + def test_no_create_role_lines_on_new_user(self): + """ + Data : / + Test case : + - create a user without role + Expected results : + - no role history line created + """ + new_user = self.user_model.create({ + 'login': 'new_user', + 'name': 'new_user', + }) + history_lines = self.history_line_model.search([ + ('user_id', '=', new_user.id) + ]) + self.assertFalse(history_lines) diff --git a/base_user_role_history/views/base_user_role_line_history.xml b/base_user_role_history/views/base_user_role_line_history.xml new file mode 100644 index 00000000..a1cabe9f --- /dev/null +++ b/base_user_role_history/views/base_user_role_line_history.xml @@ -0,0 +1,89 @@ + + + + + + + + + base.user.role.line.history.form (in base_user_role_history) + base.user.role.line.history + +
+
+
+ + + + + + + + + + + + + + + + +
+
+
+ + + + + base.user.role.line.history.tree (in base_user_role_history) + base.user.role.line.history + + + + + + + + + + + + + + + + + + + + + base.user.role.line.history.search (in base_user_role_history) + base.user.role.line.history + + + + + + + + + + + + + +
diff --git a/base_user_role_history/views/res_users.xml b/base_user_role_history/views/res_users.xml new file mode 100644 index 00000000..8eea0cf0 --- /dev/null +++ b/base_user_role_history/views/res_users.xml @@ -0,0 +1,29 @@ + + + + + + + + + res.users.form (in base_user_role_history) + res.users + + +
+ +
+
+
+ +
From da660af78734cd87ccfdb605524df3442c80a140 Mon Sep 17 00:00:00 2001 From: Benoit Aimont Date: Tue, 1 Oct 2019 14:41:31 +0200 Subject: [PATCH 02/12] [12.0][MIG] base_user_role_history - migration from 9.0 to 12.0 --- base_user_role_history/README.rst | 16 ++--- .../{__openerp__.py => __manifest__.py} | 3 +- .../i18n/base_user_role_history.pot | 62 +++++++++--------- .../models/base_user_role_line_history.py | 3 +- base_user_role_history/models/res_users.py | 22 +++---- .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 8 +-- .../tests/test_base_user_role_history.py | 27 ++++---- 8 files changed, 69 insertions(+), 72 deletions(-) rename base_user_role_history/{__openerp__.py => __manifest__.py} (93%) create mode 100644 base_user_role_history/static/description/icon.png diff --git a/base_user_role_history/README.rst b/base_user_role_history/README.rst index 369df50b..08f2e118 100644 --- a/base_user_role_history/README.rst +++ b/base_user_role_history/README.rst @@ -13,14 +13,14 @@ Base User Role History .. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 -.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github - :target: https://github.com/OCA/server-tools/tree/9.0/base_user_role_history - :alt: OCA/server-tools +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--backend-lightgray.png?logo=github + :target: https://github.com/OCA/server-backend/tree/12.0/base_user_role_history + :alt: OCA/server-backend .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/server-tools-9-0/server-tools-9-0-base_user_role_history + :target: https://translation.odoo-community.org/projects/server-backend-12-0/server-backend-12-0-base_user_role_history :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/149/9.0 + :target: https://runbot.odoo-community.org/runbot/253/12.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -50,10 +50,10 @@ a role deletion, module could be upgraded. Bug Tracker =========== -Bugs are tracked on `GitHub Issues `_. +Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -92,6 +92,6 @@ Current `maintainer `__: |maintainer-ThomasBinsfeld| -This module is part of the `OCA/server-tools `_ project on GitHub. +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_user_role_history/__openerp__.py b/base_user_role_history/__manifest__.py similarity index 93% rename from base_user_role_history/__openerp__.py rename to base_user_role_history/__manifest__.py index 60c033a4..539a2d96 100644 --- a/base_user_role_history/__openerp__.py +++ b/base_user_role_history/__manifest__.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Copyright 2019 ACSONE SA/NV # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). @@ -6,7 +5,7 @@ 'name': 'Base User Role History', 'summary': """ This module allows to track the changes on users roles.""", - 'version': '9.0.1.0.0', + 'version': '12.0.1.0.0', 'license': 'AGPL-3', 'author': 'ACSONE SA/NV, ' 'Odoo Community Association (OCA)', diff --git a/base_user_role_history/i18n/base_user_role_history.pot b/base_user_role_history/i18n/base_user_role_history.pot index dbf1e4c9..c8299c7f 100644 --- a/base_user_role_history/i18n/base_user_role_history.pot +++ b/base_user_role_history/i18n/base_user_role_history.pot @@ -4,10 +4,8 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 9.0c\n" +"Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-09-30 11:50+0000\n" -"PO-Revision-Date: 2019-09-30 11:50+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -16,23 +14,23 @@ msgstr "" "Plural-Forms: \n" #. module: base_user_role_history -#: model:ir.ui.view,arch_db:base_user_role_history.res_users_form_view +#: model_terms:ir.ui.view,arch_db:base_user_role_history.res_users_form_view msgid "Last update of roles" msgstr "" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_performed_action -#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__performed_action +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view msgid "Action" msgstr "" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_is_enabled +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__new_is_enabled msgid "Active after edit" msgstr "" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_is_enabled +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__old_is_enabled msgid "Active before edit" msgstr "" @@ -42,18 +40,18 @@ msgid "Add" msgstr "" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_create_uid +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__create_uid msgid "Created by" msgstr "" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_create_date +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__create_date msgid "Created on" msgstr "" #. module: base_user_role_history -#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view -#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view msgid "Date and time of edition" msgstr "" @@ -63,7 +61,7 @@ msgid "Delete" msgstr "" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_display_name +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__display_name msgid "Display Name" msgstr "" @@ -73,18 +71,18 @@ msgid "Edit" msgstr "" #. module: base_user_role_history -#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view msgid "Edited user" msgstr "" #. module: base_user_role_history -#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view -#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view msgid "Editor" msgstr "" #. module: base_user_role_history -#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view msgid "Group By" msgstr "" @@ -94,71 +92,71 @@ msgid "History of user roles" msgstr "" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_id +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__id msgid "ID" msgstr "" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history___last_update +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history____last_update msgid "Last Modified on" msgstr "" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_write_uid +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__write_uid msgid "Last Updated by" msgstr "" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_write_date +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__write_date msgid "Last Updated on" msgstr "" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_res_users_last_role_line_modification +#: model:ir.model.fields,field_description:base_user_role_history.field_res_users__last_role_line_modification msgid "Last roles modification" msgstr "" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_date_to +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__new_date_to msgid "New end date" msgstr "" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_role_id -#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__new_role_id +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view msgid "New role" msgstr "" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_date_from +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__new_date_from msgid "New start date" msgstr "" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_date_to +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__old_date_to msgid "Old end date" msgstr "" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_role_id -#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__old_role_id +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view msgid "Old role" msgstr "" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_date_from +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__old_date_from msgid "Old start date" msgstr "" #. module: base_user_role_history #: code:addons/base_user_role_history/models/res_users.py:70 -#: model:ir.ui.view,arch_db:base_user_role_history.res_users_form_view +#: model_terms:ir.ui.view,arch_db:base_user_role_history.res_users_form_view #, python-format msgid "Roles history" msgstr "" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_user_id +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__user_id msgid "User" msgstr "" diff --git a/base_user_role_history/models/base_user_role_line_history.py b/base_user_role_history/models/base_user_role_line_history.py index f89c2b85..76947f02 100644 --- a/base_user_role_history/models/base_user_role_line_history.py +++ b/base_user_role_history/models/base_user_role_line_history.py @@ -1,8 +1,7 @@ -# -*- coding: utf-8 -*- # Copyright 2019 ACSONE SA/NV # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from openerp import api, fields, models +from odoo import api, fields, models class BaseUserRoleLineHistory(models.Model): diff --git a/base_user_role_history/models/res_users.py b/base_user_role_history/models/res_users.py index 5f4dd4ab..da80471f 100644 --- a/base_user_role_history/models/res_users.py +++ b/base_user_role_history/models/res_users.py @@ -1,8 +1,7 @@ -# -*- coding: utf-8 -*- # Copyright 2019 ACSONE SA/NV # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from openerp import api, fields, models, _ +from odoo import api, fields, models, _ class ResUsers(models.Model): @@ -18,8 +17,8 @@ class ResUsers(models.Model): return { 'user_id': role_line.user_id.id, 'role_id': role_line.role_id.id, - 'date_from': fields.Date.from_string(role_line.date_from), - 'date_to': fields.Date.from_string(role_line.date_to), + 'date_from': role_line.date_from, + 'date_to': role_line.date_to, 'is_enabled': role_line.is_enabled, } @@ -33,11 +32,12 @@ class ResUsers(models.Model): self._prepare_role_line_history_dict(role_line) return role_line_values_by_user - @api.model - def create(self, vals): - res = super(ResUsers, self).create(vals) - if 'role_line_ids' not in vals: - return res + @api.model_create_multi + def create(self, vals_list): + res = super().create(vals_list) + for vals in vals_list: + if 'role_line_ids' not in vals: + return res new_role_line_values_by_user = res._get_role_line_values_by_user() self.env['base.user.role.line.history'].create_from_vals( {}, @@ -49,9 +49,9 @@ class ResUsers(models.Model): @api.multi def write(self, vals): if 'role_line_ids' not in vals: - return super(ResUsers, self).write(vals) + return super().write(vals) old_role_line_values_by_user = self._get_role_line_values_by_user() - res = super(ResUsers, self).write(vals) + res = super().write(vals) new_role_line_values_by_user = self._get_role_line_values_by_user() self.env['base.user.role.line.history'].create_from_vals( old_role_line_values_by_user, diff --git a/base_user_role_history/static/description/icon.png b/base_user_role_history/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/base_user_role_history/static/description/index.html b/base_user_role_history/static/description/index.html index ad88ec88..e41f5790 100644 --- a/base_user_role_history/static/description/index.html +++ b/base_user_role_history/static/description/index.html @@ -367,7 +367,7 @@ ul.auto-toc { !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

+

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

This addon provides history for roles modifications on users. Each time a role is added/updated/unlinked on a user, a new role history line is created mentioning what changes were made and who made them. @@ -398,10 +398,10 @@ a role deletion, module could be upgraded.

Bug Tracker

-

Bugs are tracked on GitHub Issues. +

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -feedback.

+feedback.

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

@@ -428,7 +428,7 @@ mission is to support the collaborative development of Odoo features and promote its widespread use.

Current maintainer:

ThomasBinsfeld

-

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

+

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_user_role_history/tests/test_base_user_role_history.py b/base_user_role_history/tests/test_base_user_role_history.py index 29fa717e..8a289f7a 100644 --- a/base_user_role_history/tests/test_base_user_role_history.py +++ b/base_user_role_history/tests/test_base_user_role_history.py @@ -1,11 +1,9 @@ -# -*- coding: utf-8 -*- # Copyright 2019 ACSONE SA/NV # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).µ from datetime import date, timedelta -from openerp import fields -from openerp.tests.common import SavepointCase +from odoo.tests.common import SavepointCase class TestBaseUserRoleHistory(SavepointCase): @@ -83,12 +81,12 @@ class TestBaseUserRoleHistory(SavepointCase): self.assertEqual(history_lines_2.old_role_id, self.role_01) self.assertEqual(history_lines_2.new_role_id, self.role_01) self.assertFalse(history_lines_2.old_date_from) - self.assertEqual(history_lines_2.new_date_from, - fields.Date.to_string(date.today())) + self.assertEqual(history_lines_2.new_date_from, date.today()) self.assertFalse(history_lines_2.old_date_to) - self.assertEqual(history_lines_2.new_date_to, - fields.Date.to_string( - date.today() + timedelta(days=5))) + self.assertEqual( + history_lines_2.new_date_to, + date.today() + timedelta(days=5) + ) self.user_01.write({ 'role_line_ids': [(1, self.user_01.role_line_ids[0].id, {})] }) @@ -110,12 +108,15 @@ class TestBaseUserRoleHistory(SavepointCase): self.assertEqual(history_lines_4.performed_action, 'unlink') self.assertEqual(history_lines_4.old_role_id, self.role_01) self.assertFalse(history_lines_4.new_role_id) - self.assertEqual(history_lines_4.old_date_from, - fields.Date.to_string(date.today())) + self.assertEqual( + history_lines_4.old_date_from, + date.today() + ) self.assertFalse(history_lines_4.new_date_from) - self.assertEqual(history_lines_4.old_date_to, - fields.Date.to_string( - date.today() + timedelta(days=5))) + self.assertEqual( + history_lines_4.old_date_to, + date.today() + timedelta(days=5) + ) self.assertFalse(history_lines_4.new_date_to) def test_create_role_lines_on_new_user(self): From 524e7e8faf5c0af5c5c89b99806203cb21bd5b3a Mon Sep 17 00:00:00 2001 From: Benoit Aimont Date: Wed, 18 Dec 2019 10:05:58 +0100 Subject: [PATCH 03/12] [IMP] base_user_role_history: black, isort --- base_user_role_history/__manifest__.py | 35 ++--- .../models/base_user_role_line_history.py | 116 ++++++-------- base_user_role_history/models/res_users.py | 52 +++---- .../tests/test_base_user_role_history.py | 146 ++++++++---------- 4 files changed, 148 insertions(+), 201 deletions(-) diff --git a/base_user_role_history/__manifest__.py b/base_user_role_history/__manifest__.py index 539a2d96..f5fe5eba 100644 --- a/base_user_role_history/__manifest__.py +++ b/base_user_role_history/__manifest__.py @@ -2,28 +2,25 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { - 'name': 'Base User Role History', - 'summary': """ + "name": "Base User Role History", + "summary": """ This module allows to track the changes on users roles.""", - 'version': '12.0.1.0.0', - 'license': 'AGPL-3', - 'author': 'ACSONE SA/NV, ' - 'Odoo Community Association (OCA)', - 'website': 'https://github.com/OCA/server-tools', - 'depends': [ + "version": "12.0.1.0.0", + "license": "AGPL-3", + "author": "ACSONE SA/NV, " "Odoo Community Association (OCA)", + "website": "https://github.com/OCA/server-tools", + "depends": [ # Odoo - 'mail', + "mail", # OCA - 'base_user_role', - 'base_suspend_security', + "base_user_role", + "base_suspend_security", ], - 'data': [ - 'security/base_user_role_line_history.xml', - 'views/base_user_role_line_history.xml', - 'views/res_users.xml', - ], - 'development_status': 'Beta', - 'maintainers': [ - 'ThomasBinsfeld' + "data": [ + "security/base_user_role_line_history.xml", + "views/base_user_role_line_history.xml", + "views/res_users.xml", ], + "development_status": "Beta", + "maintainers": ["ThomasBinsfeld"], } diff --git a/base_user_role_history/models/base_user_role_line_history.py b/base_user_role_history/models/base_user_role_line_history.py index 76947f02..86da3836 100644 --- a/base_user_role_history/models/base_user_role_line_history.py +++ b/base_user_role_history/models/base_user_role_line_history.py @@ -5,71 +5,47 @@ from odoo import api, fields, models class BaseUserRoleLineHistory(models.Model): - _name = 'base.user.role.line.history' + _name = "base.user.role.line.history" _description = "History of user roles" - _order = 'id desc' + _order = "id desc" performed_action = fields.Selection( string="Action", - selection=[ - ('add', 'Add'), - ('unlink', 'Delete'), - ('edit', 'Edit') - ], + selection=[("add", "Add"), ("unlink", "Delete"), ("edit", "Edit")], required=True, readonly=True, ) user_id = fields.Many2one( string="User", - comodel_name='res.users', - ondelete='cascade', + comodel_name="res.users", + ondelete="cascade", readonly=True, index=True, ) old_role_id = fields.Many2one( string="Old role", - comodel_name='res.users.role', - ondelete='cascade', + comodel_name="res.users.role", + ondelete="cascade", readonly=True, index=True, ) new_role_id = fields.Many2one( string="New role", - comodel_name='res.users.role', - ondelete='cascade', + comodel_name="res.users.role", + ondelete="cascade", readonly=True, index=True, ) - old_date_from = fields.Date( - string="Old start date", - readonly=True, - ) - new_date_from = fields.Date( - string="New start date", - readonly=True, - ) - old_date_to = fields.Date( - string="Old end date", - readonly=True, - ) - new_date_to = fields.Date( - string="New end date", - readonly=True, - ) - old_is_enabled = fields.Boolean( - string="Active before edit", - readonly=True, - ) - new_is_enabled = fields.Boolean( - string="Active after edit", - readonly=True, - ) + old_date_from = fields.Date(string="Old start date", readonly=True) + new_date_from = fields.Date(string="New start date", readonly=True) + old_date_to = fields.Date(string="Old end date", readonly=True) + new_date_to = fields.Date(string="New end date", readonly=True) + old_is_enabled = fields.Boolean(string="Active before edit", readonly=True) + new_is_enabled = fields.Boolean(string="Active after edit", readonly=True) @api.model def _prepare_create_from_vals( - self, - old_role_line_values_by_user, - new_role_line_values_by_user + self, old_role_line_values_by_user, new_role_line_values_by_user ): role_history_line_vals_by_role_line = {} for key, value in new_role_line_values_by_user.items(): @@ -77,53 +53,51 @@ class BaseUserRoleLineHistory(models.Model): new_vals = value # Manage deletion of role lines and old values of modified lines for role_line_id, role_line_vals in old_vals.items(): - action = 'unlink' if role_line_id not in new_vals else 'edit' - if action == 'edit': + action = "unlink" if role_line_id not in new_vals else "edit" + if action == "edit": # Skip if no change if not any( - role_line_vals[k] != new_vals[role_line_id][k] - for k in role_line_vals + role_line_vals[k] != new_vals[role_line_id][k] + for k in role_line_vals ): continue - role_history_line_vals_by_role_line.setdefault( - role_line_id, {} + role_history_line_vals_by_role_line.setdefault(role_line_id, {}) + role_history_line_vals_by_role_line[role_line_id].update( + { + "performed_action": action, + "user_id": role_line_vals["user_id"], + "old_role_id": role_line_vals["role_id"], + "old_date_from": role_line_vals["date_from"], + "old_date_to": role_line_vals["date_to"], + "old_is_enabled": role_line_vals["is_enabled"], + } ) - role_history_line_vals_by_role_line[role_line_id].update({ - 'performed_action': action, - 'user_id': role_line_vals['user_id'], - 'old_role_id': role_line_vals['role_id'], - 'old_date_from': role_line_vals['date_from'], - 'old_date_to': role_line_vals['date_to'], - 'old_is_enabled': role_line_vals['is_enabled'], - }) # Manage addition of role lines and new values of modified ones for role_line_id, role_line_vals in new_vals.items(): - action = 'add' if role_line_id not in old_vals else 'edit' - if action == 'edit': + action = "add" if role_line_id not in old_vals else "edit" + if action == "edit": # Skip if no change if not any( - role_line_vals[k] != old_vals[role_line_id][k] - for k in role_line_vals + role_line_vals[k] != old_vals[role_line_id][k] + for k in role_line_vals ): continue - role_history_line_vals_by_role_line.setdefault( - role_line_id, {} + role_history_line_vals_by_role_line.setdefault(role_line_id, {}) + role_history_line_vals_by_role_line[role_line_id].update( + { + "performed_action": action, + "user_id": role_line_vals["user_id"], + "new_role_id": role_line_vals["role_id"], + "new_date_from": role_line_vals["date_from"], + "new_date_to": role_line_vals["date_to"], + "new_is_enabled": role_line_vals["is_enabled"], + } ) - role_history_line_vals_by_role_line[role_line_id].update({ - 'performed_action': action, - 'user_id': role_line_vals['user_id'], - 'new_role_id': role_line_vals['role_id'], - 'new_date_from': role_line_vals['date_from'], - 'new_date_to': role_line_vals['date_to'], - 'new_is_enabled': role_line_vals['is_enabled'], - }) return role_history_line_vals_by_role_line @api.model def create_from_vals( - self, - old_role_line_values_by_user, - new_role_line_values_by_user + self, old_role_line_values_by_user, new_role_line_values_by_user ): """ This method creates user role line history objects based on given diff --git a/base_user_role_history/models/res_users.py b/base_user_role_history/models/res_users.py index da80471f..248f8bf7 100644 --- a/base_user_role_history/models/res_users.py +++ b/base_user_role_history/models/res_users.py @@ -1,25 +1,24 @@ # Copyright 2019 ACSONE SA/NV # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo import api, fields, models, _ +from odoo import _, api, fields, models class ResUsers(models.Model): - _inherit = 'res.users' + _inherit = "res.users" last_role_line_modification = fields.Datetime( - string="Last roles modification", - readonly=True, + string="Last roles modification", readonly=True ) @api.model def _prepare_role_line_history_dict(self, role_line): return { - 'user_id': role_line.user_id.id, - 'role_id': role_line.role_id.id, - 'date_from': role_line.date_from, - 'date_to': role_line.date_to, - 'is_enabled': role_line.is_enabled, + "user_id": role_line.user_id.id, + "role_id": role_line.role_id.id, + "date_from": role_line.date_from, + "date_to": role_line.date_to, + "is_enabled": role_line.is_enabled, } @api.multi @@ -28,48 +27,45 @@ class ResUsers(models.Model): for rec in self: role_line_values_by_user.setdefault(rec, {}) for role_line in rec.role_line_ids: - role_line_values_by_user[rec][role_line.id] = \ - self._prepare_role_line_history_dict(role_line) + role_line_values_by_user[rec][ + role_line.id + ] = self._prepare_role_line_history_dict(role_line) return role_line_values_by_user @api.model_create_multi def create(self, vals_list): res = super().create(vals_list) for vals in vals_list: - if 'role_line_ids' not in vals: + if "role_line_ids" not in vals: return res new_role_line_values_by_user = res._get_role_line_values_by_user() - self.env['base.user.role.line.history'].create_from_vals( - {}, - new_role_line_values_by_user + self.env["base.user.role.line.history"].create_from_vals( + {}, new_role_line_values_by_user ) res.last_role_line_modification = fields.Datetime.now() return res @api.multi def write(self, vals): - if 'role_line_ids' not in vals: + if "role_line_ids" not in vals: return super().write(vals) old_role_line_values_by_user = self._get_role_line_values_by_user() res = super().write(vals) new_role_line_values_by_user = self._get_role_line_values_by_user() - self.env['base.user.role.line.history'].create_from_vals( - old_role_line_values_by_user, - new_role_line_values_by_user + self.env["base.user.role.line.history"].create_from_vals( + old_role_line_values_by_user, new_role_line_values_by_user ) - self.write({ - 'last_role_line_modification': fields.Datetime.now() - }) + self.write({"last_role_line_modification": fields.Datetime.now()}) return res @api.multi def show_role_lines_history(self): # pragma: no cover self.ensure_one() - domain = [('user_id', '=', self.id)] + domain = [("user_id", "=", self.id)] return { - 'name': _("Roles history"), - 'type': 'ir.actions.act_window', - 'view_mode': 'tree,form', - 'res_model': 'base.user.role.line.history', - 'domain': domain, + "name": _("Roles history"), + "type": "ir.actions.act_window", + "view_mode": "tree,form", + "res_model": "base.user.role.line.history", + "domain": domain, } diff --git a/base_user_role_history/tests/test_base_user_role_history.py b/base_user_role_history/tests/test_base_user_role_history.py index 8a289f7a..c712f6b6 100644 --- a/base_user_role_history/tests/test_base_user_role_history.py +++ b/base_user_role_history/tests/test_base_user_role_history.py @@ -7,25 +7,20 @@ from odoo.tests.common import SavepointCase class TestBaseUserRoleHistory(SavepointCase): - @classmethod def setUpClass(cls): super(TestBaseUserRoleHistory, cls).setUpClass() # MODELS - cls.history_line_model = cls.env['base.user.role.line.history'] - cls.role_model = cls.env['res.users.role'] - cls.user_model = cls.env['res.users'] + cls.history_line_model = cls.env["base.user.role.line.history"] + cls.role_model = cls.env["res.users.role"] + cls.user_model = cls.env["res.users"] # INSTANCE - cls.user_01 = cls.user_model.search([ - ('id', '!=', cls.env.user.id) - ], limit=1) - cls.role_01 = cls.role_model.create({ - 'name': "Role test 01", - }) + cls.user_01 = cls.user_model.search([("id", "!=", cls.env.user.id)], limit=1) + cls.role_01 = cls.role_model.create({"name": "Role test 01"}) def test_write_role_lines_on_user(self): """ @@ -43,80 +38,74 @@ class TestBaseUserRoleHistory(SavepointCase): 4) new role history line created with performed_action == 'unlink' """ # 1 - history_lines_0 = self.history_line_model.search([ - ('user_id', '=', self.user_01.id) - ]) + history_lines_0 = self.history_line_model.search( + [("user_id", "=", self.user_01.id)] + ) self.assertFalse(history_lines_0) - self.user_01.write({ - 'role_line_ids': [ - (0, 0, { - 'role_id': self.role_01.id - }) - ] - }) - history_lines_1 = self.history_line_model.search([ - ('user_id', '=', self.user_01.id) - ]) + self.user_01.write({"role_line_ids": [(0, 0, {"role_id": self.role_01.id})]}) + history_lines_1 = self.history_line_model.search( + [("user_id", "=", self.user_01.id)] + ) self.assertTrue(history_lines_1) self.assertEqual(len(history_lines_1), 1) - self.assertEqual(history_lines_1.performed_action, 'add') + self.assertEqual(history_lines_1.performed_action, "add") self.assertFalse(history_lines_1.old_role_id) self.assertEqual(history_lines_1.new_role_id, self.role_01) # 2 - self.user_01.write({ - 'role_line_ids': [ - (1, self.user_01.role_line_ids[0].id, { - 'date_from': date.today(), - 'date_to': date.today() + timedelta(days=5), - }) - ] - }) - history_lines_2 = self.history_line_model.search([ - ('user_id', '=', self.user_01.id), - ('id', 'not in', history_lines_1.ids) - ]) + self.user_01.write( + { + "role_line_ids": [ + ( + 1, + self.user_01.role_line_ids[0].id, + { + "date_from": date.today(), + "date_to": date.today() + timedelta(days=5), + }, + ) + ] + } + ) + history_lines_2 = self.history_line_model.search( + [("user_id", "=", self.user_01.id), ("id", "not in", history_lines_1.ids)] + ) self.assertTrue(history_lines_2) self.assertEqual(len(history_lines_2), 1) - self.assertEqual(history_lines_2.performed_action, 'edit') + self.assertEqual(history_lines_2.performed_action, "edit") self.assertEqual(history_lines_2.old_role_id, self.role_01) self.assertEqual(history_lines_2.new_role_id, self.role_01) self.assertFalse(history_lines_2.old_date_from) self.assertEqual(history_lines_2.new_date_from, date.today()) self.assertFalse(history_lines_2.old_date_to) - self.assertEqual( - history_lines_2.new_date_to, - date.today() + timedelta(days=5) + self.assertEqual(history_lines_2.new_date_to, date.today() + timedelta(days=5)) + self.user_01.write( + {"role_line_ids": [(1, self.user_01.role_line_ids[0].id, {})]} + ) + history_lines_3 = self.history_line_model.search( + [ + ("user_id", "=", self.user_01.id), + ("id", "not in", (history_lines_1 | history_lines_2).ids), + ] ) - self.user_01.write({ - 'role_line_ids': [(1, self.user_01.role_line_ids[0].id, {})] - }) - history_lines_3 = self.history_line_model.search([ - ('user_id', '=', self.user_01.id), - ('id', 'not in', (history_lines_1 | history_lines_2).ids) - ]) self.assertFalse(history_lines_3) # 4 - self.user_01.write({ - 'role_line_ids': [(2, self.user_01.role_line_ids[0].id, False)], - }) - history_lines_4 = self.history_line_model.search([ - ('user_id', '=', self.user_01.id), - ('id', 'not in', (history_lines_1 | history_lines_2).ids) - ]) + self.user_01.write( + {"role_line_ids": [(2, self.user_01.role_line_ids[0].id, False)]} + ) + history_lines_4 = self.history_line_model.search( + [ + ("user_id", "=", self.user_01.id), + ("id", "not in", (history_lines_1 | history_lines_2).ids), + ] + ) self.assertTrue(history_lines_4) self.assertEqual(len(history_lines_4), 1) - self.assertEqual(history_lines_4.performed_action, 'unlink') + self.assertEqual(history_lines_4.performed_action, "unlink") self.assertEqual(history_lines_4.old_role_id, self.role_01) self.assertFalse(history_lines_4.new_role_id) - self.assertEqual( - history_lines_4.old_date_from, - date.today() - ) + self.assertEqual(history_lines_4.old_date_from, date.today()) self.assertFalse(history_lines_4.new_date_from) - self.assertEqual( - history_lines_4.old_date_to, - date.today() + timedelta(days=5) - ) + self.assertEqual(history_lines_4.old_date_to, date.today() + timedelta(days=5)) self.assertFalse(history_lines_4.new_date_to) def test_create_role_lines_on_new_user(self): @@ -127,21 +116,17 @@ class TestBaseUserRoleHistory(SavepointCase): Expected results : - new role history line created with performed_action == 'add' """ - new_user = self.user_model.create({ - 'login': 'new_user', - 'name': 'new_user', - 'role_line_ids': [ - (0, 0, { - 'role_id': self.role_01.id, - }) - ] - }) - history_lines = self.history_line_model.search([ - ('user_id', '=', new_user.id) - ]) + new_user = self.user_model.create( + { + "login": "new_user", + "name": "new_user", + "role_line_ids": [(0, 0, {"role_id": self.role_01.id})], + } + ) + history_lines = self.history_line_model.search([("user_id", "=", new_user.id)]) self.assertTrue(history_lines) self.assertEqual(len(history_lines), 1) - self.assertEqual(history_lines.performed_action, 'add') + self.assertEqual(history_lines.performed_action, "add") def test_no_create_role_lines_on_new_user(self): """ @@ -151,11 +136,6 @@ class TestBaseUserRoleHistory(SavepointCase): Expected results : - no role history line created """ - new_user = self.user_model.create({ - 'login': 'new_user', - 'name': 'new_user', - }) - history_lines = self.history_line_model.search([ - ('user_id', '=', new_user.id) - ]) + new_user = self.user_model.create({"login": "new_user", "name": "new_user"}) + history_lines = self.history_line_model.search([("user_id", "=", new_user.id)]) self.assertFalse(history_lines) From db37389d3ca5da3d558d4cebe61b21c3bcd4a603 Mon Sep 17 00:00:00 2001 From: Benoit Aimont Date: Wed, 18 Dec 2019 10:28:08 +0100 Subject: [PATCH 04/12] [MIG] base_user_role_history: Migration to 13.0 --- base_user_role_history/__manifest__.py | 5 +- .../i18n/base_user_role_history.pot | 17 ++--- base_user_role_history/i18n/fr.po | 71 +++++++++---------- base_user_role_history/i18n/fr_BE.po | 71 +++++++++---------- .../models/base_user_role_line_history.py | 4 +- base_user_role_history/models/res_users.py | 3 - 6 files changed, 83 insertions(+), 88 deletions(-) diff --git a/base_user_role_history/__manifest__.py b/base_user_role_history/__manifest__.py index f5fe5eba..6b74e8fa 100644 --- a/base_user_role_history/__manifest__.py +++ b/base_user_role_history/__manifest__.py @@ -5,16 +5,15 @@ "name": "Base User Role History", "summary": """ This module allows to track the changes on users roles.""", - "version": "12.0.1.0.0", + "version": "13.0.1.0.0", "license": "AGPL-3", "author": "ACSONE SA/NV, " "Odoo Community Association (OCA)", - "website": "https://github.com/OCA/server-tools", + "website": "https://github.com/OCA/server-backend", "depends": [ # Odoo "mail", # OCA "base_user_role", - "base_suspend_security", ], "data": [ "security/base_user_role_line_history.xml", diff --git a/base_user_role_history/i18n/base_user_role_history.pot b/base_user_role_history/i18n/base_user_role_history.pot index c8299c7f..0f006e86 100644 --- a/base_user_role_history/i18n/base_user_role_history.pot +++ b/base_user_role_history/i18n/base_user_role_history.pot @@ -1,12 +1,14 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * base_user_role_history +# * base_user_role_history # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 12.0\n" +"Project-Id-Version: Odoo Server 13.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: <>\n" +"POT-Creation-Date: 2019-12-18 11:07+0000\n" +"PO-Revision-Date: 2019-12-18 11:07+0000\n" +"Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -35,7 +37,7 @@ msgid "Active before edit" msgstr "" #. module: base_user_role_history -#: selection:base.user.role.line.history,performed_action:0 +#: model:ir.model.fields.selection,name:base_user_role_history.selection__base_user_role_line_history__performed_action__add msgid "Add" msgstr "" @@ -56,7 +58,7 @@ msgid "Date and time of edition" msgstr "" #. module: base_user_role_history -#: selection:base.user.role.line.history,performed_action:0 +#: model:ir.model.fields.selection,name:base_user_role_history.selection__base_user_role_line_history__performed_action__unlink msgid "Delete" msgstr "" @@ -66,7 +68,7 @@ msgid "Display Name" msgstr "" #. module: base_user_role_history -#: selection:base.user.role.line.history,performed_action:0 +#: model:ir.model.fields.selection,name:base_user_role_history.selection__base_user_role_line_history__performed_action__edit msgid "Edit" msgstr "" @@ -149,7 +151,7 @@ msgid "Old start date" msgstr "" #. module: base_user_role_history -#: code:addons/base_user_role_history/models/res_users.py:70 +#: code:addons/base_user_role_history/models/res_users.py:0 #: model_terms:ir.ui.view,arch_db:base_user_role_history.res_users_form_view #, python-format msgid "Roles history" @@ -164,4 +166,3 @@ msgstr "" #: model:ir.model,name:base_user_role_history.model_res_users msgid "Users" msgstr "" - diff --git a/base_user_role_history/i18n/fr.po b/base_user_role_history/i18n/fr.po index 39fbe849..395904e1 100644 --- a/base_user_role_history/i18n/fr.po +++ b/base_user_role_history/i18n/fr.po @@ -1,12 +1,12 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * base_user_role_history +# * base_user_role_history # msgid "" msgstr "" "Project-Id-Version: Odoo Server 9.0c\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-09-30 11:51+0000\n" +"POT-Creation-Date: 2019-12-18 11:07+0000\n" "PO-Revision-Date: 2019-09-30 11:51+0000\n" "Last-Translator: <>\n" "Language-Team: \n" @@ -17,75 +17,75 @@ msgstr "" "Plural-Forms: \n" #. module: base_user_role_history -#: model:ir.ui.view,arch_db:base_user_role_history.res_users_form_view +#: model_terms:ir.ui.view,arch_db:base_user_role_history.res_users_form_view msgid "Last update of roles" msgstr "Dernière modification des rôles" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_performed_action -#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__performed_action +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view msgid "Action" msgstr "Action" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_is_enabled +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__new_is_enabled msgid "Active after edit" msgstr "Actif après édition" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_is_enabled +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__old_is_enabled msgid "Active before edit" msgstr "Actif avant édition" #. module: base_user_role_history -#: selection:base.user.role.line.history,performed_action:0 +#: model:ir.model.fields.selection,name:base_user_role_history.selection__base_user_role_line_history__performed_action__add msgid "Add" msgstr "Ajouter" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_create_uid +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__create_uid msgid "Created by" msgstr "Créé par" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_create_date +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__create_date msgid "Created on" msgstr "Créé le" #. module: base_user_role_history -#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view -#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view msgid "Date and time of edition" msgstr "Date et heure de modification" #. module: base_user_role_history -#: selection:base.user.role.line.history,performed_action:0 +#: model:ir.model.fields.selection,name:base_user_role_history.selection__base_user_role_line_history__performed_action__unlink msgid "Delete" msgstr "Supprimer" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_display_name +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__display_name msgid "Display Name" msgstr "Nom affiché" #. module: base_user_role_history -#: selection:base.user.role.line.history,performed_action:0 +#: model:ir.model.fields.selection,name:base_user_role_history.selection__base_user_role_line_history__performed_action__edit msgid "Edit" msgstr "Modifier" #. module: base_user_role_history -#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view msgid "Edited user" msgstr "Utilisateur modifié" #. module: base_user_role_history -#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view -#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view msgid "Editor" msgstr "Utilisateur modificateur" #. module: base_user_role_history -#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view msgid "Group By" msgstr "Regrouper par" @@ -95,71 +95,71 @@ msgid "History of user roles" msgstr "Historique des rôles de l'utilisateur" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_id +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__id msgid "ID" msgstr "ID" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history___last_update +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history____last_update msgid "Last Modified on" msgstr "Dernière modification le" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_write_uid +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__write_uid msgid "Last Updated by" msgstr "Mis à jour par" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_write_date +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__write_date msgid "Last Updated on" msgstr "Mis à jour le" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_res_users_last_role_line_modification +#: model:ir.model.fields,field_description:base_user_role_history.field_res_users__last_role_line_modification msgid "Last roles modification" msgstr "Dernière modification des rôles" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_date_to +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__new_date_to msgid "New end date" msgstr "Nouvelle date de fin" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_role_id -#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__new_role_id +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view msgid "New role" msgstr "Nouveau rôle" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_date_from +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__new_date_from msgid "New start date" msgstr "Nouvelle date de début" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_date_to +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__old_date_to msgid "Old end date" msgstr "Ancienne date de fin" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_role_id -#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__old_role_id +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view msgid "Old role" msgstr "Ancien rôle" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_date_from +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__old_date_from msgid "Old start date" msgstr "Ancienne date de début" #. module: base_user_role_history -#: code:addons/base_user_role_history/models/res_users.py:70 -#: model:ir.ui.view,arch_db:base_user_role_history.res_users_form_view +#: code:addons/base_user_role_history/models/res_users.py:0 +#: model_terms:ir.ui.view,arch_db:base_user_role_history.res_users_form_view #, python-format msgid "Roles history" msgstr "Historique des rôles" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_user_id +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__user_id msgid "User" msgstr "Utilisateur" @@ -167,4 +167,3 @@ msgstr "Utilisateur" #: model:ir.model,name:base_user_role_history.model_res_users msgid "Users" msgstr "Utilisateurs" - diff --git a/base_user_role_history/i18n/fr_BE.po b/base_user_role_history/i18n/fr_BE.po index 457621b4..e108d9c7 100644 --- a/base_user_role_history/i18n/fr_BE.po +++ b/base_user_role_history/i18n/fr_BE.po @@ -1,12 +1,12 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * base_user_role_history +# * base_user_role_history # msgid "" msgstr "" "Project-Id-Version: Odoo Server 9.0c\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-09-30 11:50+0000\n" +"POT-Creation-Date: 2019-12-18 11:07+0000\n" "PO-Revision-Date: 2019-09-30 11:50+0000\n" "Last-Translator: <>\n" "Language-Team: \n" @@ -17,75 +17,75 @@ msgstr "" "Plural-Forms: \n" #. module: base_user_role_history -#: model:ir.ui.view,arch_db:base_user_role_history.res_users_form_view +#: model_terms:ir.ui.view,arch_db:base_user_role_history.res_users_form_view msgid "Last update of roles" msgstr "Dernière modification des rôles" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_performed_action -#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__performed_action +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view msgid "Action" msgstr "Action" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_is_enabled +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__new_is_enabled msgid "Active after edit" msgstr "Actif après édition" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_is_enabled +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__old_is_enabled msgid "Active before edit" msgstr "Actif avant édition" #. module: base_user_role_history -#: selection:base.user.role.line.history,performed_action:0 +#: model:ir.model.fields.selection,name:base_user_role_history.selection__base_user_role_line_history__performed_action__add msgid "Add" msgstr "Ajouter" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_create_uid +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__create_uid msgid "Created by" msgstr "Créé par" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_create_date +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__create_date msgid "Created on" msgstr "Créé le" #. module: base_user_role_history -#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view -#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view msgid "Date and time of edition" msgstr "Date et heure de modification" #. module: base_user_role_history -#: selection:base.user.role.line.history,performed_action:0 +#: model:ir.model.fields.selection,name:base_user_role_history.selection__base_user_role_line_history__performed_action__unlink msgid "Delete" msgstr "Supprimer" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_display_name +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__display_name msgid "Display Name" msgstr "Nom affiché" #. module: base_user_role_history -#: selection:base.user.role.line.history,performed_action:0 +#: model:ir.model.fields.selection,name:base_user_role_history.selection__base_user_role_line_history__performed_action__edit msgid "Edit" msgstr "Modifier" #. module: base_user_role_history -#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view msgid "Edited user" msgstr "Utilisateur modifié" #. module: base_user_role_history -#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view -#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view msgid "Editor" msgstr "Utilisateur modificateur" #. module: base_user_role_history -#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view msgid "Group By" msgstr "Regrouper par" @@ -95,71 +95,71 @@ msgid "History of user roles" msgstr "Historique des rôles de l'utilisateur" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_id +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__id msgid "ID" msgstr "ID" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history___last_update +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history____last_update msgid "Last Modified on" msgstr "Dernière modification le" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_write_uid +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__write_uid msgid "Last Updated by" msgstr "Derniere fois mis à jour par" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_write_date +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__write_date msgid "Last Updated on" msgstr "Dernière mis à jour le" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_res_users_last_role_line_modification +#: model:ir.model.fields,field_description:base_user_role_history.field_res_users__last_role_line_modification msgid "Last roles modification" msgstr "Dernière modification des rôles" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_date_to +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__new_date_to msgid "New end date" msgstr "Nouvelle date de fin" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_role_id -#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__new_role_id +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view msgid "New role" msgstr "Nouveau rôle" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_date_from +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__new_date_from msgid "New start date" msgstr "Nouvelle date de début" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_date_to +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__old_date_to msgid "Old end date" msgstr "Ancienne date de fin" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_role_id -#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__old_role_id +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view msgid "Old role" msgstr "Ancien rôle" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_date_from +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__old_date_from msgid "Old start date" msgstr "Ancienne date de début" #. module: base_user_role_history -#: code:addons/base_user_role_history/models/res_users.py:70 -#: model:ir.ui.view,arch_db:base_user_role_history.res_users_form_view +#: code:addons/base_user_role_history/models/res_users.py:0 +#: model_terms:ir.ui.view,arch_db:base_user_role_history.res_users_form_view #, python-format msgid "Roles history" msgstr "Historique des rôles" #. module: base_user_role_history -#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_user_id +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__user_id msgid "User" msgstr "Utilisateur" @@ -167,4 +167,3 @@ msgstr "Utilisateur" #: model:ir.model,name:base_user_role_history.model_res_users msgid "Users" msgstr "Utilisateurs" - diff --git a/base_user_role_history/models/base_user_role_line_history.py b/base_user_role_history/models/base_user_role_line_history.py index 86da3836..4e2e85d1 100644 --- a/base_user_role_history/models/base_user_role_line_history.py +++ b/base_user_role_history/models/base_user_role_line_history.py @@ -112,7 +112,7 @@ class BaseUserRoleLineHistory(models.Model): role_history_line_vals_by_role_line = self._prepare_create_from_vals( old_role_line_values_by_user, new_role_line_values_by_user ) - # Create the history lines with suspend security + # Create the history lines with sudo # (nobody has the create right) for role_history_vals in role_history_line_vals_by_role_line.values(): - self.suspend_security().create(role_history_vals) + self.sudo().create(role_history_vals) diff --git a/base_user_role_history/models/res_users.py b/base_user_role_history/models/res_users.py index 248f8bf7..6ff60b4c 100644 --- a/base_user_role_history/models/res_users.py +++ b/base_user_role_history/models/res_users.py @@ -21,7 +21,6 @@ class ResUsers(models.Model): "is_enabled": role_line.is_enabled, } - @api.multi def _get_role_line_values_by_user(self): role_line_values_by_user = {} for rec in self: @@ -45,7 +44,6 @@ class ResUsers(models.Model): res.last_role_line_modification = fields.Datetime.now() return res - @api.multi def write(self, vals): if "role_line_ids" not in vals: return super().write(vals) @@ -58,7 +56,6 @@ class ResUsers(models.Model): self.write({"last_role_line_modification": fields.Datetime.now()}) return res - @api.multi def show_role_lines_history(self): # pragma: no cover self.ensure_one() domain = [("user_id", "=", self.id)] From 573be62a814ea759eecfd5145513377e8403ad43 Mon Sep 17 00:00:00 2001 From: Benoit Aimont Date: Fri, 12 Jun 2020 09:36:34 +0200 Subject: [PATCH 05/12] [FIX] base_user_role_history - prettier xml plugin --- base_user_role_history/README.rst | 10 +- .../i18n/base_user_role_history.pot | 2 - .../security/base_user_role_line_history.xml | 17 ++- .../static/description/index.html | 6 +- .../views/base_user_role_line_history.xml | 111 +++++++++--------- base_user_role_history/views/res_users.xml | 25 ++-- 6 files changed, 85 insertions(+), 86 deletions(-) diff --git a/base_user_role_history/README.rst b/base_user_role_history/README.rst index 08f2e118..8d59667a 100644 --- a/base_user_role_history/README.rst +++ b/base_user_role_history/README.rst @@ -14,13 +14,13 @@ Base User Role History :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/12.0/base_user_role_history + :target: https://github.com/OCA/server-backend/tree/13.0/base_user_role_history :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-12-0/server-backend-12-0-base_user_role_history + :target: https://translation.odoo-community.org/projects/server-backend-13-0/server-backend-13-0-base_user_role_history :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/253/12.0 + :target: https://runbot.odoo-community.org/runbot/253/13.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -53,7 +53,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -92,6 +92,6 @@ Current `maintainer `__: |maintainer-ThomasBinsfeld| -This module is part of the `OCA/server-backend `_ project on GitHub. +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_user_role_history/i18n/base_user_role_history.pot b/base_user_role_history/i18n/base_user_role_history.pot index 0f006e86..a155070b 100644 --- a/base_user_role_history/i18n/base_user_role_history.pot +++ b/base_user_role_history/i18n/base_user_role_history.pot @@ -6,8 +6,6 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 13.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-18 11:07+0000\n" -"PO-Revision-Date: 2019-12-18 11:07+0000\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" diff --git a/base_user_role_history/security/base_user_role_line_history.xml b/base_user_role_history/security/base_user_role_line_history.xml index c99c1365..5f339e2d 100644 --- a/base_user_role_history/security/base_user_role_line_history.xml +++ b/base_user_role_history/security/base_user_role_line_history.xml @@ -1,17 +1,14 @@ - + - - base.user.role.line.history access user - - - - - - + + + + + + - diff --git a/base_user_role_history/static/description/index.html b/base_user_role_history/static/description/index.html index e41f5790..5a41e7b1 100644 --- a/base_user_role_history/static/description/index.html +++ b/base_user_role_history/static/description/index.html @@ -367,7 +367,7 @@ ul.auto-toc { !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

+

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

This addon provides history for roles modifications on users. Each time a role is added/updated/unlinked on a user, a new role history line is created mentioning what changes were made and who made them. @@ -401,7 +401,7 @@ a role deletion, module could be upgraded.

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -feedback.

+feedback.

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

@@ -428,7 +428,7 @@ mission is to support the collaborative development of Odoo features and promote its widespread use.

Current maintainer:

ThomasBinsfeld

-

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

+

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_user_role_history/views/base_user_role_line_history.xml b/base_user_role_history/views/base_user_role_line_history.xml index a1cabe9f..8031ba34 100644 --- a/base_user_role_history/views/base_user_role_line_history.xml +++ b/base_user_role_history/views/base_user_role_line_history.xml @@ -1,13 +1,12 @@ - + - - - - base.user.role.line.history.form (in base_user_role_history) + base.user.role.line.history.form (in base_user_role_history) base.user.role.line.history
@@ -15,75 +14,79 @@ - - - - - - - - - - - - + + + + + + + + + + + +
- - - base.user.role.line.history.tree (in base_user_role_history) + base.user.role.line.history.tree (in base_user_role_history) base.user.role.line.history - - - - - - - - - - - - + + + + + + + + + + + + - - - base.user.role.line.history.search (in base_user_role_history) + base.user.role.line.history.search (in base_user_role_history) base.user.role.line.history - - + + - - - + + + -
diff --git a/base_user_role_history/views/res_users.xml b/base_user_role_history/views/res_users.xml index 8eea0cf0..0f659e06 100644 --- a/base_user_role_history/views/res_users.xml +++ b/base_user_role_history/views/res_users.xml @@ -1,29 +1,30 @@ - + - - - res.users.form (in base_user_role_history) res.users - +
-
-
From 659a91bae758108330ceb1a5e95fd67aecceda1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ana=20Su=C3=A1rez?= Date: Tue, 16 Mar 2021 16:17:16 +0000 Subject: [PATCH 06/12] Added translation using Weblate (Spanish) --- base_user_role_history/i18n/es.po | 169 ++++++++++++++++++++++++++++++ 1 file changed, 169 insertions(+) create mode 100644 base_user_role_history/i18n/es.po diff --git a/base_user_role_history/i18n/es.po b/base_user_role_history/i18n/es.po new file mode 100644 index 00000000..9942b679 --- /dev/null +++ b/base_user_role_history/i18n/es.po @@ -0,0 +1,169 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_user_role_history +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2021-03-16 18:45+0000\n" +"Last-Translator: Ana Suárez \n" +"Language-Team: none\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.3.2\n" + +#. module: base_user_role_history +#: model_terms:ir.ui.view,arch_db:base_user_role_history.res_users_form_view +msgid "Last update of roles" +msgstr "Última actualización de roles" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__performed_action +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view +msgid "Action" +msgstr "Acción" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__new_is_enabled +msgid "Active after edit" +msgstr "Activo después de editar" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__old_is_enabled +msgid "Active before edit" +msgstr "Activo antes de editar" + +#. module: base_user_role_history +#: model:ir.model.fields.selection,name:base_user_role_history.selection__base_user_role_line_history__performed_action__add +msgid "Add" +msgstr "Añadir" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__create_date +msgid "Created on" +msgstr "Creado el" + +#. module: base_user_role_history +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view +msgid "Date and time of edition" +msgstr "Fecha y hora de edición" + +#. module: base_user_role_history +#: model:ir.model.fields.selection,name:base_user_role_history.selection__base_user_role_line_history__performed_action__unlink +msgid "Delete" +msgstr "Eliminar" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__display_name +msgid "Display Name" +msgstr "Nombre mostrado" + +#. module: base_user_role_history +#: model:ir.model.fields.selection,name:base_user_role_history.selection__base_user_role_line_history__performed_action__edit +msgid "Edit" +msgstr "Editar" + +#. module: base_user_role_history +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view +msgid "Edited user" +msgstr "Usuario editado" + +#. module: base_user_role_history +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view +msgid "Editor" +msgstr "Editor" + +#. module: base_user_role_history +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view +msgid "Group By" +msgstr "Agrupar por" + +#. module: base_user_role_history +#: model:ir.model,name:base_user_role_history.model_base_user_role_line_history +msgid "History of user roles" +msgstr "Historial de roles" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__id +msgid "ID" +msgstr "ID" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history____last_update +msgid "Last Modified on" +msgstr "Última modificación el" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__write_uid +msgid "Last Updated by" +msgstr "Última actualización por" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__write_date +msgid "Last Updated on" +msgstr "Última actualización el" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_res_users__last_role_line_modification +msgid "Last roles modification" +msgstr "Última modificación roles" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__new_date_to +msgid "New end date" +msgstr "Nueva fecha fin" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__new_role_id +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view +msgid "New role" +msgstr "Nuevo rol" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__new_date_from +msgid "New start date" +msgstr "Nueva fecha inicio" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__old_date_to +msgid "Old end date" +msgstr "Antigua fecha fin" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__old_role_id +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view +msgid "Old role" +msgstr "Antiguo rol" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__old_date_from +msgid "Old start date" +msgstr "Antigua fecha inicio" + +#. module: base_user_role_history +#: code:addons/base_user_role_history/models/res_users.py:0 +#: model_terms:ir.ui.view,arch_db:base_user_role_history.res_users_form_view +#, python-format +msgid "Roles history" +msgstr "Historial Roles" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__user_id +msgid "User" +msgstr "Usuario" + +#. module: base_user_role_history +#: model:ir.model,name:base_user_role_history.model_res_users +msgid "Users" +msgstr "Usuarios" From bacb64c9ae52de75df1bec64390560494fed9976 Mon Sep 17 00:00:00 2001 From: Arnaud Pineux Date: Tue, 16 Aug 2022 16:27:55 +0200 Subject: [PATCH 07/12] [MIG] base_user_role_history: Migration to 16.0 --- base_user_role_history/README.rst | 10 +++++----- base_user_role_history/__manifest__.py | 2 +- .../i18n/base_user_role_history.pot | 9 +++------ base_user_role_history/i18n/es.po | 2 +- .../models/base_user_role_line_history.py | 3 +-- base_user_role_history/models/res_users.py | 17 +++++++++++------ .../static/description/index.html | 6 +++--- .../tests/test_base_user_role_history.py | 6 +++--- 8 files changed, 28 insertions(+), 27 deletions(-) diff --git a/base_user_role_history/README.rst b/base_user_role_history/README.rst index 8d59667a..196bf29d 100644 --- a/base_user_role_history/README.rst +++ b/base_user_role_history/README.rst @@ -14,13 +14,13 @@ Base User Role History :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/13.0/base_user_role_history + :target: https://github.com/OCA/server-backend/tree/16.0/base_user_role_history :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-13-0/server-backend-13-0-base_user_role_history + :target: https://translation.odoo-community.org/projects/server-backend-16-0/server-backend-16-0-base_user_role_history :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/253/13.0 + :target: https://runbot.odoo-community.org/runbot/253/16.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -53,7 +53,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -92,6 +92,6 @@ Current `maintainer `__: |maintainer-ThomasBinsfeld| -This module is part of the `OCA/server-backend `_ project on GitHub. +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_user_role_history/__manifest__.py b/base_user_role_history/__manifest__.py index 6b74e8fa..218388d7 100644 --- a/base_user_role_history/__manifest__.py +++ b/base_user_role_history/__manifest__.py @@ -5,7 +5,7 @@ "name": "Base User Role History", "summary": """ This module allows to track the changes on users roles.""", - "version": "13.0.1.0.0", + "version": "16.0.1.0.0", "license": "AGPL-3", "author": "ACSONE SA/NV, " "Odoo Community Association (OCA)", "website": "https://github.com/OCA/server-backend", diff --git a/base_user_role_history/i18n/base_user_role_history.pot b/base_user_role_history/i18n/base_user_role_history.pot index a155070b..a8bd6d6f 100644 --- a/base_user_role_history/i18n/base_user_role_history.pot +++ b/base_user_role_history/i18n/base_user_role_history.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 13.0\n" +"Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -149,6 +149,7 @@ msgid "Old start date" msgstr "" #. module: base_user_role_history +#. odoo-python #: code:addons/base_user_role_history/models/res_users.py:0 #: model_terms:ir.ui.view,arch_db:base_user_role_history.res_users_form_view #, python-format @@ -156,11 +157,7 @@ msgid "Roles history" msgstr "" #. module: base_user_role_history +#: model:ir.model,name:base_user_role_history.model_res_users #: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__user_id msgid "User" msgstr "" - -#. module: base_user_role_history -#: model:ir.model,name:base_user_role_history.model_res_users -msgid "Users" -msgstr "" diff --git a/base_user_role_history/i18n/es.po b/base_user_role_history/i18n/es.po index 9942b679..a5e159dc 100644 --- a/base_user_role_history/i18n/es.po +++ b/base_user_role_history/i18n/es.po @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 13.0\n" +"Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" "PO-Revision-Date: 2021-03-16 18:45+0000\n" "Last-Translator: Ana Suárez \n" diff --git a/base_user_role_history/models/base_user_role_line_history.py b/base_user_role_history/models/base_user_role_line_history.py index 4e2e85d1..328fe5bf 100644 --- a/base_user_role_history/models/base_user_role_line_history.py +++ b/base_user_role_history/models/base_user_role_line_history.py @@ -114,5 +114,4 @@ class BaseUserRoleLineHistory(models.Model): ) # Create the history lines with sudo # (nobody has the create right) - for role_history_vals in role_history_line_vals_by_role_line.values(): - self.sudo().create(role_history_vals) + self.sudo().create(list(role_history_line_vals_by_role_line.values())) diff --git a/base_user_role_history/models/res_users.py b/base_user_role_history/models/res_users.py index 6ff60b4c..2a408287 100644 --- a/base_user_role_history/models/res_users.py +++ b/base_user_role_history/models/res_users.py @@ -34,26 +34,31 @@ class ResUsers(models.Model): @api.model_create_multi def create(self, vals_list): res = super().create(vals_list) - for vals in vals_list: - if "role_line_ids" not in vals: - return res + if all("role_line_ids" not in vals for vals in vals_list): + return res new_role_line_values_by_user = res._get_role_line_values_by_user() + new_role_line_to_create = {} + users = self.browse() + for user, lines in new_role_line_values_by_user.items(): + if lines: + new_role_line_to_create[user] = lines + user |= user self.env["base.user.role.line.history"].create_from_vals( - {}, new_role_line_values_by_user + {}, new_role_line_to_create ) - res.last_role_line_modification = fields.Datetime.now() + users.last_role_line_modification = fields.Datetime.now() return res def write(self, vals): if "role_line_ids" not in vals: return super().write(vals) old_role_line_values_by_user = self._get_role_line_values_by_user() + vals["last_role_line_modification"] = fields.Datetime.now() res = super().write(vals) new_role_line_values_by_user = self._get_role_line_values_by_user() self.env["base.user.role.line.history"].create_from_vals( old_role_line_values_by_user, new_role_line_values_by_user ) - self.write({"last_role_line_modification": fields.Datetime.now()}) return res def show_role_lines_history(self): # pragma: no cover diff --git a/base_user_role_history/static/description/index.html b/base_user_role_history/static/description/index.html index 5a41e7b1..20d074fe 100644 --- a/base_user_role_history/static/description/index.html +++ b/base_user_role_history/static/description/index.html @@ -367,7 +367,7 @@ ul.auto-toc { !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

+

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

This addon provides history for roles modifications on users. Each time a role is added/updated/unlinked on a user, a new role history line is created mentioning what changes were made and who made them. @@ -401,7 +401,7 @@ a role deletion, module could be upgraded.

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -feedback.

+feedback.

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

@@ -428,7 +428,7 @@ mission is to support the collaborative development of Odoo features and promote its widespread use.

Current maintainer:

ThomasBinsfeld

-

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

+

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_user_role_history/tests/test_base_user_role_history.py b/base_user_role_history/tests/test_base_user_role_history.py index c712f6b6..fa81febf 100644 --- a/base_user_role_history/tests/test_base_user_role_history.py +++ b/base_user_role_history/tests/test_base_user_role_history.py @@ -3,14 +3,14 @@ from datetime import date, timedelta -from odoo.tests.common import SavepointCase +from odoo.tests.common import TransactionCase -class TestBaseUserRoleHistory(SavepointCase): +class TestBaseUserRoleHistory(TransactionCase): @classmethod def setUpClass(cls): super(TestBaseUserRoleHistory, cls).setUpClass() - + cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True)) # MODELS cls.history_line_model = cls.env["base.user.role.line.history"] From f491843a7114afe4548a6d72ff413e938d67e9da Mon Sep 17 00:00:00 2001 From: Weblate Date: Thu, 26 Jan 2023 12:08:41 +0000 Subject: [PATCH 08/12] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: server-backend-16.0/server-backend-16.0-base_user_role_history Translate-URL: https://translation.odoo-community.org/projects/server-backend-16-0/server-backend-16-0-base_user_role_history/ --- base_user_role_history/i18n/es.po | 8 ++++---- base_user_role_history/i18n/fr.po | 8 ++++---- base_user_role_history/i18n/fr_BE.po | 8 ++++---- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/base_user_role_history/i18n/es.po b/base_user_role_history/i18n/es.po index a5e159dc..cbf31d48 100644 --- a/base_user_role_history/i18n/es.po +++ b/base_user_role_history/i18n/es.po @@ -152,6 +152,7 @@ msgid "Old start date" msgstr "Antigua fecha inicio" #. module: base_user_role_history +#. odoo-python #: code:addons/base_user_role_history/models/res_users.py:0 #: model_terms:ir.ui.view,arch_db:base_user_role_history.res_users_form_view #, python-format @@ -159,11 +160,10 @@ msgid "Roles history" msgstr "Historial Roles" #. module: base_user_role_history +#: model:ir.model,name:base_user_role_history.model_res_users #: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__user_id msgid "User" msgstr "Usuario" -#. module: base_user_role_history -#: model:ir.model,name:base_user_role_history.model_res_users -msgid "Users" -msgstr "Usuarios" +#~ msgid "Users" +#~ msgstr "Usuarios" diff --git a/base_user_role_history/i18n/fr.po b/base_user_role_history/i18n/fr.po index 395904e1..0a6801e3 100644 --- a/base_user_role_history/i18n/fr.po +++ b/base_user_role_history/i18n/fr.po @@ -152,6 +152,7 @@ msgid "Old start date" msgstr "Ancienne date de début" #. module: base_user_role_history +#. odoo-python #: code:addons/base_user_role_history/models/res_users.py:0 #: model_terms:ir.ui.view,arch_db:base_user_role_history.res_users_form_view #, python-format @@ -159,11 +160,10 @@ msgid "Roles history" msgstr "Historique des rôles" #. module: base_user_role_history +#: model:ir.model,name:base_user_role_history.model_res_users #: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__user_id msgid "User" msgstr "Utilisateur" -#. module: base_user_role_history -#: model:ir.model,name:base_user_role_history.model_res_users -msgid "Users" -msgstr "Utilisateurs" +#~ msgid "Users" +#~ msgstr "Utilisateurs" diff --git a/base_user_role_history/i18n/fr_BE.po b/base_user_role_history/i18n/fr_BE.po index e108d9c7..ca077507 100644 --- a/base_user_role_history/i18n/fr_BE.po +++ b/base_user_role_history/i18n/fr_BE.po @@ -152,6 +152,7 @@ msgid "Old start date" msgstr "Ancienne date de début" #. module: base_user_role_history +#. odoo-python #: code:addons/base_user_role_history/models/res_users.py:0 #: model_terms:ir.ui.view,arch_db:base_user_role_history.res_users_form_view #, python-format @@ -159,11 +160,10 @@ msgid "Roles history" msgstr "Historique des rôles" #. module: base_user_role_history +#: model:ir.model,name:base_user_role_history.model_res_users #: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__user_id msgid "User" msgstr "Utilisateur" -#. module: base_user_role_history -#: model:ir.model,name:base_user_role_history.model_res_users -msgid "Users" -msgstr "Utilisateurs" +#~ msgid "Users" +#~ msgstr "Utilisateurs" From d26ae954c5b48a6540b93c382f450093028f6012 Mon Sep 17 00:00:00 2001 From: Pedro Castro Silva Date: Thu, 31 Aug 2023 10:30:19 +0000 Subject: [PATCH 09/12] Added translation using Weblate (Portuguese) --- base_user_role_history/README.rst | 15 +- base_user_role_history/i18n/pt.po | 166 ++++++++++++++++++ .../static/description/index.html | 44 ++--- 3 files changed, 198 insertions(+), 27 deletions(-) create mode 100644 base_user_role_history/i18n/pt.po diff --git a/base_user_role_history/README.rst b/base_user_role_history/README.rst index 196bf29d..332635ba 100644 --- a/base_user_role_history/README.rst +++ b/base_user_role_history/README.rst @@ -2,10 +2,13 @@ Base User Role History ====================== -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:db5f768a177dfcc1ad17e65d53bedeeac1d7d840e0d009dba5338d27478a0382 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status @@ -19,11 +22,11 @@ Base User Role History .. |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_user_role_history :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/253/16.0 - :alt: Try me on Runbot +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/server-backend&target_branch=16.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| This addon provides history for roles modifications on users. Each time a role is added/updated/unlinked on a user, a new role history line @@ -52,7 +55,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us smashing it by providing a detailed and welcomed +If you spotted it first, help us to smash it by providing a detailed and welcomed `feedback `_. Do not contact contributors directly about support or help with technical issues. diff --git a/base_user_role_history/i18n/pt.po b/base_user_role_history/i18n/pt.po new file mode 100644 index 00000000..5329c12e --- /dev/null +++ b/base_user_role_history/i18n/pt.po @@ -0,0 +1,166 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base_user_role_history +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-08-31 10:35+0000\n" +"Last-Translator: Pedro Castro Silva \n" +"Language-Team: none\n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.17\n" + +#. module: base_user_role_history +#: model_terms:ir.ui.view,arch_db:base_user_role_history.res_users_form_view +msgid "Last update of roles" +msgstr "Última atualização de funções" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__performed_action +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view +msgid "Action" +msgstr "Ação" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__new_is_enabled +msgid "Active after edit" +msgstr "Ativo após edição" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__old_is_enabled +msgid "Active before edit" +msgstr "Ativo antes da edição" + +#. module: base_user_role_history +#: model:ir.model.fields.selection,name:base_user_role_history.selection__base_user_role_line_history__performed_action__add +msgid "Add" +msgstr "Adicionar" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__create_uid +msgid "Created by" +msgstr "Criado por" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__create_date +msgid "Created on" +msgstr "Criado em" + +#. module: base_user_role_history +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view +msgid "Date and time of edition" +msgstr "Data e hora da edição" + +#. module: base_user_role_history +#: model:ir.model.fields.selection,name:base_user_role_history.selection__base_user_role_line_history__performed_action__unlink +msgid "Delete" +msgstr "Excluir" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__display_name +msgid "Display Name" +msgstr "Nome" + +#. module: base_user_role_history +#: model:ir.model.fields.selection,name:base_user_role_history.selection__base_user_role_line_history__performed_action__edit +msgid "Edit" +msgstr "Editar" + +#. module: base_user_role_history +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view +msgid "Edited user" +msgstr "Utilizador editado" + +#. module: base_user_role_history +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view +msgid "Editor" +msgstr "Editor" + +#. module: base_user_role_history +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view +msgid "Group By" +msgstr "Agrupar Por" + +#. module: base_user_role_history +#: model:ir.model,name:base_user_role_history.model_base_user_role_line_history +msgid "History of user roles" +msgstr "Histórico de funções de utilizador" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__id +msgid "ID" +msgstr "ID" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history____last_update +msgid "Last Modified on" +msgstr "Última Modificação em" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__write_uid +msgid "Last Updated by" +msgstr "Ultima Atualização por" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__write_date +msgid "Last Updated on" +msgstr "Última Atualização em" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_res_users__last_role_line_modification +msgid "Last roles modification" +msgstr "Última modificação de funções" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__new_date_to +msgid "New end date" +msgstr "Nova data de término" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__new_role_id +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view +msgid "New role" +msgstr "Nova função" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__new_date_from +msgid "New start date" +msgstr "Nova data de início" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__old_date_to +msgid "Old end date" +msgstr "Antiga data de término" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__old_role_id +#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view +msgid "Old role" +msgstr "Antiga função" + +#. module: base_user_role_history +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__old_date_from +msgid "Old start date" +msgstr "Antiga data de início" + +#. module: base_user_role_history +#. odoo-python +#: code:addons/base_user_role_history/models/res_users.py:0 +#: model_terms:ir.ui.view,arch_db:base_user_role_history.res_users_form_view +#, python-format +msgid "Roles history" +msgstr "Histórico de funções" + +#. module: base_user_role_history +#: model:ir.model,name:base_user_role_history.model_res_users +#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__user_id +msgid "User" +msgstr "Utilizador" diff --git a/base_user_role_history/static/description/index.html b/base_user_role_history/static/description/index.html index 20d074fe..ce6b480b 100644 --- a/base_user_role_history/static/description/index.html +++ b/base_user_role_history/static/description/index.html @@ -1,20 +1,20 @@ - + - + Base User Role History