mirror of
https://github.com/OCA/server-backend.git
synced 2025-02-18 09:52:42 +02:00
fixup! Logic and permissions fixes, new demo module, changes JS-side that reloads in a cleaner way on profile change fixup! removed unused imports, beautified JS fixup! Test coverage increase [FIX] Use write instead of assignment operator on create function: assignment on multiple records raises error fixup! Removed leftover copyright Apply suggestions from code review Co-Authored-By: David Beal <david.beal@akretion.com>
76 lines
2.5 KiB
Python
76 lines
2.5 KiB
Python
# Copyright 2019 ACSONE SA/NV
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
|
|
from odoo 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': role_line.date_from,
|
|
'date_to': 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_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(
|
|
{},
|
|
new_role_line_values_by_user
|
|
)
|
|
res.write({'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)
|
|
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.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,
|
|
}
|