From d85b7da4cc27724369a234f8e687f62942a51e44 Mon Sep 17 00:00:00 2001
From: Benoit Aimont
Date: Mon, 30 Sep 2019 12:02:31 +0200
Subject: [PATCH 01/12] [9.0][ADD] - base_user_role_history
---
base_user_role_history/README.rst | 97 ++++
base_user_role_history/__init__.py | 1 +
base_user_role_history/__openerp__.py | 30 ++
.../i18n/base_user_role_history.pot | 169 +++++++
base_user_role_history/i18n/fr.po | 170 +++++++
base_user_role_history/i18n/fr_BE.po | 170 +++++++
base_user_role_history/models/__init__.py | 2 +
.../models/base_user_role_line_history.py | 145 ++++++
base_user_role_history/models/res_users.py | 75 +++
.../readme/CONTRIBUTORS.rst | 2 +
base_user_role_history/readme/DESCRIPTION.rst | 4 +
base_user_role_history/readme/ROADMAP.rst | 3 +
base_user_role_history/readme/USAGE.rst | 1 +
.../security/base_user_role_line_history.xml | 17 +
.../static/description/index.html | 437 ++++++++++++++++++
base_user_role_history/tests/__init__.py | 1 +
.../tests/test_base_user_role_history.py | 160 +++++++
.../views/base_user_role_line_history.xml | 89 ++++
base_user_role_history/views/res_users.xml | 29 ++
19 files changed, 1602 insertions(+)
create mode 100644 base_user_role_history/README.rst
create mode 100644 base_user_role_history/__init__.py
create mode 100644 base_user_role_history/__openerp__.py
create mode 100644 base_user_role_history/i18n/base_user_role_history.pot
create mode 100644 base_user_role_history/i18n/fr.po
create mode 100644 base_user_role_history/i18n/fr_BE.po
create mode 100644 base_user_role_history/models/__init__.py
create mode 100644 base_user_role_history/models/base_user_role_line_history.py
create mode 100644 base_user_role_history/models/res_users.py
create mode 100644 base_user_role_history/readme/CONTRIBUTORS.rst
create mode 100644 base_user_role_history/readme/DESCRIPTION.rst
create mode 100644 base_user_role_history/readme/ROADMAP.rst
create mode 100644 base_user_role_history/readme/USAGE.rst
create mode 100644 base_user_role_history/security/base_user_role_line_history.xml
create mode 100644 base_user_role_history/static/description/index.html
create mode 100644 base_user_role_history/tests/__init__.py
create mode 100644 base_user_role_history/tests/test_base_user_role_history.py
create mode 100644 base_user_role_history/views/base_user_role_line_history.xml
create mode 100644 base_user_role_history/views/res_users.xml
diff --git a/base_user_role_history/README.rst b/base_user_role_history/README.rst
new file mode 100644
index 00000000..369df50b
--- /dev/null
+++ b/base_user_role_history/README.rst
@@ -0,0 +1,97 @@
+======================
+Base User Role History
+======================
+
+.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !! This file is generated by oca-gen-addon-readme !!
+ !! changes will be overwritten. !!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
+ :target: https://odoo-community.org/page/development-status
+ :alt: Beta
+.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
+ :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
+ :alt: License: AGPL-3
+.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github
+ :target: https://github.com/OCA/server-tools/tree/9.0/base_user_role_history
+ :alt: OCA/server-tools
+.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
+ :target: https://translation.odoo-community.org/projects/server-tools-9-0/server-tools-9-0-base_user_role_history
+ :alt: Translate me on Weblate
+.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
+ :target: https://runbot.odoo-community.org/runbot/149/9.0
+ :alt: Try me on Runbot
+
+|badge1| |badge2| |badge3| |badge4| |badge5|
+
+This addon provides history for roles modifications on users.
+Each time a role is added/updated/unlinked on a user, a new role history line
+is created mentioning what changes were made and who made them.
+Theses informations are directly accessible from users via a smart button.
+
+**Table of contents**
+
+.. contents::
+ :local:
+
+Usage
+=====
+
+Changes on user roles are easily accessible via a button on user form view.
+
+Known issues / Roadmap
+======================
+
+Since roles on role history line have 'cascade' ondelete, role deletion leads
+to role history line deletion. In order to keep history even in the case of
+a role deletion, module could be upgraded.
+
+Bug Tracker
+===========
+
+Bugs are tracked on `GitHub Issues `_.
+In case of trouble, please check there if your issue has already been reported.
+If you spotted it first, help us smashing it by providing a detailed and welcomed
+`feedback `_.
+
+Do not contact contributors directly about support or help with technical issues.
+
+Credits
+=======
+
+Authors
+~~~~~~~
+
+* ACSONE SA/NV
+
+Contributors
+~~~~~~~~~~~~
+
+* Benoit Aimont (https://acsone.eu)
+* Thomas Binsfeld (https://acsone.eu)
+
+Maintainers
+~~~~~~~~~~~
+
+This module is maintained by the OCA.
+
+.. image:: https://odoo-community.org/logo.png
+ :alt: Odoo Community Association
+ :target: https://odoo-community.org
+
+OCA, or the Odoo Community Association, is a nonprofit organization whose
+mission is to support the collaborative development of Odoo features and
+promote its widespread use.
+
+.. |maintainer-ThomasBinsfeld| image:: https://github.com/ThomasBinsfeld.png?size=40px
+ :target: https://github.com/ThomasBinsfeld
+ :alt: ThomasBinsfeld
+
+Current `maintainer `__:
+
+|maintainer-ThomasBinsfeld|
+
+This module is part of the `OCA/server-tools `_ project on GitHub.
+
+You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/base_user_role_history/__init__.py b/base_user_role_history/__init__.py
new file mode 100644
index 00000000..0650744f
--- /dev/null
+++ b/base_user_role_history/__init__.py
@@ -0,0 +1 @@
+from . import models
diff --git a/base_user_role_history/__openerp__.py b/base_user_role_history/__openerp__.py
new file mode 100644
index 00000000..60c033a4
--- /dev/null
+++ b/base_user_role_history/__openerp__.py
@@ -0,0 +1,30 @@
+# -*- coding: utf-8 -*-
+# Copyright 2019 ACSONE SA/NV
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+
+{
+ 'name': 'Base User Role History',
+ 'summary': """
+ This module allows to track the changes on users roles.""",
+ 'version': '9.0.1.0.0',
+ 'license': 'AGPL-3',
+ 'author': 'ACSONE SA/NV, '
+ 'Odoo Community Association (OCA)',
+ 'website': 'https://github.com/OCA/server-tools',
+ 'depends': [
+ # Odoo
+ 'mail',
+ # OCA
+ 'base_user_role',
+ 'base_suspend_security',
+ ],
+ 'data': [
+ 'security/base_user_role_line_history.xml',
+ 'views/base_user_role_line_history.xml',
+ 'views/res_users.xml',
+ ],
+ 'development_status': 'Beta',
+ 'maintainers': [
+ 'ThomasBinsfeld'
+ ],
+}
diff --git a/base_user_role_history/i18n/base_user_role_history.pot b/base_user_role_history/i18n/base_user_role_history.pot
new file mode 100644
index 00000000..dbf1e4c9
--- /dev/null
+++ b/base_user_role_history/i18n/base_user_role_history.pot
@@ -0,0 +1,169 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * base_user_role_history
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 9.0c\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2019-09-30 11:50+0000\n"
+"PO-Revision-Date: 2019-09-30 11:50+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: base_user_role_history
+#: model:ir.ui.view,arch_db:base_user_role_history.res_users_form_view
+msgid "Last update of roles"
+msgstr ""
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_performed_action
+#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
+msgid "Action"
+msgstr ""
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_is_enabled
+msgid "Active after edit"
+msgstr ""
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_is_enabled
+msgid "Active before edit"
+msgstr ""
+
+#. module: base_user_role_history
+#: selection:base.user.role.line.history,performed_action:0
+msgid "Add"
+msgstr ""
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_create_uid
+msgid "Created by"
+msgstr ""
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_create_date
+msgid "Created on"
+msgstr ""
+
+#. module: base_user_role_history
+#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view
+#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view
+msgid "Date and time of edition"
+msgstr ""
+
+#. module: base_user_role_history
+#: selection:base.user.role.line.history,performed_action:0
+msgid "Delete"
+msgstr ""
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_display_name
+msgid "Display Name"
+msgstr ""
+
+#. module: base_user_role_history
+#: selection:base.user.role.line.history,performed_action:0
+msgid "Edit"
+msgstr ""
+
+#. module: base_user_role_history
+#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view
+msgid "Edited user"
+msgstr ""
+
+#. module: base_user_role_history
+#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view
+#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view
+msgid "Editor"
+msgstr ""
+
+#. module: base_user_role_history
+#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
+msgid "Group By"
+msgstr ""
+
+#. module: base_user_role_history
+#: model:ir.model,name:base_user_role_history.model_base_user_role_line_history
+msgid "History of user roles"
+msgstr ""
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_id
+msgid "ID"
+msgstr ""
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history___last_update
+msgid "Last Modified on"
+msgstr ""
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_write_uid
+msgid "Last Updated by"
+msgstr ""
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_write_date
+msgid "Last Updated on"
+msgstr ""
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_res_users_last_role_line_modification
+msgid "Last roles modification"
+msgstr ""
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_date_to
+msgid "New end date"
+msgstr ""
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_role_id
+#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
+msgid "New role"
+msgstr ""
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_date_from
+msgid "New start date"
+msgstr ""
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_date_to
+msgid "Old end date"
+msgstr ""
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_role_id
+#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
+msgid "Old role"
+msgstr ""
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_date_from
+msgid "Old start date"
+msgstr ""
+
+#. module: base_user_role_history
+#: code:addons/base_user_role_history/models/res_users.py:70
+#: model:ir.ui.view,arch_db:base_user_role_history.res_users_form_view
+#, python-format
+msgid "Roles history"
+msgstr ""
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_user_id
+msgid "User"
+msgstr ""
+
+#. module: base_user_role_history
+#: model:ir.model,name:base_user_role_history.model_res_users
+msgid "Users"
+msgstr ""
+
diff --git a/base_user_role_history/i18n/fr.po b/base_user_role_history/i18n/fr.po
new file mode 100644
index 00000000..39fbe849
--- /dev/null
+++ b/base_user_role_history/i18n/fr.po
@@ -0,0 +1,170 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * base_user_role_history
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 9.0c\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2019-09-30 11:51+0000\n"
+"PO-Revision-Date: 2019-09-30 11:51+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: base_user_role_history
+#: model:ir.ui.view,arch_db:base_user_role_history.res_users_form_view
+msgid "Last update of roles"
+msgstr "Dernière modification des rôles"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_performed_action
+#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
+msgid "Action"
+msgstr "Action"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_is_enabled
+msgid "Active after edit"
+msgstr "Actif après édition"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_is_enabled
+msgid "Active before edit"
+msgstr "Actif avant édition"
+
+#. module: base_user_role_history
+#: selection:base.user.role.line.history,performed_action:0
+msgid "Add"
+msgstr "Ajouter"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_create_uid
+msgid "Created by"
+msgstr "Créé par"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_create_date
+msgid "Created on"
+msgstr "Créé le"
+
+#. module: base_user_role_history
+#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view
+#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view
+msgid "Date and time of edition"
+msgstr "Date et heure de modification"
+
+#. module: base_user_role_history
+#: selection:base.user.role.line.history,performed_action:0
+msgid "Delete"
+msgstr "Supprimer"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_display_name
+msgid "Display Name"
+msgstr "Nom affiché"
+
+#. module: base_user_role_history
+#: selection:base.user.role.line.history,performed_action:0
+msgid "Edit"
+msgstr "Modifier"
+
+#. module: base_user_role_history
+#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view
+msgid "Edited user"
+msgstr "Utilisateur modifié"
+
+#. module: base_user_role_history
+#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view
+#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view
+msgid "Editor"
+msgstr "Utilisateur modificateur"
+
+#. module: base_user_role_history
+#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
+msgid "Group By"
+msgstr "Regrouper par"
+
+#. module: base_user_role_history
+#: model:ir.model,name:base_user_role_history.model_base_user_role_line_history
+msgid "History of user roles"
+msgstr "Historique des rôles de l'utilisateur"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_id
+msgid "ID"
+msgstr "ID"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history___last_update
+msgid "Last Modified on"
+msgstr "Dernière modification le"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_write_uid
+msgid "Last Updated by"
+msgstr "Mis à jour par"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_write_date
+msgid "Last Updated on"
+msgstr "Mis à jour le"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_res_users_last_role_line_modification
+msgid "Last roles modification"
+msgstr "Dernière modification des rôles"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_date_to
+msgid "New end date"
+msgstr "Nouvelle date de fin"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_role_id
+#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
+msgid "New role"
+msgstr "Nouveau rôle"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_date_from
+msgid "New start date"
+msgstr "Nouvelle date de début"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_date_to
+msgid "Old end date"
+msgstr "Ancienne date de fin"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_role_id
+#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
+msgid "Old role"
+msgstr "Ancien rôle"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_date_from
+msgid "Old start date"
+msgstr "Ancienne date de début"
+
+#. module: base_user_role_history
+#: code:addons/base_user_role_history/models/res_users.py:70
+#: model:ir.ui.view,arch_db:base_user_role_history.res_users_form_view
+#, python-format
+msgid "Roles history"
+msgstr "Historique des rôles"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_user_id
+msgid "User"
+msgstr "Utilisateur"
+
+#. module: base_user_role_history
+#: model:ir.model,name:base_user_role_history.model_res_users
+msgid "Users"
+msgstr "Utilisateurs"
+
diff --git a/base_user_role_history/i18n/fr_BE.po b/base_user_role_history/i18n/fr_BE.po
new file mode 100644
index 00000000..457621b4
--- /dev/null
+++ b/base_user_role_history/i18n/fr_BE.po
@@ -0,0 +1,170 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * base_user_role_history
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 9.0c\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2019-09-30 11:50+0000\n"
+"PO-Revision-Date: 2019-09-30 11:50+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"Language: fr_BE\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: base_user_role_history
+#: model:ir.ui.view,arch_db:base_user_role_history.res_users_form_view
+msgid "Last update of roles"
+msgstr "Dernière modification des rôles"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_performed_action
+#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
+msgid "Action"
+msgstr "Action"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_is_enabled
+msgid "Active after edit"
+msgstr "Actif après édition"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_is_enabled
+msgid "Active before edit"
+msgstr "Actif avant édition"
+
+#. module: base_user_role_history
+#: selection:base.user.role.line.history,performed_action:0
+msgid "Add"
+msgstr "Ajouter"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_create_uid
+msgid "Created by"
+msgstr "Créé par"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_create_date
+msgid "Created on"
+msgstr "Créé le"
+
+#. module: base_user_role_history
+#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view
+#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view
+msgid "Date and time of edition"
+msgstr "Date et heure de modification"
+
+#. module: base_user_role_history
+#: selection:base.user.role.line.history,performed_action:0
+msgid "Delete"
+msgstr "Supprimer"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_display_name
+msgid "Display Name"
+msgstr "Nom affiché"
+
+#. module: base_user_role_history
+#: selection:base.user.role.line.history,performed_action:0
+msgid "Edit"
+msgstr "Modifier"
+
+#. module: base_user_role_history
+#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view
+msgid "Edited user"
+msgstr "Utilisateur modifié"
+
+#. module: base_user_role_history
+#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view
+#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view
+msgid "Editor"
+msgstr "Utilisateur modificateur"
+
+#. module: base_user_role_history
+#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
+msgid "Group By"
+msgstr "Regrouper par"
+
+#. module: base_user_role_history
+#: model:ir.model,name:base_user_role_history.model_base_user_role_line_history
+msgid "History of user roles"
+msgstr "Historique des rôles de l'utilisateur"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_id
+msgid "ID"
+msgstr "ID"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history___last_update
+msgid "Last Modified on"
+msgstr "Dernière modification le"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_write_uid
+msgid "Last Updated by"
+msgstr "Derniere fois mis à jour par"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_write_date
+msgid "Last Updated on"
+msgstr "Dernière mis à jour le"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_res_users_last_role_line_modification
+msgid "Last roles modification"
+msgstr "Dernière modification des rôles"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_date_to
+msgid "New end date"
+msgstr "Nouvelle date de fin"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_role_id
+#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
+msgid "New role"
+msgstr "Nouveau rôle"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_date_from
+msgid "New start date"
+msgstr "Nouvelle date de début"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_date_to
+msgid "Old end date"
+msgstr "Ancienne date de fin"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_role_id
+#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
+msgid "Old role"
+msgstr "Ancien rôle"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_date_from
+msgid "Old start date"
+msgstr "Ancienne date de début"
+
+#. module: base_user_role_history
+#: code:addons/base_user_role_history/models/res_users.py:70
+#: model:ir.ui.view,arch_db:base_user_role_history.res_users_form_view
+#, python-format
+msgid "Roles history"
+msgstr "Historique des rôles"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_user_id
+msgid "User"
+msgstr "Utilisateur"
+
+#. module: base_user_role_history
+#: model:ir.model,name:base_user_role_history.model_res_users
+msgid "Users"
+msgstr "Utilisateurs"
+
diff --git a/base_user_role_history/models/__init__.py b/base_user_role_history/models/__init__.py
new file mode 100644
index 00000000..9ce69302
--- /dev/null
+++ b/base_user_role_history/models/__init__.py
@@ -0,0 +1,2 @@
+from . import res_users
+from . import base_user_role_line_history
diff --git a/base_user_role_history/models/base_user_role_line_history.py b/base_user_role_history/models/base_user_role_line_history.py
new file mode 100644
index 00000000..f89c2b85
--- /dev/null
+++ b/base_user_role_history/models/base_user_role_line_history.py
@@ -0,0 +1,145 @@
+# -*- coding: utf-8 -*-
+# Copyright 2019 ACSONE SA/NV
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+
+from openerp import api, fields, models
+
+
+class BaseUserRoleLineHistory(models.Model):
+ _name = 'base.user.role.line.history'
+ _description = "History of user roles"
+ _order = 'id desc'
+
+ performed_action = fields.Selection(
+ string="Action",
+ selection=[
+ ('add', 'Add'),
+ ('unlink', 'Delete'),
+ ('edit', 'Edit')
+ ],
+ required=True,
+ readonly=True,
+ )
+ user_id = fields.Many2one(
+ string="User",
+ comodel_name='res.users',
+ ondelete='cascade',
+ readonly=True,
+ index=True,
+ )
+ old_role_id = fields.Many2one(
+ string="Old role",
+ comodel_name='res.users.role',
+ ondelete='cascade',
+ readonly=True,
+ index=True,
+ )
+ new_role_id = fields.Many2one(
+ string="New role",
+ comodel_name='res.users.role',
+ ondelete='cascade',
+ readonly=True,
+ index=True,
+ )
+ old_date_from = fields.Date(
+ string="Old start date",
+ readonly=True,
+ )
+ new_date_from = fields.Date(
+ string="New start date",
+ readonly=True,
+ )
+ old_date_to = fields.Date(
+ string="Old end date",
+ readonly=True,
+ )
+ new_date_to = fields.Date(
+ string="New end date",
+ readonly=True,
+ )
+ old_is_enabled = fields.Boolean(
+ string="Active before edit",
+ readonly=True,
+ )
+ new_is_enabled = fields.Boolean(
+ string="Active after edit",
+ readonly=True,
+ )
+
+ @api.model
+ def _prepare_create_from_vals(
+ self,
+ old_role_line_values_by_user,
+ new_role_line_values_by_user
+ ):
+ role_history_line_vals_by_role_line = {}
+ for key, value in new_role_line_values_by_user.items():
+ old_vals = old_role_line_values_by_user.get(key, {})
+ new_vals = value
+ # Manage deletion of role lines and old values of modified lines
+ for role_line_id, role_line_vals in old_vals.items():
+ action = 'unlink' if role_line_id not in new_vals else 'edit'
+ if action == 'edit':
+ # Skip if no change
+ if not any(
+ role_line_vals[k] != new_vals[role_line_id][k]
+ for k in role_line_vals
+ ):
+ continue
+ role_history_line_vals_by_role_line.setdefault(
+ role_line_id, {}
+ )
+ role_history_line_vals_by_role_line[role_line_id].update({
+ 'performed_action': action,
+ 'user_id': role_line_vals['user_id'],
+ 'old_role_id': role_line_vals['role_id'],
+ 'old_date_from': role_line_vals['date_from'],
+ 'old_date_to': role_line_vals['date_to'],
+ 'old_is_enabled': role_line_vals['is_enabled'],
+ })
+ # Manage addition of role lines and new values of modified ones
+ for role_line_id, role_line_vals in new_vals.items():
+ action = 'add' if role_line_id not in old_vals else 'edit'
+ if action == 'edit':
+ # Skip if no change
+ if not any(
+ role_line_vals[k] != old_vals[role_line_id][k]
+ for k in role_line_vals
+ ):
+ continue
+ role_history_line_vals_by_role_line.setdefault(
+ role_line_id, {}
+ )
+ role_history_line_vals_by_role_line[role_line_id].update({
+ 'performed_action': action,
+ 'user_id': role_line_vals['user_id'],
+ 'new_role_id': role_line_vals['role_id'],
+ 'new_date_from': role_line_vals['date_from'],
+ 'new_date_to': role_line_vals['date_to'],
+ 'new_is_enabled': role_line_vals['is_enabled'],
+ })
+ return role_history_line_vals_by_role_line
+
+ @api.model
+ def create_from_vals(
+ self,
+ old_role_line_values_by_user,
+ new_role_line_values_by_user
+ ):
+ """
+ This method creates user role line history objects based on given
+ old/new values.
+ old_role_line_values_by_user and new_role_line_values_by_user are like:
+ {user_id:
+ {role_line_id:
+ {role_line_values},
+ },
+ }
+ """
+ role_history_line_vals_by_role_line = self._prepare_create_from_vals(
+ old_role_line_values_by_user, new_role_line_values_by_user
+ )
+ # Create the history lines with suspend security
+ # (nobody has the create right)
+ for role_history_vals in role_history_line_vals_by_role_line.values():
+ self.suspend_security().create(role_history_vals)
diff --git a/base_user_role_history/models/res_users.py b/base_user_role_history/models/res_users.py
new file mode 100644
index 00000000..5f4dd4ab
--- /dev/null
+++ b/base_user_role_history/models/res_users.py
@@ -0,0 +1,75 @@
+# -*- coding: utf-8 -*-
+# Copyright 2019 ACSONE SA/NV
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+
+from openerp import api, fields, models, _
+
+
+class ResUsers(models.Model):
+ _inherit = 'res.users'
+
+ last_role_line_modification = fields.Datetime(
+ string="Last roles modification",
+ readonly=True,
+ )
+
+ @api.model
+ def _prepare_role_line_history_dict(self, role_line):
+ return {
+ 'user_id': role_line.user_id.id,
+ 'role_id': role_line.role_id.id,
+ 'date_from': fields.Date.from_string(role_line.date_from),
+ 'date_to': fields.Date.from_string(role_line.date_to),
+ 'is_enabled': role_line.is_enabled,
+ }
+
+ @api.multi
+ def _get_role_line_values_by_user(self):
+ role_line_values_by_user = {}
+ for rec in self:
+ role_line_values_by_user.setdefault(rec, {})
+ for role_line in rec.role_line_ids:
+ role_line_values_by_user[rec][role_line.id] = \
+ self._prepare_role_line_history_dict(role_line)
+ return role_line_values_by_user
+
+ @api.model
+ def create(self, vals):
+ res = super(ResUsers, self).create(vals)
+ if 'role_line_ids' not in vals:
+ return res
+ new_role_line_values_by_user = res._get_role_line_values_by_user()
+ self.env['base.user.role.line.history'].create_from_vals(
+ {},
+ new_role_line_values_by_user
+ )
+ res.last_role_line_modification = fields.Datetime.now()
+ return res
+
+ @api.multi
+ def write(self, vals):
+ if 'role_line_ids' not in vals:
+ return super(ResUsers, self).write(vals)
+ old_role_line_values_by_user = self._get_role_line_values_by_user()
+ res = super(ResUsers, self).write(vals)
+ new_role_line_values_by_user = self._get_role_line_values_by_user()
+ self.env['base.user.role.line.history'].create_from_vals(
+ old_role_line_values_by_user,
+ new_role_line_values_by_user
+ )
+ self.write({
+ 'last_role_line_modification': fields.Datetime.now()
+ })
+ return res
+
+ @api.multi
+ def show_role_lines_history(self): # pragma: no cover
+ self.ensure_one()
+ domain = [('user_id', '=', self.id)]
+ return {
+ 'name': _("Roles history"),
+ 'type': 'ir.actions.act_window',
+ 'view_mode': 'tree,form',
+ 'res_model': 'base.user.role.line.history',
+ 'domain': domain,
+ }
diff --git a/base_user_role_history/readme/CONTRIBUTORS.rst b/base_user_role_history/readme/CONTRIBUTORS.rst
new file mode 100644
index 00000000..ce9dedf8
--- /dev/null
+++ b/base_user_role_history/readme/CONTRIBUTORS.rst
@@ -0,0 +1,2 @@
+* Benoit Aimont (https://acsone.eu)
+* Thomas Binsfeld (https://acsone.eu)
diff --git a/base_user_role_history/readme/DESCRIPTION.rst b/base_user_role_history/readme/DESCRIPTION.rst
new file mode 100644
index 00000000..ddc8ccf5
--- /dev/null
+++ b/base_user_role_history/readme/DESCRIPTION.rst
@@ -0,0 +1,4 @@
+This addon provides history for roles modifications on users.
+Each time a role is added/updated/unlinked on a user, a new role history line
+is created mentioning what changes were made and who made them.
+Theses informations are directly accessible from users via a smart button.
diff --git a/base_user_role_history/readme/ROADMAP.rst b/base_user_role_history/readme/ROADMAP.rst
new file mode 100644
index 00000000..620ab933
--- /dev/null
+++ b/base_user_role_history/readme/ROADMAP.rst
@@ -0,0 +1,3 @@
+Since roles on role history line have 'cascade' ondelete, role deletion leads
+to role history line deletion. In order to keep history even in the case of
+a role deletion, module could be upgraded.
diff --git a/base_user_role_history/readme/USAGE.rst b/base_user_role_history/readme/USAGE.rst
new file mode 100644
index 00000000..8c22abc6
--- /dev/null
+++ b/base_user_role_history/readme/USAGE.rst
@@ -0,0 +1 @@
+Changes on user roles are easily accessible via a button on user form view.
diff --git a/base_user_role_history/security/base_user_role_line_history.xml b/base_user_role_history/security/base_user_role_line_history.xml
new file mode 100644
index 00000000..c99c1365
--- /dev/null
+++ b/base_user_role_history/security/base_user_role_line_history.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+ base.user.role.line.history access user
+
+
+
+
+
+
+
+
+
diff --git a/base_user_role_history/static/description/index.html b/base_user_role_history/static/description/index.html
new file mode 100644
index 00000000..ad88ec88
--- /dev/null
+++ b/base_user_role_history/static/description/index.html
@@ -0,0 +1,437 @@
+
+
+
+
+
+
+Base User Role History
+
+
+
+
+
Base User Role History
+
+
+
+
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.
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.
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.
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.
+
+
diff --git a/base_user_role_history/tests/__init__.py b/base_user_role_history/tests/__init__.py
new file mode 100644
index 00000000..c9a4ca3c
--- /dev/null
+++ b/base_user_role_history/tests/__init__.py
@@ -0,0 +1 @@
+from . import test_base_user_role_history
diff --git a/base_user_role_history/tests/test_base_user_role_history.py b/base_user_role_history/tests/test_base_user_role_history.py
new file mode 100644
index 00000000..29fa717e
--- /dev/null
+++ b/base_user_role_history/tests/test_base_user_role_history.py
@@ -0,0 +1,160 @@
+# -*- coding: utf-8 -*-
+# Copyright 2019 ACSONE SA/NV
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).µ
+
+from datetime import date, timedelta
+
+from openerp import fields
+from openerp.tests.common import SavepointCase
+
+
+class TestBaseUserRoleHistory(SavepointCase):
+
+ @classmethod
+ def setUpClass(cls):
+ super(TestBaseUserRoleHistory, cls).setUpClass()
+
+ # MODELS
+
+ cls.history_line_model = cls.env['base.user.role.line.history']
+ cls.role_model = cls.env['res.users.role']
+ cls.user_model = cls.env['res.users']
+
+ # INSTANCE
+
+ cls.user_01 = cls.user_model.search([
+ ('id', '!=', cls.env.user.id)
+ ], limit=1)
+ cls.role_01 = cls.role_model.create({
+ 'name': "Role test 01",
+ })
+
+ def test_write_role_lines_on_user(self):
+ """
+ Data :
+ - user with no role
+ Test case :
+ 1) add a role
+ 2) role modification with dates
+ 3) role modification with no change
+ 4) role unlink
+ Expected results :
+ 1) new role history line created with performed_action == 'add'
+ 2) new role history line created with performed_action == 'edit'
+ 3) no new role history line created
+ 4) new role history line created with performed_action == 'unlink'
+ """
+ # 1
+ history_lines_0 = self.history_line_model.search([
+ ('user_id', '=', self.user_01.id)
+ ])
+ self.assertFalse(history_lines_0)
+ self.user_01.write({
+ 'role_line_ids': [
+ (0, 0, {
+ 'role_id': self.role_01.id
+ })
+ ]
+ })
+ history_lines_1 = self.history_line_model.search([
+ ('user_id', '=', self.user_01.id)
+ ])
+ self.assertTrue(history_lines_1)
+ self.assertEqual(len(history_lines_1), 1)
+ self.assertEqual(history_lines_1.performed_action, 'add')
+ self.assertFalse(history_lines_1.old_role_id)
+ self.assertEqual(history_lines_1.new_role_id, self.role_01)
+ # 2
+ self.user_01.write({
+ 'role_line_ids': [
+ (1, self.user_01.role_line_ids[0].id, {
+ 'date_from': date.today(),
+ 'date_to': date.today() + timedelta(days=5),
+ })
+ ]
+ })
+ history_lines_2 = self.history_line_model.search([
+ ('user_id', '=', self.user_01.id),
+ ('id', 'not in', history_lines_1.ids)
+ ])
+ self.assertTrue(history_lines_2)
+ self.assertEqual(len(history_lines_2), 1)
+ self.assertEqual(history_lines_2.performed_action, 'edit')
+ self.assertEqual(history_lines_2.old_role_id, self.role_01)
+ self.assertEqual(history_lines_2.new_role_id, self.role_01)
+ self.assertFalse(history_lines_2.old_date_from)
+ self.assertEqual(history_lines_2.new_date_from,
+ fields.Date.to_string(date.today()))
+ self.assertFalse(history_lines_2.old_date_to)
+ self.assertEqual(history_lines_2.new_date_to,
+ fields.Date.to_string(
+ date.today() + timedelta(days=5)))
+ self.user_01.write({
+ 'role_line_ids': [(1, self.user_01.role_line_ids[0].id, {})]
+ })
+ history_lines_3 = self.history_line_model.search([
+ ('user_id', '=', self.user_01.id),
+ ('id', 'not in', (history_lines_1 | history_lines_2).ids)
+ ])
+ self.assertFalse(history_lines_3)
+ # 4
+ self.user_01.write({
+ 'role_line_ids': [(2, self.user_01.role_line_ids[0].id, False)],
+ })
+ history_lines_4 = self.history_line_model.search([
+ ('user_id', '=', self.user_01.id),
+ ('id', 'not in', (history_lines_1 | history_lines_2).ids)
+ ])
+ self.assertTrue(history_lines_4)
+ self.assertEqual(len(history_lines_4), 1)
+ self.assertEqual(history_lines_4.performed_action, 'unlink')
+ self.assertEqual(history_lines_4.old_role_id, self.role_01)
+ self.assertFalse(history_lines_4.new_role_id)
+ self.assertEqual(history_lines_4.old_date_from,
+ fields.Date.to_string(date.today()))
+ self.assertFalse(history_lines_4.new_date_from)
+ self.assertEqual(history_lines_4.old_date_to,
+ fields.Date.to_string(
+ date.today() + timedelta(days=5)))
+ self.assertFalse(history_lines_4.new_date_to)
+
+ def test_create_role_lines_on_new_user(self):
+ """
+ Data : /
+ Test case :
+ - create a user with a role
+ Expected results :
+ - new role history line created with performed_action == 'add'
+ """
+ new_user = self.user_model.create({
+ 'login': 'new_user',
+ 'name': 'new_user',
+ 'role_line_ids': [
+ (0, 0, {
+ 'role_id': self.role_01.id,
+ })
+ ]
+ })
+ history_lines = self.history_line_model.search([
+ ('user_id', '=', new_user.id)
+ ])
+ self.assertTrue(history_lines)
+ self.assertEqual(len(history_lines), 1)
+ self.assertEqual(history_lines.performed_action, 'add')
+
+ def test_no_create_role_lines_on_new_user(self):
+ """
+ Data : /
+ Test case :
+ - create a user without role
+ Expected results :
+ - no role history line created
+ """
+ new_user = self.user_model.create({
+ 'login': 'new_user',
+ 'name': 'new_user',
+ })
+ history_lines = self.history_line_model.search([
+ ('user_id', '=', new_user.id)
+ ])
+ self.assertFalse(history_lines)
diff --git a/base_user_role_history/views/base_user_role_line_history.xml b/base_user_role_history/views/base_user_role_line_history.xml
new file mode 100644
index 00000000..a1cabe9f
--- /dev/null
+++ b/base_user_role_history/views/base_user_role_line_history.xml
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+
+ base.user.role.line.history.form (in base_user_role_history)
+ base.user.role.line.history
+
+
+
+
+
+
+
+
+ base.user.role.line.history.tree (in base_user_role_history)
+ base.user.role.line.history
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ base.user.role.line.history.search (in base_user_role_history)
+ base.user.role.line.history
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/base_user_role_history/views/res_users.xml b/base_user_role_history/views/res_users.xml
new file mode 100644
index 00000000..8eea0cf0
--- /dev/null
+++ b/base_user_role_history/views/res_users.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+ res.users.form (in base_user_role_history)
+ res.users
+
+
+
+
+
+
+
+
+
From da660af78734cd87ccfdb605524df3442c80a140 Mon Sep 17 00:00:00 2001
From: Benoit Aimont
Date: Tue, 1 Oct 2019 14:41:31 +0200
Subject: [PATCH 02/12] [12.0][MIG] base_user_role_history - migration from 9.0
to 12.0
---
base_user_role_history/README.rst | 16 ++---
.../{__openerp__.py => __manifest__.py} | 3 +-
.../i18n/base_user_role_history.pot | 62 +++++++++---------
.../models/base_user_role_line_history.py | 3 +-
base_user_role_history/models/res_users.py | 22 +++----
.../static/description/icon.png | Bin 0 -> 9455 bytes
.../static/description/index.html | 8 +--
.../tests/test_base_user_role_history.py | 27 ++++----
8 files changed, 69 insertions(+), 72 deletions(-)
rename base_user_role_history/{__openerp__.py => __manifest__.py} (93%)
create mode 100644 base_user_role_history/static/description/icon.png
diff --git a/base_user_role_history/README.rst b/base_user_role_history/README.rst
index 369df50b..08f2e118 100644
--- a/base_user_role_history/README.rst
+++ b/base_user_role_history/README.rst
@@ -13,14 +13,14 @@ Base User Role History
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
-.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github
- :target: https://github.com/OCA/server-tools/tree/9.0/base_user_role_history
- :alt: OCA/server-tools
+.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--backend-lightgray.png?logo=github
+ :target: https://github.com/OCA/server-backend/tree/12.0/base_user_role_history
+ :alt: OCA/server-backend
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
- :target: https://translation.odoo-community.org/projects/server-tools-9-0/server-tools-9-0-base_user_role_history
+ :target: https://translation.odoo-community.org/projects/server-backend-12-0/server-backend-12-0-base_user_role_history
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
- :target: https://runbot.odoo-community.org/runbot/149/9.0
+ :target: https://runbot.odoo-community.org/runbot/253/12.0
:alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge5|
@@ -50,10 +50,10 @@ a role deletion, module could be upgraded.
Bug Tracker
===========
-Bugs are tracked on `GitHub Issues `_.
+Bugs are tracked on `GitHub Issues `_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
-`feedback `_.
+`feedback `_.
Do not contact contributors directly about support or help with technical issues.
@@ -92,6 +92,6 @@ Current `maintainer `__:
|maintainer-ThomasBinsfeld|
-This module is part of the `OCA/server-tools `_ project on GitHub.
+This module is part of the `OCA/server-backend `_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/base_user_role_history/__openerp__.py b/base_user_role_history/__manifest__.py
similarity index 93%
rename from base_user_role_history/__openerp__.py
rename to base_user_role_history/__manifest__.py
index 60c033a4..539a2d96 100644
--- a/base_user_role_history/__openerp__.py
+++ b/base_user_role_history/__manifest__.py
@@ -1,4 +1,3 @@
-# -*- coding: utf-8 -*-
# Copyright 2019 ACSONE SA/NV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
@@ -6,7 +5,7 @@
'name': 'Base User Role History',
'summary': """
This module allows to track the changes on users roles.""",
- 'version': '9.0.1.0.0',
+ 'version': '12.0.1.0.0',
'license': 'AGPL-3',
'author': 'ACSONE SA/NV, '
'Odoo Community Association (OCA)',
diff --git a/base_user_role_history/i18n/base_user_role_history.pot b/base_user_role_history/i18n/base_user_role_history.pot
index dbf1e4c9..c8299c7f 100644
--- a/base_user_role_history/i18n/base_user_role_history.pot
+++ b/base_user_role_history/i18n/base_user_role_history.pot
@@ -4,10 +4,8 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Odoo Server 9.0c\n"
+"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-09-30 11:50+0000\n"
-"PO-Revision-Date: 2019-09-30 11:50+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -16,23 +14,23 @@ msgstr ""
"Plural-Forms: \n"
#. module: base_user_role_history
-#: model:ir.ui.view,arch_db:base_user_role_history.res_users_form_view
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.res_users_form_view
msgid "Last update of roles"
msgstr ""
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_performed_action
-#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__performed_action
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
msgid "Action"
msgstr ""
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_is_enabled
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__new_is_enabled
msgid "Active after edit"
msgstr ""
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_is_enabled
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__old_is_enabled
msgid "Active before edit"
msgstr ""
@@ -42,18 +40,18 @@ msgid "Add"
msgstr ""
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_create_uid
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__create_uid
msgid "Created by"
msgstr ""
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_create_date
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__create_date
msgid "Created on"
msgstr ""
#. module: base_user_role_history
-#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view
-#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view
msgid "Date and time of edition"
msgstr ""
@@ -63,7 +61,7 @@ msgid "Delete"
msgstr ""
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_display_name
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__display_name
msgid "Display Name"
msgstr ""
@@ -73,18 +71,18 @@ msgid "Edit"
msgstr ""
#. module: base_user_role_history
-#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view
msgid "Edited user"
msgstr ""
#. module: base_user_role_history
-#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view
-#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view
msgid "Editor"
msgstr ""
#. module: base_user_role_history
-#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
msgid "Group By"
msgstr ""
@@ -94,71 +92,71 @@ msgid "History of user roles"
msgstr ""
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_id
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__id
msgid "ID"
msgstr ""
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history___last_update
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history____last_update
msgid "Last Modified on"
msgstr ""
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_write_uid
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__write_uid
msgid "Last Updated by"
msgstr ""
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_write_date
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__write_date
msgid "Last Updated on"
msgstr ""
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_res_users_last_role_line_modification
+#: model:ir.model.fields,field_description:base_user_role_history.field_res_users__last_role_line_modification
msgid "Last roles modification"
msgstr ""
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_date_to
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__new_date_to
msgid "New end date"
msgstr ""
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_role_id
-#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__new_role_id
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
msgid "New role"
msgstr ""
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_date_from
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__new_date_from
msgid "New start date"
msgstr ""
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_date_to
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__old_date_to
msgid "Old end date"
msgstr ""
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_role_id
-#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__old_role_id
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
msgid "Old role"
msgstr ""
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_date_from
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__old_date_from
msgid "Old start date"
msgstr ""
#. module: base_user_role_history
#: code:addons/base_user_role_history/models/res_users.py:70
-#: model:ir.ui.view,arch_db:base_user_role_history.res_users_form_view
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.res_users_form_view
#, python-format
msgid "Roles history"
msgstr ""
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_user_id
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__user_id
msgid "User"
msgstr ""
diff --git a/base_user_role_history/models/base_user_role_line_history.py b/base_user_role_history/models/base_user_role_line_history.py
index f89c2b85..76947f02 100644
--- a/base_user_role_history/models/base_user_role_line_history.py
+++ b/base_user_role_history/models/base_user_role_line_history.py
@@ -1,8 +1,7 @@
-# -*- coding: utf-8 -*-
# Copyright 2019 ACSONE SA/NV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
-from openerp import api, fields, models
+from odoo import api, fields, models
class BaseUserRoleLineHistory(models.Model):
diff --git a/base_user_role_history/models/res_users.py b/base_user_role_history/models/res_users.py
index 5f4dd4ab..da80471f 100644
--- a/base_user_role_history/models/res_users.py
+++ b/base_user_role_history/models/res_users.py
@@ -1,8 +1,7 @@
-# -*- coding: utf-8 -*-
# Copyright 2019 ACSONE SA/NV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
-from openerp import api, fields, models, _
+from odoo import api, fields, models, _
class ResUsers(models.Model):
@@ -18,8 +17,8 @@ class ResUsers(models.Model):
return {
'user_id': role_line.user_id.id,
'role_id': role_line.role_id.id,
- 'date_from': fields.Date.from_string(role_line.date_from),
- 'date_to': fields.Date.from_string(role_line.date_to),
+ 'date_from': role_line.date_from,
+ 'date_to': role_line.date_to,
'is_enabled': role_line.is_enabled,
}
@@ -33,11 +32,12 @@ class ResUsers(models.Model):
self._prepare_role_line_history_dict(role_line)
return role_line_values_by_user
- @api.model
- def create(self, vals):
- res = super(ResUsers, self).create(vals)
- if 'role_line_ids' not in vals:
- return res
+ @api.model_create_multi
+ def create(self, vals_list):
+ res = super().create(vals_list)
+ for vals in vals_list:
+ if 'role_line_ids' not in vals:
+ return res
new_role_line_values_by_user = res._get_role_line_values_by_user()
self.env['base.user.role.line.history'].create_from_vals(
{},
@@ -49,9 +49,9 @@ class ResUsers(models.Model):
@api.multi
def write(self, vals):
if 'role_line_ids' not in vals:
- return super(ResUsers, self).write(vals)
+ return super().write(vals)
old_role_line_values_by_user = self._get_role_line_values_by_user()
- res = super(ResUsers, self).write(vals)
+ res = super().write(vals)
new_role_line_values_by_user = self._get_role_line_values_by_user()
self.env['base.user.role.line.history'].create_from_vals(
old_role_line_values_by_user,
diff --git a/base_user_role_history/static/description/icon.png b/base_user_role_history/static/description/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d
GIT binary patch
literal 9455
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
z
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
Xviia!U7SGha1wx#SCgwmn*{w2TRX*I
literal 0
HcmV?d00001
diff --git a/base_user_role_history/static/description/index.html b/base_user_role_history/static/description/index.html
index ad88ec88..e41f5790 100644
--- a/base_user_role_history/static/description/index.html
+++ b/base_user_role_history/static/description/index.html
@@ -367,7 +367,7 @@ ul.auto-toc {
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-
+
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.
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.
diff --git a/base_user_role_history/tests/test_base_user_role_history.py b/base_user_role_history/tests/test_base_user_role_history.py
index 29fa717e..8a289f7a 100644
--- a/base_user_role_history/tests/test_base_user_role_history.py
+++ b/base_user_role_history/tests/test_base_user_role_history.py
@@ -1,11 +1,9 @@
-# -*- coding: utf-8 -*-
# Copyright 2019 ACSONE SA/NV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).µ
from datetime import date, timedelta
-from openerp import fields
-from openerp.tests.common import SavepointCase
+from odoo.tests.common import SavepointCase
class TestBaseUserRoleHistory(SavepointCase):
@@ -83,12 +81,12 @@ class TestBaseUserRoleHistory(SavepointCase):
self.assertEqual(history_lines_2.old_role_id, self.role_01)
self.assertEqual(history_lines_2.new_role_id, self.role_01)
self.assertFalse(history_lines_2.old_date_from)
- self.assertEqual(history_lines_2.new_date_from,
- fields.Date.to_string(date.today()))
+ self.assertEqual(history_lines_2.new_date_from, date.today())
self.assertFalse(history_lines_2.old_date_to)
- self.assertEqual(history_lines_2.new_date_to,
- fields.Date.to_string(
- date.today() + timedelta(days=5)))
+ self.assertEqual(
+ history_lines_2.new_date_to,
+ date.today() + timedelta(days=5)
+ )
self.user_01.write({
'role_line_ids': [(1, self.user_01.role_line_ids[0].id, {})]
})
@@ -110,12 +108,15 @@ class TestBaseUserRoleHistory(SavepointCase):
self.assertEqual(history_lines_4.performed_action, 'unlink')
self.assertEqual(history_lines_4.old_role_id, self.role_01)
self.assertFalse(history_lines_4.new_role_id)
- self.assertEqual(history_lines_4.old_date_from,
- fields.Date.to_string(date.today()))
+ self.assertEqual(
+ history_lines_4.old_date_from,
+ date.today()
+ )
self.assertFalse(history_lines_4.new_date_from)
- self.assertEqual(history_lines_4.old_date_to,
- fields.Date.to_string(
- date.today() + timedelta(days=5)))
+ self.assertEqual(
+ history_lines_4.old_date_to,
+ date.today() + timedelta(days=5)
+ )
self.assertFalse(history_lines_4.new_date_to)
def test_create_role_lines_on_new_user(self):
From 524e7e8faf5c0af5c5c89b99806203cb21bd5b3a Mon Sep 17 00:00:00 2001
From: Benoit Aimont
Date: Wed, 18 Dec 2019 10:05:58 +0100
Subject: [PATCH 03/12] [IMP] base_user_role_history: black, isort
---
base_user_role_history/__manifest__.py | 35 ++---
.../models/base_user_role_line_history.py | 116 ++++++--------
base_user_role_history/models/res_users.py | 52 +++----
.../tests/test_base_user_role_history.py | 146 ++++++++----------
4 files changed, 148 insertions(+), 201 deletions(-)
diff --git a/base_user_role_history/__manifest__.py b/base_user_role_history/__manifest__.py
index 539a2d96..f5fe5eba 100644
--- a/base_user_role_history/__manifest__.py
+++ b/base_user_role_history/__manifest__.py
@@ -2,28 +2,25 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
- 'name': 'Base User Role History',
- 'summary': """
+ "name": "Base User Role History",
+ "summary": """
This module allows to track the changes on users roles.""",
- 'version': '12.0.1.0.0',
- 'license': 'AGPL-3',
- 'author': 'ACSONE SA/NV, '
- 'Odoo Community Association (OCA)',
- 'website': 'https://github.com/OCA/server-tools',
- 'depends': [
+ "version": "12.0.1.0.0",
+ "license": "AGPL-3",
+ "author": "ACSONE SA/NV, " "Odoo Community Association (OCA)",
+ "website": "https://github.com/OCA/server-tools",
+ "depends": [
# Odoo
- 'mail',
+ "mail",
# OCA
- 'base_user_role',
- 'base_suspend_security',
+ "base_user_role",
+ "base_suspend_security",
],
- 'data': [
- 'security/base_user_role_line_history.xml',
- 'views/base_user_role_line_history.xml',
- 'views/res_users.xml',
- ],
- 'development_status': 'Beta',
- 'maintainers': [
- 'ThomasBinsfeld'
+ "data": [
+ "security/base_user_role_line_history.xml",
+ "views/base_user_role_line_history.xml",
+ "views/res_users.xml",
],
+ "development_status": "Beta",
+ "maintainers": ["ThomasBinsfeld"],
}
diff --git a/base_user_role_history/models/base_user_role_line_history.py b/base_user_role_history/models/base_user_role_line_history.py
index 76947f02..86da3836 100644
--- a/base_user_role_history/models/base_user_role_line_history.py
+++ b/base_user_role_history/models/base_user_role_line_history.py
@@ -5,71 +5,47 @@ from odoo import api, fields, models
class BaseUserRoleLineHistory(models.Model):
- _name = 'base.user.role.line.history'
+ _name = "base.user.role.line.history"
_description = "History of user roles"
- _order = 'id desc'
+ _order = "id desc"
performed_action = fields.Selection(
string="Action",
- selection=[
- ('add', 'Add'),
- ('unlink', 'Delete'),
- ('edit', 'Edit')
- ],
+ selection=[("add", "Add"), ("unlink", "Delete"), ("edit", "Edit")],
required=True,
readonly=True,
)
user_id = fields.Many2one(
string="User",
- comodel_name='res.users',
- ondelete='cascade',
+ comodel_name="res.users",
+ ondelete="cascade",
readonly=True,
index=True,
)
old_role_id = fields.Many2one(
string="Old role",
- comodel_name='res.users.role',
- ondelete='cascade',
+ comodel_name="res.users.role",
+ ondelete="cascade",
readonly=True,
index=True,
)
new_role_id = fields.Many2one(
string="New role",
- comodel_name='res.users.role',
- ondelete='cascade',
+ comodel_name="res.users.role",
+ ondelete="cascade",
readonly=True,
index=True,
)
- old_date_from = fields.Date(
- string="Old start date",
- readonly=True,
- )
- new_date_from = fields.Date(
- string="New start date",
- readonly=True,
- )
- old_date_to = fields.Date(
- string="Old end date",
- readonly=True,
- )
- new_date_to = fields.Date(
- string="New end date",
- readonly=True,
- )
- old_is_enabled = fields.Boolean(
- string="Active before edit",
- readonly=True,
- )
- new_is_enabled = fields.Boolean(
- string="Active after edit",
- readonly=True,
- )
+ old_date_from = fields.Date(string="Old start date", readonly=True)
+ new_date_from = fields.Date(string="New start date", readonly=True)
+ old_date_to = fields.Date(string="Old end date", readonly=True)
+ new_date_to = fields.Date(string="New end date", readonly=True)
+ old_is_enabled = fields.Boolean(string="Active before edit", readonly=True)
+ new_is_enabled = fields.Boolean(string="Active after edit", readonly=True)
@api.model
def _prepare_create_from_vals(
- self,
- old_role_line_values_by_user,
- new_role_line_values_by_user
+ self, old_role_line_values_by_user, new_role_line_values_by_user
):
role_history_line_vals_by_role_line = {}
for key, value in new_role_line_values_by_user.items():
@@ -77,53 +53,51 @@ class BaseUserRoleLineHistory(models.Model):
new_vals = value
# Manage deletion of role lines and old values of modified lines
for role_line_id, role_line_vals in old_vals.items():
- action = 'unlink' if role_line_id not in new_vals else 'edit'
- if action == 'edit':
+ action = "unlink" if role_line_id not in new_vals else "edit"
+ if action == "edit":
# Skip if no change
if not any(
- role_line_vals[k] != new_vals[role_line_id][k]
- for k in role_line_vals
+ role_line_vals[k] != new_vals[role_line_id][k]
+ for k in role_line_vals
):
continue
- role_history_line_vals_by_role_line.setdefault(
- role_line_id, {}
+ role_history_line_vals_by_role_line.setdefault(role_line_id, {})
+ role_history_line_vals_by_role_line[role_line_id].update(
+ {
+ "performed_action": action,
+ "user_id": role_line_vals["user_id"],
+ "old_role_id": role_line_vals["role_id"],
+ "old_date_from": role_line_vals["date_from"],
+ "old_date_to": role_line_vals["date_to"],
+ "old_is_enabled": role_line_vals["is_enabled"],
+ }
)
- role_history_line_vals_by_role_line[role_line_id].update({
- 'performed_action': action,
- 'user_id': role_line_vals['user_id'],
- 'old_role_id': role_line_vals['role_id'],
- 'old_date_from': role_line_vals['date_from'],
- 'old_date_to': role_line_vals['date_to'],
- 'old_is_enabled': role_line_vals['is_enabled'],
- })
# Manage addition of role lines and new values of modified ones
for role_line_id, role_line_vals in new_vals.items():
- action = 'add' if role_line_id not in old_vals else 'edit'
- if action == 'edit':
+ action = "add" if role_line_id not in old_vals else "edit"
+ if action == "edit":
# Skip if no change
if not any(
- role_line_vals[k] != old_vals[role_line_id][k]
- for k in role_line_vals
+ role_line_vals[k] != old_vals[role_line_id][k]
+ for k in role_line_vals
):
continue
- role_history_line_vals_by_role_line.setdefault(
- role_line_id, {}
+ role_history_line_vals_by_role_line.setdefault(role_line_id, {})
+ role_history_line_vals_by_role_line[role_line_id].update(
+ {
+ "performed_action": action,
+ "user_id": role_line_vals["user_id"],
+ "new_role_id": role_line_vals["role_id"],
+ "new_date_from": role_line_vals["date_from"],
+ "new_date_to": role_line_vals["date_to"],
+ "new_is_enabled": role_line_vals["is_enabled"],
+ }
)
- role_history_line_vals_by_role_line[role_line_id].update({
- 'performed_action': action,
- 'user_id': role_line_vals['user_id'],
- 'new_role_id': role_line_vals['role_id'],
- 'new_date_from': role_line_vals['date_from'],
- 'new_date_to': role_line_vals['date_to'],
- 'new_is_enabled': role_line_vals['is_enabled'],
- })
return role_history_line_vals_by_role_line
@api.model
def create_from_vals(
- self,
- old_role_line_values_by_user,
- new_role_line_values_by_user
+ self, old_role_line_values_by_user, new_role_line_values_by_user
):
"""
This method creates user role line history objects based on given
diff --git a/base_user_role_history/models/res_users.py b/base_user_role_history/models/res_users.py
index da80471f..248f8bf7 100644
--- a/base_user_role_history/models/res_users.py
+++ b/base_user_role_history/models/res_users.py
@@ -1,25 +1,24 @@
# Copyright 2019 ACSONE SA/NV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
-from odoo import api, fields, models, _
+from odoo import _, api, fields, models
class ResUsers(models.Model):
- _inherit = 'res.users'
+ _inherit = "res.users"
last_role_line_modification = fields.Datetime(
- string="Last roles modification",
- readonly=True,
+ string="Last roles modification", readonly=True
)
@api.model
def _prepare_role_line_history_dict(self, role_line):
return {
- 'user_id': role_line.user_id.id,
- 'role_id': role_line.role_id.id,
- 'date_from': role_line.date_from,
- 'date_to': role_line.date_to,
- 'is_enabled': role_line.is_enabled,
+ "user_id": role_line.user_id.id,
+ "role_id": role_line.role_id.id,
+ "date_from": role_line.date_from,
+ "date_to": role_line.date_to,
+ "is_enabled": role_line.is_enabled,
}
@api.multi
@@ -28,48 +27,45 @@ class ResUsers(models.Model):
for rec in self:
role_line_values_by_user.setdefault(rec, {})
for role_line in rec.role_line_ids:
- role_line_values_by_user[rec][role_line.id] = \
- self._prepare_role_line_history_dict(role_line)
+ role_line_values_by_user[rec][
+ role_line.id
+ ] = self._prepare_role_line_history_dict(role_line)
return role_line_values_by_user
@api.model_create_multi
def create(self, vals_list):
res = super().create(vals_list)
for vals in vals_list:
- if 'role_line_ids' not in vals:
+ if "role_line_ids" not in vals:
return res
new_role_line_values_by_user = res._get_role_line_values_by_user()
- self.env['base.user.role.line.history'].create_from_vals(
- {},
- new_role_line_values_by_user
+ self.env["base.user.role.line.history"].create_from_vals(
+ {}, new_role_line_values_by_user
)
res.last_role_line_modification = fields.Datetime.now()
return res
@api.multi
def write(self, vals):
- if 'role_line_ids' not in vals:
+ if "role_line_ids" not in vals:
return super().write(vals)
old_role_line_values_by_user = self._get_role_line_values_by_user()
res = super().write(vals)
new_role_line_values_by_user = self._get_role_line_values_by_user()
- self.env['base.user.role.line.history'].create_from_vals(
- old_role_line_values_by_user,
- new_role_line_values_by_user
+ self.env["base.user.role.line.history"].create_from_vals(
+ old_role_line_values_by_user, new_role_line_values_by_user
)
- self.write({
- 'last_role_line_modification': fields.Datetime.now()
- })
+ self.write({"last_role_line_modification": fields.Datetime.now()})
return res
@api.multi
def show_role_lines_history(self): # pragma: no cover
self.ensure_one()
- domain = [('user_id', '=', self.id)]
+ domain = [("user_id", "=", self.id)]
return {
- 'name': _("Roles history"),
- 'type': 'ir.actions.act_window',
- 'view_mode': 'tree,form',
- 'res_model': 'base.user.role.line.history',
- 'domain': domain,
+ "name": _("Roles history"),
+ "type": "ir.actions.act_window",
+ "view_mode": "tree,form",
+ "res_model": "base.user.role.line.history",
+ "domain": domain,
}
diff --git a/base_user_role_history/tests/test_base_user_role_history.py b/base_user_role_history/tests/test_base_user_role_history.py
index 8a289f7a..c712f6b6 100644
--- a/base_user_role_history/tests/test_base_user_role_history.py
+++ b/base_user_role_history/tests/test_base_user_role_history.py
@@ -7,25 +7,20 @@ from odoo.tests.common import SavepointCase
class TestBaseUserRoleHistory(SavepointCase):
-
@classmethod
def setUpClass(cls):
super(TestBaseUserRoleHistory, cls).setUpClass()
# MODELS
- cls.history_line_model = cls.env['base.user.role.line.history']
- cls.role_model = cls.env['res.users.role']
- cls.user_model = cls.env['res.users']
+ cls.history_line_model = cls.env["base.user.role.line.history"]
+ cls.role_model = cls.env["res.users.role"]
+ cls.user_model = cls.env["res.users"]
# INSTANCE
- cls.user_01 = cls.user_model.search([
- ('id', '!=', cls.env.user.id)
- ], limit=1)
- cls.role_01 = cls.role_model.create({
- 'name': "Role test 01",
- })
+ cls.user_01 = cls.user_model.search([("id", "!=", cls.env.user.id)], limit=1)
+ cls.role_01 = cls.role_model.create({"name": "Role test 01"})
def test_write_role_lines_on_user(self):
"""
@@ -43,80 +38,74 @@ class TestBaseUserRoleHistory(SavepointCase):
4) new role history line created with performed_action == 'unlink'
"""
# 1
- history_lines_0 = self.history_line_model.search([
- ('user_id', '=', self.user_01.id)
- ])
+ history_lines_0 = self.history_line_model.search(
+ [("user_id", "=", self.user_01.id)]
+ )
self.assertFalse(history_lines_0)
- self.user_01.write({
- 'role_line_ids': [
- (0, 0, {
- 'role_id': self.role_01.id
- })
- ]
- })
- history_lines_1 = self.history_line_model.search([
- ('user_id', '=', self.user_01.id)
- ])
+ self.user_01.write({"role_line_ids": [(0, 0, {"role_id": self.role_01.id})]})
+ history_lines_1 = self.history_line_model.search(
+ [("user_id", "=", self.user_01.id)]
+ )
self.assertTrue(history_lines_1)
self.assertEqual(len(history_lines_1), 1)
- self.assertEqual(history_lines_1.performed_action, 'add')
+ self.assertEqual(history_lines_1.performed_action, "add")
self.assertFalse(history_lines_1.old_role_id)
self.assertEqual(history_lines_1.new_role_id, self.role_01)
# 2
- self.user_01.write({
- 'role_line_ids': [
- (1, self.user_01.role_line_ids[0].id, {
- 'date_from': date.today(),
- 'date_to': date.today() + timedelta(days=5),
- })
- ]
- })
- history_lines_2 = self.history_line_model.search([
- ('user_id', '=', self.user_01.id),
- ('id', 'not in', history_lines_1.ids)
- ])
+ self.user_01.write(
+ {
+ "role_line_ids": [
+ (
+ 1,
+ self.user_01.role_line_ids[0].id,
+ {
+ "date_from": date.today(),
+ "date_to": date.today() + timedelta(days=5),
+ },
+ )
+ ]
+ }
+ )
+ history_lines_2 = self.history_line_model.search(
+ [("user_id", "=", self.user_01.id), ("id", "not in", history_lines_1.ids)]
+ )
self.assertTrue(history_lines_2)
self.assertEqual(len(history_lines_2), 1)
- self.assertEqual(history_lines_2.performed_action, 'edit')
+ self.assertEqual(history_lines_2.performed_action, "edit")
self.assertEqual(history_lines_2.old_role_id, self.role_01)
self.assertEqual(history_lines_2.new_role_id, self.role_01)
self.assertFalse(history_lines_2.old_date_from)
self.assertEqual(history_lines_2.new_date_from, date.today())
self.assertFalse(history_lines_2.old_date_to)
- self.assertEqual(
- history_lines_2.new_date_to,
- date.today() + timedelta(days=5)
+ self.assertEqual(history_lines_2.new_date_to, date.today() + timedelta(days=5))
+ self.user_01.write(
+ {"role_line_ids": [(1, self.user_01.role_line_ids[0].id, {})]}
+ )
+ history_lines_3 = self.history_line_model.search(
+ [
+ ("user_id", "=", self.user_01.id),
+ ("id", "not in", (history_lines_1 | history_lines_2).ids),
+ ]
)
- self.user_01.write({
- 'role_line_ids': [(1, self.user_01.role_line_ids[0].id, {})]
- })
- history_lines_3 = self.history_line_model.search([
- ('user_id', '=', self.user_01.id),
- ('id', 'not in', (history_lines_1 | history_lines_2).ids)
- ])
self.assertFalse(history_lines_3)
# 4
- self.user_01.write({
- 'role_line_ids': [(2, self.user_01.role_line_ids[0].id, False)],
- })
- history_lines_4 = self.history_line_model.search([
- ('user_id', '=', self.user_01.id),
- ('id', 'not in', (history_lines_1 | history_lines_2).ids)
- ])
+ self.user_01.write(
+ {"role_line_ids": [(2, self.user_01.role_line_ids[0].id, False)]}
+ )
+ history_lines_4 = self.history_line_model.search(
+ [
+ ("user_id", "=", self.user_01.id),
+ ("id", "not in", (history_lines_1 | history_lines_2).ids),
+ ]
+ )
self.assertTrue(history_lines_4)
self.assertEqual(len(history_lines_4), 1)
- self.assertEqual(history_lines_4.performed_action, 'unlink')
+ self.assertEqual(history_lines_4.performed_action, "unlink")
self.assertEqual(history_lines_4.old_role_id, self.role_01)
self.assertFalse(history_lines_4.new_role_id)
- self.assertEqual(
- history_lines_4.old_date_from,
- date.today()
- )
+ self.assertEqual(history_lines_4.old_date_from, date.today())
self.assertFalse(history_lines_4.new_date_from)
- self.assertEqual(
- history_lines_4.old_date_to,
- date.today() + timedelta(days=5)
- )
+ self.assertEqual(history_lines_4.old_date_to, date.today() + timedelta(days=5))
self.assertFalse(history_lines_4.new_date_to)
def test_create_role_lines_on_new_user(self):
@@ -127,21 +116,17 @@ class TestBaseUserRoleHistory(SavepointCase):
Expected results :
- new role history line created with performed_action == 'add'
"""
- new_user = self.user_model.create({
- 'login': 'new_user',
- 'name': 'new_user',
- 'role_line_ids': [
- (0, 0, {
- 'role_id': self.role_01.id,
- })
- ]
- })
- history_lines = self.history_line_model.search([
- ('user_id', '=', new_user.id)
- ])
+ new_user = self.user_model.create(
+ {
+ "login": "new_user",
+ "name": "new_user",
+ "role_line_ids": [(0, 0, {"role_id": self.role_01.id})],
+ }
+ )
+ history_lines = self.history_line_model.search([("user_id", "=", new_user.id)])
self.assertTrue(history_lines)
self.assertEqual(len(history_lines), 1)
- self.assertEqual(history_lines.performed_action, 'add')
+ self.assertEqual(history_lines.performed_action, "add")
def test_no_create_role_lines_on_new_user(self):
"""
@@ -151,11 +136,6 @@ class TestBaseUserRoleHistory(SavepointCase):
Expected results :
- no role history line created
"""
- new_user = self.user_model.create({
- 'login': 'new_user',
- 'name': 'new_user',
- })
- history_lines = self.history_line_model.search([
- ('user_id', '=', new_user.id)
- ])
+ new_user = self.user_model.create({"login": "new_user", "name": "new_user"})
+ history_lines = self.history_line_model.search([("user_id", "=", new_user.id)])
self.assertFalse(history_lines)
From db37389d3ca5da3d558d4cebe61b21c3bcd4a603 Mon Sep 17 00:00:00 2001
From: Benoit Aimont
Date: Wed, 18 Dec 2019 10:28:08 +0100
Subject: [PATCH 04/12] [MIG] base_user_role_history: Migration to 13.0
---
base_user_role_history/__manifest__.py | 5 +-
.../i18n/base_user_role_history.pot | 17 ++---
base_user_role_history/i18n/fr.po | 71 +++++++++----------
base_user_role_history/i18n/fr_BE.po | 71 +++++++++----------
.../models/base_user_role_line_history.py | 4 +-
base_user_role_history/models/res_users.py | 3 -
6 files changed, 83 insertions(+), 88 deletions(-)
diff --git a/base_user_role_history/__manifest__.py b/base_user_role_history/__manifest__.py
index f5fe5eba..6b74e8fa 100644
--- a/base_user_role_history/__manifest__.py
+++ b/base_user_role_history/__manifest__.py
@@ -5,16 +5,15 @@
"name": "Base User Role History",
"summary": """
This module allows to track the changes on users roles.""",
- "version": "12.0.1.0.0",
+ "version": "13.0.1.0.0",
"license": "AGPL-3",
"author": "ACSONE SA/NV, " "Odoo Community Association (OCA)",
- "website": "https://github.com/OCA/server-tools",
+ "website": "https://github.com/OCA/server-backend",
"depends": [
# Odoo
"mail",
# OCA
"base_user_role",
- "base_suspend_security",
],
"data": [
"security/base_user_role_line_history.xml",
diff --git a/base_user_role_history/i18n/base_user_role_history.pot b/base_user_role_history/i18n/base_user_role_history.pot
index c8299c7f..0f006e86 100644
--- a/base_user_role_history/i18n/base_user_role_history.pot
+++ b/base_user_role_history/i18n/base_user_role_history.pot
@@ -1,12 +1,14 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
-# * base_user_role_history
+# * base_user_role_history
#
msgid ""
msgstr ""
-"Project-Id-Version: Odoo Server 12.0\n"
+"Project-Id-Version: Odoo Server 13.0\n"
"Report-Msgid-Bugs-To: \n"
-"Last-Translator: <>\n"
+"POT-Creation-Date: 2019-12-18 11:07+0000\n"
+"PO-Revision-Date: 2019-12-18 11:07+0000\n"
+"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -35,7 +37,7 @@ msgid "Active before edit"
msgstr ""
#. module: base_user_role_history
-#: selection:base.user.role.line.history,performed_action:0
+#: model:ir.model.fields.selection,name:base_user_role_history.selection__base_user_role_line_history__performed_action__add
msgid "Add"
msgstr ""
@@ -56,7 +58,7 @@ msgid "Date and time of edition"
msgstr ""
#. module: base_user_role_history
-#: selection:base.user.role.line.history,performed_action:0
+#: model:ir.model.fields.selection,name:base_user_role_history.selection__base_user_role_line_history__performed_action__unlink
msgid "Delete"
msgstr ""
@@ -66,7 +68,7 @@ msgid "Display Name"
msgstr ""
#. module: base_user_role_history
-#: selection:base.user.role.line.history,performed_action:0
+#: model:ir.model.fields.selection,name:base_user_role_history.selection__base_user_role_line_history__performed_action__edit
msgid "Edit"
msgstr ""
@@ -149,7 +151,7 @@ msgid "Old start date"
msgstr ""
#. module: base_user_role_history
-#: code:addons/base_user_role_history/models/res_users.py:70
+#: code:addons/base_user_role_history/models/res_users.py:0
#: model_terms:ir.ui.view,arch_db:base_user_role_history.res_users_form_view
#, python-format
msgid "Roles history"
@@ -164,4 +166,3 @@ msgstr ""
#: model:ir.model,name:base_user_role_history.model_res_users
msgid "Users"
msgstr ""
-
diff --git a/base_user_role_history/i18n/fr.po b/base_user_role_history/i18n/fr.po
index 39fbe849..395904e1 100644
--- a/base_user_role_history/i18n/fr.po
+++ b/base_user_role_history/i18n/fr.po
@@ -1,12 +1,12 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
-# * base_user_role_history
+# * base_user_role_history
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-09-30 11:51+0000\n"
+"POT-Creation-Date: 2019-12-18 11:07+0000\n"
"PO-Revision-Date: 2019-09-30 11:51+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
@@ -17,75 +17,75 @@ msgstr ""
"Plural-Forms: \n"
#. module: base_user_role_history
-#: model:ir.ui.view,arch_db:base_user_role_history.res_users_form_view
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.res_users_form_view
msgid "Last update of roles"
msgstr "Dernière modification des rôles"
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_performed_action
-#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__performed_action
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
msgid "Action"
msgstr "Action"
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_is_enabled
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__new_is_enabled
msgid "Active after edit"
msgstr "Actif après édition"
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_is_enabled
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__old_is_enabled
msgid "Active before edit"
msgstr "Actif avant édition"
#. module: base_user_role_history
-#: selection:base.user.role.line.history,performed_action:0
+#: model:ir.model.fields.selection,name:base_user_role_history.selection__base_user_role_line_history__performed_action__add
msgid "Add"
msgstr "Ajouter"
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_create_uid
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__create_uid
msgid "Created by"
msgstr "Créé par"
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_create_date
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__create_date
msgid "Created on"
msgstr "Créé le"
#. module: base_user_role_history
-#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view
-#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view
msgid "Date and time of edition"
msgstr "Date et heure de modification"
#. module: base_user_role_history
-#: selection:base.user.role.line.history,performed_action:0
+#: model:ir.model.fields.selection,name:base_user_role_history.selection__base_user_role_line_history__performed_action__unlink
msgid "Delete"
msgstr "Supprimer"
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_display_name
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__display_name
msgid "Display Name"
msgstr "Nom affiché"
#. module: base_user_role_history
-#: selection:base.user.role.line.history,performed_action:0
+#: model:ir.model.fields.selection,name:base_user_role_history.selection__base_user_role_line_history__performed_action__edit
msgid "Edit"
msgstr "Modifier"
#. module: base_user_role_history
-#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view
msgid "Edited user"
msgstr "Utilisateur modifié"
#. module: base_user_role_history
-#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view
-#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view
msgid "Editor"
msgstr "Utilisateur modificateur"
#. module: base_user_role_history
-#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
msgid "Group By"
msgstr "Regrouper par"
@@ -95,71 +95,71 @@ msgid "History of user roles"
msgstr "Historique des rôles de l'utilisateur"
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_id
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__id
msgid "ID"
msgstr "ID"
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history___last_update
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history____last_update
msgid "Last Modified on"
msgstr "Dernière modification le"
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_write_uid
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__write_uid
msgid "Last Updated by"
msgstr "Mis à jour par"
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_write_date
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__write_date
msgid "Last Updated on"
msgstr "Mis à jour le"
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_res_users_last_role_line_modification
+#: model:ir.model.fields,field_description:base_user_role_history.field_res_users__last_role_line_modification
msgid "Last roles modification"
msgstr "Dernière modification des rôles"
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_date_to
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__new_date_to
msgid "New end date"
msgstr "Nouvelle date de fin"
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_role_id
-#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__new_role_id
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
msgid "New role"
msgstr "Nouveau rôle"
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_date_from
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__new_date_from
msgid "New start date"
msgstr "Nouvelle date de début"
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_date_to
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__old_date_to
msgid "Old end date"
msgstr "Ancienne date de fin"
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_role_id
-#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__old_role_id
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
msgid "Old role"
msgstr "Ancien rôle"
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_date_from
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__old_date_from
msgid "Old start date"
msgstr "Ancienne date de début"
#. module: base_user_role_history
-#: code:addons/base_user_role_history/models/res_users.py:70
-#: model:ir.ui.view,arch_db:base_user_role_history.res_users_form_view
+#: code:addons/base_user_role_history/models/res_users.py:0
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.res_users_form_view
#, python-format
msgid "Roles history"
msgstr "Historique des rôles"
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_user_id
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__user_id
msgid "User"
msgstr "Utilisateur"
@@ -167,4 +167,3 @@ msgstr "Utilisateur"
#: model:ir.model,name:base_user_role_history.model_res_users
msgid "Users"
msgstr "Utilisateurs"
-
diff --git a/base_user_role_history/i18n/fr_BE.po b/base_user_role_history/i18n/fr_BE.po
index 457621b4..e108d9c7 100644
--- a/base_user_role_history/i18n/fr_BE.po
+++ b/base_user_role_history/i18n/fr_BE.po
@@ -1,12 +1,12 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
-# * base_user_role_history
+# * base_user_role_history
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-09-30 11:50+0000\n"
+"POT-Creation-Date: 2019-12-18 11:07+0000\n"
"PO-Revision-Date: 2019-09-30 11:50+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
@@ -17,75 +17,75 @@ msgstr ""
"Plural-Forms: \n"
#. module: base_user_role_history
-#: model:ir.ui.view,arch_db:base_user_role_history.res_users_form_view
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.res_users_form_view
msgid "Last update of roles"
msgstr "Dernière modification des rôles"
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_performed_action
-#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__performed_action
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
msgid "Action"
msgstr "Action"
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_is_enabled
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__new_is_enabled
msgid "Active after edit"
msgstr "Actif après édition"
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_is_enabled
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__old_is_enabled
msgid "Active before edit"
msgstr "Actif avant édition"
#. module: base_user_role_history
-#: selection:base.user.role.line.history,performed_action:0
+#: model:ir.model.fields.selection,name:base_user_role_history.selection__base_user_role_line_history__performed_action__add
msgid "Add"
msgstr "Ajouter"
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_create_uid
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__create_uid
msgid "Created by"
msgstr "Créé par"
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_create_date
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__create_date
msgid "Created on"
msgstr "Créé le"
#. module: base_user_role_history
-#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view
-#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view
msgid "Date and time of edition"
msgstr "Date et heure de modification"
#. module: base_user_role_history
-#: selection:base.user.role.line.history,performed_action:0
+#: model:ir.model.fields.selection,name:base_user_role_history.selection__base_user_role_line_history__performed_action__unlink
msgid "Delete"
msgstr "Supprimer"
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_display_name
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__display_name
msgid "Display Name"
msgstr "Nom affiché"
#. module: base_user_role_history
-#: selection:base.user.role.line.history,performed_action:0
+#: model:ir.model.fields.selection,name:base_user_role_history.selection__base_user_role_line_history__performed_action__edit
msgid "Edit"
msgstr "Modifier"
#. module: base_user_role_history
-#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view
msgid "Edited user"
msgstr "Utilisateur modifié"
#. module: base_user_role_history
-#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view
-#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view
msgid "Editor"
msgstr "Utilisateur modificateur"
#. module: base_user_role_history
-#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
msgid "Group By"
msgstr "Regrouper par"
@@ -95,71 +95,71 @@ msgid "History of user roles"
msgstr "Historique des rôles de l'utilisateur"
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_id
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__id
msgid "ID"
msgstr "ID"
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history___last_update
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history____last_update
msgid "Last Modified on"
msgstr "Dernière modification le"
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_write_uid
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__write_uid
msgid "Last Updated by"
msgstr "Derniere fois mis à jour par"
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_write_date
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__write_date
msgid "Last Updated on"
msgstr "Dernière mis à jour le"
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_res_users_last_role_line_modification
+#: model:ir.model.fields,field_description:base_user_role_history.field_res_users__last_role_line_modification
msgid "Last roles modification"
msgstr "Dernière modification des rôles"
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_date_to
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__new_date_to
msgid "New end date"
msgstr "Nouvelle date de fin"
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_role_id
-#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__new_role_id
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
msgid "New role"
msgstr "Nouveau rôle"
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_new_date_from
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__new_date_from
msgid "New start date"
msgstr "Nouvelle date de début"
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_date_to
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__old_date_to
msgid "Old end date"
msgstr "Ancienne date de fin"
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_role_id
-#: model:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__old_role_id
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
msgid "Old role"
msgstr "Ancien rôle"
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_old_date_from
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__old_date_from
msgid "Old start date"
msgstr "Ancienne date de début"
#. module: base_user_role_history
-#: code:addons/base_user_role_history/models/res_users.py:70
-#: model:ir.ui.view,arch_db:base_user_role_history.res_users_form_view
+#: code:addons/base_user_role_history/models/res_users.py:0
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.res_users_form_view
#, python-format
msgid "Roles history"
msgstr "Historique des rôles"
#. module: base_user_role_history
-#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history_user_id
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__user_id
msgid "User"
msgstr "Utilisateur"
@@ -167,4 +167,3 @@ msgstr "Utilisateur"
#: model:ir.model,name:base_user_role_history.model_res_users
msgid "Users"
msgstr "Utilisateurs"
-
diff --git a/base_user_role_history/models/base_user_role_line_history.py b/base_user_role_history/models/base_user_role_line_history.py
index 86da3836..4e2e85d1 100644
--- a/base_user_role_history/models/base_user_role_line_history.py
+++ b/base_user_role_history/models/base_user_role_line_history.py
@@ -112,7 +112,7 @@ class BaseUserRoleLineHistory(models.Model):
role_history_line_vals_by_role_line = self._prepare_create_from_vals(
old_role_line_values_by_user, new_role_line_values_by_user
)
- # Create the history lines with suspend security
+ # Create the history lines with sudo
# (nobody has the create right)
for role_history_vals in role_history_line_vals_by_role_line.values():
- self.suspend_security().create(role_history_vals)
+ self.sudo().create(role_history_vals)
diff --git a/base_user_role_history/models/res_users.py b/base_user_role_history/models/res_users.py
index 248f8bf7..6ff60b4c 100644
--- a/base_user_role_history/models/res_users.py
+++ b/base_user_role_history/models/res_users.py
@@ -21,7 +21,6 @@ class ResUsers(models.Model):
"is_enabled": role_line.is_enabled,
}
- @api.multi
def _get_role_line_values_by_user(self):
role_line_values_by_user = {}
for rec in self:
@@ -45,7 +44,6 @@ class ResUsers(models.Model):
res.last_role_line_modification = fields.Datetime.now()
return res
- @api.multi
def write(self, vals):
if "role_line_ids" not in vals:
return super().write(vals)
@@ -58,7 +56,6 @@ class ResUsers(models.Model):
self.write({"last_role_line_modification": fields.Datetime.now()})
return res
- @api.multi
def show_role_lines_history(self): # pragma: no cover
self.ensure_one()
domain = [("user_id", "=", self.id)]
From 573be62a814ea759eecfd5145513377e8403ad43 Mon Sep 17 00:00:00 2001
From: Benoit Aimont
Date: Fri, 12 Jun 2020 09:36:34 +0200
Subject: [PATCH 05/12] [FIX] base_user_role_history - prettier xml plugin
---
base_user_role_history/README.rst | 10 +-
.../i18n/base_user_role_history.pot | 2 -
.../security/base_user_role_line_history.xml | 17 ++-
.../static/description/index.html | 6 +-
.../views/base_user_role_line_history.xml | 111 +++++++++---------
base_user_role_history/views/res_users.xml | 25 ++--
6 files changed, 85 insertions(+), 86 deletions(-)
diff --git a/base_user_role_history/README.rst b/base_user_role_history/README.rst
index 08f2e118..8d59667a 100644
--- a/base_user_role_history/README.rst
+++ b/base_user_role_history/README.rst
@@ -14,13 +14,13 @@ Base User Role History
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--backend-lightgray.png?logo=github
- :target: https://github.com/OCA/server-backend/tree/12.0/base_user_role_history
+ :target: https://github.com/OCA/server-backend/tree/13.0/base_user_role_history
:alt: OCA/server-backend
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
- :target: https://translation.odoo-community.org/projects/server-backend-12-0/server-backend-12-0-base_user_role_history
+ :target: https://translation.odoo-community.org/projects/server-backend-13-0/server-backend-13-0-base_user_role_history
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
- :target: https://runbot.odoo-community.org/runbot/253/12.0
+ :target: https://runbot.odoo-community.org/runbot/253/13.0
:alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge5|
@@ -53,7 +53,7 @@ Bug Tracker
Bugs are tracked on `GitHub Issues `_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
-`feedback `_.
+`feedback `_.
Do not contact contributors directly about support or help with technical issues.
@@ -92,6 +92,6 @@ Current `maintainer `__:
|maintainer-ThomasBinsfeld|
-This module is part of the `OCA/server-backend `_ project on GitHub.
+This module is part of the `OCA/server-backend `_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/base_user_role_history/i18n/base_user_role_history.pot b/base_user_role_history/i18n/base_user_role_history.pot
index 0f006e86..a155070b 100644
--- a/base_user_role_history/i18n/base_user_role_history.pot
+++ b/base_user_role_history/i18n/base_user_role_history.pot
@@ -6,8 +6,6 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 13.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-12-18 11:07+0000\n"
-"PO-Revision-Date: 2019-12-18 11:07+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
diff --git a/base_user_role_history/security/base_user_role_line_history.xml b/base_user_role_history/security/base_user_role_line_history.xml
index c99c1365..5f339e2d 100644
--- a/base_user_role_history/security/base_user_role_line_history.xml
+++ b/base_user_role_history/security/base_user_role_line_history.xml
@@ -1,17 +1,14 @@
-
+
-
-
base.user.role.line.history access user
-
-
-
-
-
-
+
+
+
+
+
+
-
diff --git a/base_user_role_history/static/description/index.html b/base_user_role_history/static/description/index.html
index e41f5790..5a41e7b1 100644
--- a/base_user_role_history/static/description/index.html
+++ b/base_user_role_history/static/description/index.html
@@ -367,7 +367,7 @@ ul.auto-toc {
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-
+
This addon provides history for roles modifications on users.
Each time a role is added/updated/unlinked on a user, a new role history line
is created mentioning what changes were made and who made them.
@@ -401,7 +401,7 @@ a role deletion, module could be upgraded.
Bugs are tracked on GitHub Issues.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
-feedback.
-
From 659a91bae758108330ceb1a5e95fd67aecceda1b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ana=20Su=C3=A1rez?=
Date: Tue, 16 Mar 2021 16:17:16 +0000
Subject: [PATCH 06/12] Added translation using Weblate (Spanish)
---
base_user_role_history/i18n/es.po | 169 ++++++++++++++++++++++++++++++
1 file changed, 169 insertions(+)
create mode 100644 base_user_role_history/i18n/es.po
diff --git a/base_user_role_history/i18n/es.po b/base_user_role_history/i18n/es.po
new file mode 100644
index 00000000..9942b679
--- /dev/null
+++ b/base_user_role_history/i18n/es.po
@@ -0,0 +1,169 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * base_user_role_history
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 13.0\n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: 2021-03-16 18:45+0000\n"
+"Last-Translator: Ana Suárez \n"
+"Language-Team: none\n"
+"Language: es\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 4.3.2\n"
+
+#. module: base_user_role_history
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.res_users_form_view
+msgid "Last update of roles"
+msgstr "Última actualización de roles"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__performed_action
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
+msgid "Action"
+msgstr "Acción"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__new_is_enabled
+msgid "Active after edit"
+msgstr "Activo después de editar"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__old_is_enabled
+msgid "Active before edit"
+msgstr "Activo antes de editar"
+
+#. module: base_user_role_history
+#: model:ir.model.fields.selection,name:base_user_role_history.selection__base_user_role_line_history__performed_action__add
+msgid "Add"
+msgstr "Añadir"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__create_uid
+msgid "Created by"
+msgstr "Creado por"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__create_date
+msgid "Created on"
+msgstr "Creado el"
+
+#. module: base_user_role_history
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view
+msgid "Date and time of edition"
+msgstr "Fecha y hora de edición"
+
+#. module: base_user_role_history
+#: model:ir.model.fields.selection,name:base_user_role_history.selection__base_user_role_line_history__performed_action__unlink
+msgid "Delete"
+msgstr "Eliminar"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__display_name
+msgid "Display Name"
+msgstr "Nombre mostrado"
+
+#. module: base_user_role_history
+#: model:ir.model.fields.selection,name:base_user_role_history.selection__base_user_role_line_history__performed_action__edit
+msgid "Edit"
+msgstr "Editar"
+
+#. module: base_user_role_history
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view
+msgid "Edited user"
+msgstr "Usuario editado"
+
+#. module: base_user_role_history
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_form_view
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_tree_view
+msgid "Editor"
+msgstr "Editor"
+
+#. module: base_user_role_history
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
+msgid "Group By"
+msgstr "Agrupar por"
+
+#. module: base_user_role_history
+#: model:ir.model,name:base_user_role_history.model_base_user_role_line_history
+msgid "History of user roles"
+msgstr "Historial de roles"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__id
+msgid "ID"
+msgstr "ID"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history____last_update
+msgid "Last Modified on"
+msgstr "Última modificación el"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__write_uid
+msgid "Last Updated by"
+msgstr "Última actualización por"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__write_date
+msgid "Last Updated on"
+msgstr "Última actualización el"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_res_users__last_role_line_modification
+msgid "Last roles modification"
+msgstr "Última modificación roles"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__new_date_to
+msgid "New end date"
+msgstr "Nueva fecha fin"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__new_role_id
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
+msgid "New role"
+msgstr "Nuevo rol"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__new_date_from
+msgid "New start date"
+msgstr "Nueva fecha inicio"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__old_date_to
+msgid "Old end date"
+msgstr "Antigua fecha fin"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__old_role_id
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.base_user_role_line_history_search_view
+msgid "Old role"
+msgstr "Antiguo rol"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__old_date_from
+msgid "Old start date"
+msgstr "Antigua fecha inicio"
+
+#. module: base_user_role_history
+#: code:addons/base_user_role_history/models/res_users.py:0
+#: model_terms:ir.ui.view,arch_db:base_user_role_history.res_users_form_view
+#, python-format
+msgid "Roles history"
+msgstr "Historial Roles"
+
+#. module: base_user_role_history
+#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__user_id
+msgid "User"
+msgstr "Usuario"
+
+#. module: base_user_role_history
+#: model:ir.model,name:base_user_role_history.model_res_users
+msgid "Users"
+msgstr "Usuarios"
From bacb64c9ae52de75df1bec64390560494fed9976 Mon Sep 17 00:00:00 2001
From: Arnaud Pineux
Date: Tue, 16 Aug 2022 16:27:55 +0200
Subject: [PATCH 07/12] [MIG] base_user_role_history: Migration to 16.0
---
base_user_role_history/README.rst | 10 +++++-----
base_user_role_history/__manifest__.py | 2 +-
.../i18n/base_user_role_history.pot | 9 +++------
base_user_role_history/i18n/es.po | 2 +-
.../models/base_user_role_line_history.py | 3 +--
base_user_role_history/models/res_users.py | 17 +++++++++++------
.../static/description/index.html | 6 +++---
.../tests/test_base_user_role_history.py | 6 +++---
8 files changed, 28 insertions(+), 27 deletions(-)
diff --git a/base_user_role_history/README.rst b/base_user_role_history/README.rst
index 8d59667a..196bf29d 100644
--- a/base_user_role_history/README.rst
+++ b/base_user_role_history/README.rst
@@ -14,13 +14,13 @@ Base User Role History
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--backend-lightgray.png?logo=github
- :target: https://github.com/OCA/server-backend/tree/13.0/base_user_role_history
+ :target: https://github.com/OCA/server-backend/tree/16.0/base_user_role_history
:alt: OCA/server-backend
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
- :target: https://translation.odoo-community.org/projects/server-backend-13-0/server-backend-13-0-base_user_role_history
+ :target: https://translation.odoo-community.org/projects/server-backend-16-0/server-backend-16-0-base_user_role_history
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
- :target: https://runbot.odoo-community.org/runbot/253/13.0
+ :target: https://runbot.odoo-community.org/runbot/253/16.0
:alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge5|
@@ -53,7 +53,7 @@ Bug Tracker
Bugs are tracked on `GitHub Issues `_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
-`feedback `_.
+`feedback `_.
Do not contact contributors directly about support or help with technical issues.
@@ -92,6 +92,6 @@ Current `maintainer `__:
|maintainer-ThomasBinsfeld|
-This module is part of the `OCA/server-backend `_ project on GitHub.
+This module is part of the `OCA/server-backend `_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/base_user_role_history/__manifest__.py b/base_user_role_history/__manifest__.py
index 6b74e8fa..218388d7 100644
--- a/base_user_role_history/__manifest__.py
+++ b/base_user_role_history/__manifest__.py
@@ -5,7 +5,7 @@
"name": "Base User Role History",
"summary": """
This module allows to track the changes on users roles.""",
- "version": "13.0.1.0.0",
+ "version": "16.0.1.0.0",
"license": "AGPL-3",
"author": "ACSONE SA/NV, " "Odoo Community Association (OCA)",
"website": "https://github.com/OCA/server-backend",
diff --git a/base_user_role_history/i18n/base_user_role_history.pot b/base_user_role_history/i18n/base_user_role_history.pot
index a155070b..a8bd6d6f 100644
--- a/base_user_role_history/i18n/base_user_role_history.pot
+++ b/base_user_role_history/i18n/base_user_role_history.pot
@@ -4,7 +4,7 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Odoo Server 13.0\n"
+"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -149,6 +149,7 @@ msgid "Old start date"
msgstr ""
#. module: base_user_role_history
+#. odoo-python
#: code:addons/base_user_role_history/models/res_users.py:0
#: model_terms:ir.ui.view,arch_db:base_user_role_history.res_users_form_view
#, python-format
@@ -156,11 +157,7 @@ msgid "Roles history"
msgstr ""
#. module: base_user_role_history
+#: model:ir.model,name:base_user_role_history.model_res_users
#: model:ir.model.fields,field_description:base_user_role_history.field_base_user_role_line_history__user_id
msgid "User"
msgstr ""
-
-#. module: base_user_role_history
-#: model:ir.model,name:base_user_role_history.model_res_users
-msgid "Users"
-msgstr ""
diff --git a/base_user_role_history/i18n/es.po b/base_user_role_history/i18n/es.po
index 9942b679..a5e159dc 100644
--- a/base_user_role_history/i18n/es.po
+++ b/base_user_role_history/i18n/es.po
@@ -4,7 +4,7 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Odoo Server 13.0\n"
+"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2021-03-16 18:45+0000\n"
"Last-Translator: Ana Suárez \n"
diff --git a/base_user_role_history/models/base_user_role_line_history.py b/base_user_role_history/models/base_user_role_line_history.py
index 4e2e85d1..328fe5bf 100644
--- a/base_user_role_history/models/base_user_role_line_history.py
+++ b/base_user_role_history/models/base_user_role_line_history.py
@@ -114,5 +114,4 @@ class BaseUserRoleLineHistory(models.Model):
)
# Create the history lines with sudo
# (nobody has the create right)
- for role_history_vals in role_history_line_vals_by_role_line.values():
- self.sudo().create(role_history_vals)
+ self.sudo().create(list(role_history_line_vals_by_role_line.values()))
diff --git a/base_user_role_history/models/res_users.py b/base_user_role_history/models/res_users.py
index 6ff60b4c..2a408287 100644
--- a/base_user_role_history/models/res_users.py
+++ b/base_user_role_history/models/res_users.py
@@ -34,26 +34,31 @@ class ResUsers(models.Model):
@api.model_create_multi
def create(self, vals_list):
res = super().create(vals_list)
- for vals in vals_list:
- if "role_line_ids" not in vals:
- return res
+ if all("role_line_ids" not in vals for vals in vals_list):
+ return res
new_role_line_values_by_user = res._get_role_line_values_by_user()
+ new_role_line_to_create = {}
+ users = self.browse()
+ for user, lines in new_role_line_values_by_user.items():
+ if lines:
+ new_role_line_to_create[user] = lines
+ user |= user
self.env["base.user.role.line.history"].create_from_vals(
- {}, new_role_line_values_by_user
+ {}, new_role_line_to_create
)
- res.last_role_line_modification = fields.Datetime.now()
+ users.last_role_line_modification = fields.Datetime.now()
return res
def write(self, vals):
if "role_line_ids" not in vals:
return super().write(vals)
old_role_line_values_by_user = self._get_role_line_values_by_user()
+ vals["last_role_line_modification"] = fields.Datetime.now()
res = super().write(vals)
new_role_line_values_by_user = self._get_role_line_values_by_user()
self.env["base.user.role.line.history"].create_from_vals(
old_role_line_values_by_user, new_role_line_values_by_user
)
- self.write({"last_role_line_modification": fields.Datetime.now()})
return res
def show_role_lines_history(self): # pragma: no cover
diff --git a/base_user_role_history/static/description/index.html b/base_user_role_history/static/description/index.html
index 5a41e7b1..20d074fe 100644
--- a/base_user_role_history/static/description/index.html
+++ b/base_user_role_history/static/description/index.html
@@ -367,7 +367,7 @@ ul.auto-toc {
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-
+
This addon provides history for roles modifications on users.
Each time a role is added/updated/unlinked on a user, a new role history line
is created mentioning what changes were made and who made them.
@@ -401,7 +401,7 @@ a role deletion, module could be upgraded.
Bugs are tracked on GitHub Issues.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
-feedback.