- Crear hooks.py con post_init_hook que crea permisos programáticamente - Eliminar security/ directory (XML/CSV fallan en importación ZIP) - Los permisos se crean después de que los modelos estén registrados Esto garantiza que los permisos se creen correctamente independientemente del método de instalación (ZIP o addons path). Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
60 lines
1.9 KiB
Python
60 lines
1.9 KiB
Python
from odoo import api, SUPERUSER_ID
|
|
|
|
|
|
def post_init_hook(env):
|
|
"""Crear permisos de acceso después de instalar el módulo."""
|
|
_create_access_rights(env)
|
|
|
|
|
|
def _create_access_rights(env):
|
|
"""Crear los registros ir.model.access para los modelos del módulo."""
|
|
Access = env['ir.model.access'].sudo()
|
|
|
|
# Definir permisos: (model_name, group_xmlid, read, write, create, unlink)
|
|
permissions = [
|
|
# WhatsApp Account
|
|
('whatsapp.account', 'base.group_user', 1, 0, 0, 0),
|
|
('whatsapp.account', 'base.group_system', 1, 1, 1, 1),
|
|
# WhatsApp Conversation
|
|
('whatsapp.conversation', 'base.group_user', 1, 1, 1, 0),
|
|
('whatsapp.conversation', 'base.group_system', 1, 1, 1, 1),
|
|
# WhatsApp Message
|
|
('whatsapp.message', 'base.group_user', 1, 1, 1, 0),
|
|
('whatsapp.message', 'base.group_system', 1, 1, 1, 1),
|
|
# Wizards
|
|
('whatsapp.send.wizard', 'base.group_user', 1, 1, 1, 1),
|
|
('whatsapp.mass.wizard', 'base.group_user', 1, 1, 1, 1),
|
|
]
|
|
|
|
for model_name, group_xmlid, read, write, create, unlink in permissions:
|
|
# Buscar el modelo
|
|
model = env['ir.model'].sudo().search([('model', '=', model_name)], limit=1)
|
|
if not model:
|
|
continue
|
|
|
|
# Buscar el grupo
|
|
group = env.ref(group_xmlid, raise_if_not_found=False)
|
|
if not group:
|
|
continue
|
|
|
|
# Verificar si ya existe
|
|
existing = Access.search([
|
|
('model_id', '=', model.id),
|
|
('group_id', '=', group.id)
|
|
], limit=1)
|
|
|
|
if existing:
|
|
continue
|
|
|
|
# Crear el permiso
|
|
access_name = f'{model_name}.{group_xmlid.split(".")[-1]}'
|
|
Access.create({
|
|
'name': access_name,
|
|
'model_id': model.id,
|
|
'group_id': group.id,
|
|
'perm_read': read,
|
|
'perm_write': write,
|
|
'perm_create': create,
|
|
'perm_unlink': unlink,
|
|
})
|