Files
SKEEN-Proyecto/odoo-addons/skeen_whatsapp/models/config_audit.py

61 lines
2.4 KiB
Python

# -*- coding: utf-8 -*-
from odoo import models, fields, api
class SkeenConfigAudit(models.Model):
"""Bitácora de cambios en la configuración sensible de la clínica.
Se escribe desde los endpoints de configuración del frontend (comisiones,
tipo de cambio, metas, horarios, roles/permisos, usuarios, catálogos) y
registra quién, qué entidad, qué campo y los valores anterior/nuevo.
"""
_name = 'skeen.config.audit'
_description = 'Auditoría de configuración SKEEN'
_order = 'date desc, id desc'
date = fields.Datetime(string='Fecha', default=fields.Datetime.now, index=True)
user_login = fields.Char(string='Usuario', index=True)
user_name = fields.Char(string='Nombre del usuario')
user_role = fields.Char(string='Rol')
module = fields.Selection([
('comisiones', 'Comisiones'),
('tipo_cambio', 'Tipo de cambio'),
('metas', 'Metas'),
('horarios', 'Horarios'),
('roles', 'Roles y permisos'),
('usuarios', 'Usuarios'),
('catalogos', 'Catálogos'),
('clinica', 'Clínica'),
], string='Módulo', required=True, index=True)
entity = fields.Char(string='Entidad', index=True,
help='Identificador de lo modificado (p. ej. doctor:24, usuario:5)')
entity_label = fields.Char(string='Descripción')
field = fields.Char(string='Campo')
old_value = fields.Text(string='Valor anterior')
new_value = fields.Text(string='Valor nuevo')
notes = fields.Char(string='Nota')
@api.model
def log_change(self, module, entity, field, old_value=None, new_value=None,
entity_label='', notes='', user=None):
"""Registra un cambio. `user` es el skeen.frontend.user que lo hizo."""
vals = {
'module': module,
'entity': entity or '',
'entity_label': entity_label or '',
'field': field or '',
'old_value': '' if old_value is None else str(old_value),
'new_value': '' if new_value is None else str(new_value),
'notes': notes or '',
}
if user is not None:
vals.update({
'user_login': getattr(user, 'login', '') or '',
'user_name': getattr(user, 'name', '') or '',
'user_role': getattr(user, 'role', '') or '',
})
return self.sudo().create(vals)