Les actions et les menus sont des enregistrements dans la base de données. Ils déclarés dans les fichiers de données (data files). Les actions peuvent être déclarées de trois manières :
Comme les menus peuvent être complexes à déclarer, vous pouvez utiliser l'élément <menuitem> déclaré dans un ir.ui.menu et le lier à l'action correspondante ; ce qui est plus facile à réaliser.
<record model="ir.actions.act_window" id="action_list_ideas"> <field name="name">Ideas</field> <field name="res_model">idea.idea</field> <field name="view_mode">tree,form</field> </record> <menuitem id="menu_ideas" parent="menu_root" name="Ideas" sequence="10" action="action_list_ideas"/>
Attention :
Les actions doivent être déclarées avant qu'un menu y fasse référence dans le fichier XML.
Les fichiers de données sont exécutés séquentiellement ; l'id de l'action doit être présent dans la base de données avant que le menu ne puisse être créé.
Exercice définir des entrées de menu :
Définissez de nouvelles entrées de menu pour accéder aux cours et aux sessions de formation sous l'entrée de menu du module Open Academy. L'utilisateur doit pouvoir :
Démarche à suivre :
Modifier le contenu du fichier manifest __openerp__.py :
'data': [ # 'security/ir.model.access.csv', 'templates.xml', 'views/openacademy.xml', ], # only loaded in demonstration mode 'demo': [...
Contenu du fichier views/openacademy.xml :
<?xml version="1.0" encoding="UTF-8"?> <openerp> <data> <!-- window action --> <!-- The following tag is an action definition for a "window action", that is an action opening a view or a set of views --> <record model="ir.actions.act_window" id="cours_list_action"> <field name="name">Cours</field> <field name="res_model">openacademy.cours</field> <field name="view_type">form</field> <field name="view_mode">tree,form</field> <field name="help" type="html"> <p class="oe_view_nocontent_create">Créer le premier cours </p> </field> </record> <!-- top level menu: no parent --> <menuitem id="main_openacademy_menu" name="Open Academy"/> <!-- A first level in the left side menu is needed before using action= attribute --> <menuitem id="openacademy_menu" name="Open Academy" parent="main_openacademy_menu"/> <!-- the following menuitem should appear *after* its parent openacademy_menu and *after* its action course_list_action --> <menuitem id="cours_menu" name="Cours" parent="openacademy_menu" action="cours_list_action"/> <!-- Full id location: action="openacademy.cours_list_action" It is not required when it is the same module --> </data> </openerp>
Vous pouvez maintenant :
Et vous pouvez visualisez avec pgAdminIII, la table openacademy_cours contenant ces différents enregistrements dans la base de données PostgreSLQ.