From 8d85d8c3baa07d6bf69e19de2e9a39527804bb9b Mon Sep 17 00:00:00 2001 From: Luis Ernesto Portillo Zaldivar Date: Wed, 16 Jul 2025 08:04:31 -0600 Subject: [PATCH] =?UTF-8?q?feat(#60):=20Agregar=20asignaci=C3=B3n=20autom?= =?UTF-8?q?=C3=A1tica=20de=20admin=20al=20grupo=20de=20laboratorio?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Crear script assign_admin_to_lab_group.py - Integrar en proceso de inicializaci贸n - Asegurar que admin tenga acceso completo al men煤 de configuraci贸n 馃 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- init_odoo.py | 33 ++++++++++++++++++++ scripts/assign_admin_to_lab_group.py | 46 ++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100644 scripts/assign_admin_to_lab_group.py diff --git a/init_odoo.py b/init_odoo.py index a10b3c9..db77305 100644 --- a/init_odoo.py +++ b/init_odoo.py @@ -189,6 +189,39 @@ EOF else: print(f"Advertencia: Fallo al actualizar logo de empresa (c贸digo {result.returncode})") + # --- Asignar admin al grupo de Administrador de Laboratorio --- + print("\nAsignando usuario admin al grupo de Administrador de Laboratorio...") + sys.stdout.flush() + + if os.path.exists("/app/scripts/assign_admin_to_lab_group.py"): + with open("/app/scripts/assign_admin_to_lab_group.py", "r") as f: + admin_group_script = f.read() + + assign_admin_command = f""" + odoo shell -c {ODOO_CONF} -d {DB_NAME} <<'EOF' +{admin_group_script} +EOF + """ + + result = subprocess.run( + assign_admin_command, + shell=True, + capture_output=True, + text=True, + check=False + ) + + print("--- Assign Admin to Lab Group stdout ---") + print(result.stdout) + print("--- Assign Admin to Lab Group stderr ---") + print(result.stderr) + sys.stdout.flush() + + if result.returncode == 0: + print("Usuario admin asignado exitosamente al grupo de Administrador de Laboratorio.") + else: + print(f"Advertencia: Fallo al asignar admin al grupo (c贸digo {result.returncode})") + # --- Validaci贸n final del logo --- print("\nValidando estado final del logo y nombre...") sys.stdout.flush() diff --git a/scripts/assign_admin_to_lab_group.py b/scripts/assign_admin_to_lab_group.py new file mode 100644 index 0000000..cc5fb50 --- /dev/null +++ b/scripts/assign_admin_to_lab_group.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +Script para asignar el usuario admin al grupo de Administrador de Laboratorio +""" + +import logging + +# Configurar logging +logging.basicConfig(level=logging.INFO) +_logger = logging.getLogger(__name__) + +try: + # Buscar el usuario admin + admin_user = env['res.users'].search([('login', '=', 'admin')], limit=1) + if not admin_user: + _logger.error("No se encontr贸 el usuario admin") + exit(1) + + # Buscar el grupo de Administrador de Laboratorio + try: + lab_admin_group = env.ref('lims_management.group_lims_admin') + except ValueError: + _logger.error("No se encontr贸 el grupo de Administrador de Laboratorio") + exit(1) + + # Verificar si el usuario ya est谩 en el grupo + if lab_admin_group in admin_user.groups_id: + _logger.info("El usuario admin ya est谩 en el grupo de Administrador de Laboratorio") + else: + # Agregar el usuario al grupo + admin_user.write({ + 'groups_id': [(4, lab_admin_group.id)] + }) + _logger.info("Usuario admin agregado exitosamente al grupo de Administrador de Laboratorio") + + # Confirmar los grupos del usuario + group_names = ', '.join(admin_user.groups_id.mapped('name')) + _logger.info(f"Grupos del usuario admin: {group_names}") + + env.cr.commit() + _logger.info("Cambios guardados exitosamente") + +except Exception as e: + _logger.error(f"Error al asignar usuario admin al grupo: {str(e)}") + exit(1) \ No newline at end of file