ODOO 8 – création d’un module simple avec les nouvelles API

Reprenons l'exemple créé en v7 que nous allons reproduire en v8 avec les nouvelles API .

Nous ne mettrons en place ni la traduction en français, ni la gestion des droits d'accès.

Le résultat à obtenir sera :
* Ecran "Author" :

* Ecran "Book":

Nous allons créer le module  "mylibrary2" avec les fichiers suivants :

__init__.py
import mylibrary2

__openerp__.py
# -*- coding: utf-8 -*-

{
    'name': 'mylibrary2',
    'version': '0.1',
    'category': 'Generic Modules/Others',
    'description': """ Test creation module new api Odoo v8
    """,
    'author': 'PMA',
    'depends': ['base'],
    'data': ['mylibrary2_view.xml'],
    'installable': True,
    'auto_install': False,
}

mylibrary2.py
(ce fichier est impacté par les nouvelles api)
# -*- coding: utf-8 -*-
from openerp import models, fields

class author(models.Model):
    _name = 'mylibrary.author'
    _rec_name = 'lastname'
    firstname = fields.Char('FirstName', required=True)
    lastname = fields.Char('LastName', required=True) 
    book_ids = fields.One2many('mylibrary.book','author_id','Books')
 
class book(models.Model):
    _name = 'mylibrary.book'
    title = fields.Char('Title', required=True)
    genre = fields.Char('Genre', required=True)
    author_id = fields.Many2one('mylibrary.author','Author',ondelete='cascade')

mylibrary2_view.xml
<?xml version="1.0" ?>

<openerp>
        <data>
    <record model="ir.ui.view" id="author_form">
        <field name="name">author.form</field>
        <field name="model">mylibrary.author</field>
        <field name="arch" type="xml">
            <form string="Author">
                <label string="First Name" />
                <field name="firstname"/>
                <label string="Last Name" />
                <field name="lastname"/> 
                <notebook colspan="3">
                    <page string="Books">
                      <field name="book_ids"/>
                    </page>
                </notebook>
            </form>
        </field>
    </record>

    <record model="ir.ui.view" id="author_tree">
        <field name="name">author.tree</field>
        <field name="model">mylibrary.author</field>
        <field name="type">tree</field>
        <field name="arch" type="xml">
            <tree string="Author" >
                <field name="firstname"/>
                <field name="lastname"/>
                <field name="book_ids"/>
            </tree>
        </field>
    </record>

    <record model="ir.actions.act_window" id="action_author">
        <field name="name">Author</field>
        <field name="res_model">mylibrary.author</field>
        <field name="view_type">form</field>
        <field name="view_mode">tree,form</field>
    </record>

    <record model="ir.ui.view" id="book_form">
        <field name="name">book.form</field>
        <field name="model">mylibrary.book</field>
        <field name="arch" type="xml">
            <form string="Book" >
                <label string="Title" />
                <field name="title"/>
                <label string="Genre" />
                <field name="genre"/>
                <label string="Author" />
                <field name="author_id"/>
            </form>
        </field>
    </record>

    <record model="ir.ui.view" id="book_tree">
        <field name="name">book.tree</field>
        <field name="model">mylibrary.book</field>
        <field name="arch" type="xml">
            <tree string="Book" >
                <field name="title"/>
                <field name="genre"/>
                <field name="author_id"/>
            </tree>
        </field>
    </record>

    <record model="ir.actions.act_window" id="action_book">
        <field name="name">Book</field>
        <field name="res_model">mylibrary.book</field>
        <field name="view_type">form</field>
        <field name="view_mode">tree,form</field>
    </record>

    <menuitem id="mylibrary" name="Mylibrary"/>
       <menuitem name="Mylibrary" id="section_main_menu_mylibrary" parent="mylibrary" />
        <menuitem name="Authors" id="choix_author" parent="section_main_menu_mylibrary" action="action_author"/>
       <menuitem name="Books" id="choix_book" parent="section_main_menu_mylibrary" action="action_book"/>

    </data>
</openerp>

17 réflexions au sujet de « ODOO 8 – création d’un module simple avec les nouvelles API »

  1. Bonjour,
    Je vous remercie pour cet article. En le suivant j'ai réussi à créer un module qui permet d'ajouter des données. Tout marche très bien. Ma question est comment afficher ces données sur mon site web (j'utilise website odoo pour la création de site).

    1. Pouvez vous m'en dire un peu plus d'une part sur ces données et d'autre part, comment les afficher sur le website.
      Je ne connais pas encore super bien ce sujet mais je pourrai regarder si j'y vois plus clair sur vos besoins.

  2. Merci pour votre rapide réponse. E fait j'utilise ce module pour créer des catégrories (villes) et des sous catégories (communes). Je veux bien que ces données seront affichés sur le site sous forme d'un annuaire ( tableau : ville -> communes ).

  3. Bonjour débutant sur odoo je voudrais savoir comment rajouter + de champ à la classe Author par exemple? Un champ date ?

    Je me permets de vous demander car après plusieurs essaie je rencontre un échec…

  4. Je vous remercie pour cet article , je suis débutante en Odoo , j'ai essayé d'installer ce module mais un erreur s'est produit lors de l'installation du module:

    ParseError: "Invalid view definition

    Dxe9tails de l'erreur :
    Modxe8le non trouvxe9 : mylibrary.author

  5. Bonjour,
    J'ai ajouté required=True sur le champ author_id de la table mylibrary.book
    Maintenant, je souhaite ajouter un nouveau livre à un auteur.
    Je sélectionne un auteur dans la liste des auteurs.
    Puis je clique sur Modifier puis sur Ajouter un élément pour ajouter un livre.
    Pourquoi dois-je saisir le nom de l'auteur dans le formulaire de création du livre. Y-a-t-il un moyen pour que le champ author_id soit automatiquement garni avec le nom de l'auteur sélectionné au départ ?

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *