fix(odoo): usar post_init_hook para crear permisos
- 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>
This commit is contained in:
@@ -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',
|
||||
|
||||
59
odoo_whatsapp_hub/hooks.py
Normal file
59
odoo_whatsapp_hub/hooks.py
Normal file
@@ -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,
|
||||
})
|
||||
@@ -1,84 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="0">
|
||||
<!-- WhatsApp Account Access -->
|
||||
<record id="access_whatsapp_account_user" model="ir.model.access">
|
||||
<field name="name">whatsapp.account.user</field>
|
||||
<field name="model_id" ref="model_whatsapp_account"/>
|
||||
<field name="group_id" ref="base.group_user"/>
|
||||
<field name="perm_read" eval="1"/>
|
||||
<field name="perm_write" eval="0"/>
|
||||
<field name="perm_create" eval="0"/>
|
||||
<field name="perm_unlink" eval="0"/>
|
||||
</record>
|
||||
<record id="access_whatsapp_account_manager" model="ir.model.access">
|
||||
<field name="name">whatsapp.account.manager</field>
|
||||
<field name="model_id" ref="model_whatsapp_account"/>
|
||||
<field name="group_id" ref="base.group_system"/>
|
||||
<field name="perm_read" eval="1"/>
|
||||
<field name="perm_write" eval="1"/>
|
||||
<field name="perm_create" eval="1"/>
|
||||
<field name="perm_unlink" eval="1"/>
|
||||
</record>
|
||||
|
||||
<!-- WhatsApp Conversation Access -->
|
||||
<record id="access_whatsapp_conversation_user" model="ir.model.access">
|
||||
<field name="name">whatsapp.conversation.user</field>
|
||||
<field name="model_id" ref="model_whatsapp_conversation"/>
|
||||
<field name="group_id" ref="base.group_user"/>
|
||||
<field name="perm_read" eval="1"/>
|
||||
<field name="perm_write" eval="1"/>
|
||||
<field name="perm_create" eval="1"/>
|
||||
<field name="perm_unlink" eval="0"/>
|
||||
</record>
|
||||
<record id="access_whatsapp_conversation_manager" model="ir.model.access">
|
||||
<field name="name">whatsapp.conversation.manager</field>
|
||||
<field name="model_id" ref="model_whatsapp_conversation"/>
|
||||
<field name="group_id" ref="base.group_system"/>
|
||||
<field name="perm_read" eval="1"/>
|
||||
<field name="perm_write" eval="1"/>
|
||||
<field name="perm_create" eval="1"/>
|
||||
<field name="perm_unlink" eval="1"/>
|
||||
</record>
|
||||
|
||||
<!-- WhatsApp Message Access -->
|
||||
<record id="access_whatsapp_message_user" model="ir.model.access">
|
||||
<field name="name">whatsapp.message.user</field>
|
||||
<field name="model_id" ref="model_whatsapp_message"/>
|
||||
<field name="group_id" ref="base.group_user"/>
|
||||
<field name="perm_read" eval="1"/>
|
||||
<field name="perm_write" eval="1"/>
|
||||
<field name="perm_create" eval="1"/>
|
||||
<field name="perm_unlink" eval="0"/>
|
||||
</record>
|
||||
<record id="access_whatsapp_message_manager" model="ir.model.access">
|
||||
<field name="name">whatsapp.message.manager</field>
|
||||
<field name="model_id" ref="model_whatsapp_message"/>
|
||||
<field name="group_id" ref="base.group_system"/>
|
||||
<field name="perm_read" eval="1"/>
|
||||
<field name="perm_write" eval="1"/>
|
||||
<field name="perm_create" eval="1"/>
|
||||
<field name="perm_unlink" eval="1"/>
|
||||
</record>
|
||||
|
||||
<!-- WhatsApp Wizards Access -->
|
||||
<record id="access_whatsapp_send_wizard" model="ir.model.access">
|
||||
<field name="name">whatsapp.send.wizard</field>
|
||||
<field name="model_id" ref="model_whatsapp_send_wizard"/>
|
||||
<field name="group_id" ref="base.group_user"/>
|
||||
<field name="perm_read" eval="1"/>
|
||||
<field name="perm_write" eval="1"/>
|
||||
<field name="perm_create" eval="1"/>
|
||||
<field name="perm_unlink" eval="1"/>
|
||||
</record>
|
||||
<record id="access_whatsapp_mass_wizard" model="ir.model.access">
|
||||
<field name="name">whatsapp.mass.wizard</field>
|
||||
<field name="model_id" ref="model_whatsapp_mass_wizard"/>
|
||||
<field name="group_id" ref="base.group_user"/>
|
||||
<field name="perm_read" eval="1"/>
|
||||
<field name="perm_write" eval="1"/>
|
||||
<field name="perm_create" eval="1"/>
|
||||
<field name="perm_unlink" eval="1"/>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user