diff --git a/odoo_whatsapp_hub.zip b/odoo_whatsapp_hub.zip index 589ddd4..f107a26 100644 Binary files a/odoo_whatsapp_hub.zip and b/odoo_whatsapp_hub.zip differ diff --git a/odoo_whatsapp_hub/__manifest__.py b/odoo_whatsapp_hub/__manifest__.py index 674b972..0c5effb 100644 --- a/odoo_whatsapp_hub/__manifest__.py +++ b/odoo_whatsapp_hub/__manifest__.py @@ -22,8 +22,8 @@ 'views/whatsapp_conversation_views.xml', 'views/res_partner_views.xml', 'wizards/send_whatsapp_wizard.xml', - 'security/ir_model_access.xml', ], + 'post_init_hook': 'post_init_hook', 'assets': { 'web.assets_backend': [ 'odoo_whatsapp_hub/static/src/css/whatsapp.css', diff --git a/odoo_whatsapp_hub/hooks.py b/odoo_whatsapp_hub/hooks.py new file mode 100644 index 0000000..9877868 --- /dev/null +++ b/odoo_whatsapp_hub/hooks.py @@ -0,0 +1,59 @@ +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, + }) diff --git a/odoo_whatsapp_hub/security/ir_model_access.xml b/odoo_whatsapp_hub/security/ir_model_access.xml deleted file mode 100644 index 7618eb6..0000000 --- a/odoo_whatsapp_hub/security/ir_model_access.xml +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - whatsapp.account.user - - - - - - - - - whatsapp.account.manager - - - - - - - - - - - whatsapp.conversation.user - - - - - - - - - whatsapp.conversation.manager - - - - - - - - - - - whatsapp.message.user - - - - - - - - - whatsapp.message.manager - - - - - - - - - - - whatsapp.send.wizard - - - - - - - - - whatsapp.mass.wizard - - - - - - - - -