[IMP] base_user_role_history: black, isort

This commit is contained in:
Benoit Aimont
2019-12-18 10:05:58 +01:00
parent 511523527a
commit dc39a014fa
4 changed files with 148 additions and 201 deletions

View File

@@ -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

View File

@@ -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,
}