From 5d1182339dc8f78cf6397914f1ff5db6ede2e551 Mon Sep 17 00:00:00 2001 From: Benoit Aimont Date: Mon, 30 Sep 2019 12:02:31 +0200 Subject: [PATCH 1/8] [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 86e3aa3fa6ca079c926ae69fb6e53fbf310488d1 Mon Sep 17 00:00:00 2001 From: Benoit Aimont Date: Tue, 1 Oct 2019 14:41:31 +0200 Subject: [PATCH 2/8] [12.0][MIG] base_user_role_history - migration from 9.0 to 12.0 --- .../{__openerp__.py => __manifest__.py} | 3 +-- .../models/base_user_role_line_history.py | 3 +-- base_user_role_history/models/res_users.py | 22 +++++++-------- .../tests/test_base_user_role_history.py | 27 ++++++++++--------- 4 files changed, 27 insertions(+), 28 deletions(-) rename base_user_role_history/{__openerp__.py => __manifest__.py} (93%) 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/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/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 e5f19414daac27104ee89fb47b8cd446b0632ec5 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Tue, 17 Dec 2019 21:14:06 +0000 Subject: [PATCH 3/8] [UPD] Update base_user_role_history.pot --- .../i18n/base_user_role_history.pot | 62 +++++++++---------- 1 file changed, 30 insertions(+), 32 deletions(-) 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 "" From 178e3428cb4a4ba5ce9ecc1676182fd3aa8508b0 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Tue, 17 Dec 2019 21:19:35 +0000 Subject: [PATCH 4/8] [UPD] README.rst --- base_user_role_history/README.rst | 16 ++++++++-------- .../static/description/index.html | 8 ++++---- 2 files changed, 12 insertions(+), 12 deletions(-) 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/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.

From 511523527a1e0442effb7d46bc9cd69695cc6bcc Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Tue, 17 Dec 2019 21:19:36 +0000 Subject: [PATCH 5/8] [ADD] icon.png --- .../static/description/icon.png | Bin 0 -> 9455 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 base_user_role_history/static/description/icon.png 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 From dc39a014fa8a4150a8ec9d78261d3ea6ce3331c2 Mon Sep 17 00:00:00 2001 From: Benoit Aimont Date: Wed, 18 Dec 2019 10:05:58 +0100 Subject: [PATCH 6/8] [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 21f457618fc1d61de84e52b337a5e1922d67e521 Mon Sep 17 00:00:00 2001 From: Benoit Aimont Date: Wed, 18 Dec 2019 10:28:08 +0100 Subject: [PATCH 7/8] [MIG] base_user_role_history: Migration to 13.0 --- .isort.cfg | 1 + 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 - setup/base_user_role_history/.eggs/README.txt | 6 ++ .../odoo/addons/base_user_role_history | 1 + setup/base_user_role_history/setup.py | 6 ++ 10 files changed, 97 insertions(+), 88 deletions(-) create mode 100644 setup/base_user_role_history/.eggs/README.txt create mode 120000 setup/base_user_role_history/odoo/addons/base_user_role_history create mode 100644 setup/base_user_role_history/setup.py diff --git a/.isort.cfg b/.isort.cfg index 7683badf..26efd290 100644 --- a/.isort.cfg +++ b/.isort.cfg @@ -10,3 +10,4 @@ known_odoo=odoo known_odoo_addons=odoo.addons sections=FUTURE,STDLIB,THIRDPARTY,ODOO,ODOO_ADDONS,FIRSTPARTY,LOCALFOLDER default_section=THIRDPARTY +known_third_party=setuptools 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)] diff --git a/setup/base_user_role_history/.eggs/README.txt b/setup/base_user_role_history/.eggs/README.txt new file mode 100644 index 00000000..5d016688 --- /dev/null +++ b/setup/base_user_role_history/.eggs/README.txt @@ -0,0 +1,6 @@ +This directory contains eggs that were downloaded by setuptools to build, test, and run plug-ins. + +This directory caches those eggs to prevent repeated downloads. + +However, it is safe to delete this directory. + diff --git a/setup/base_user_role_history/odoo/addons/base_user_role_history b/setup/base_user_role_history/odoo/addons/base_user_role_history new file mode 120000 index 00000000..858c5021 --- /dev/null +++ b/setup/base_user_role_history/odoo/addons/base_user_role_history @@ -0,0 +1 @@ +../../../../base_user_role_history \ No newline at end of file diff --git a/setup/base_user_role_history/setup.py b/setup/base_user_role_history/setup.py new file mode 100644 index 00000000..28c57bb6 --- /dev/null +++ b/setup/base_user_role_history/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) From a6f7a37bad9a8ee61e244cb605518c6af9b8d0a2 Mon Sep 17 00:00:00 2001 From: Benoit Aimont Date: Fri, 12 Jun 2020 09:36:34 +0200 Subject: [PATCH 8/8] [FIX] base_user_role_history - prettier xml plugin --- .../security/base_user_role_line_history.xml | 17 ++- .../views/base_user_role_line_history.xml | 111 +++++++++--------- base_user_role_history/views/res_users.xml | 25 ++-- 3 files changed, 77 insertions(+), 76 deletions(-) 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/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 - +
-
-