61 lines
2.4 KiB
Python
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)
|