Pular para o conteúdo
Documentação do usuário

Seu primeiro módulo

Visão geral

Este capítulo instrui a criação do seu primeiro módulo no Odoo e da implementação dele em seu projeto no Odoo.sh.

Este tutorial requer que você tenha criado um projeto no Odoo.sh e que você conheça a URL do seu repositório Github.

O uso básico do Git e do Github é explicado.

São feitas as seguintes suposições:

  • ~/src is the directory where are located the Git repositories related to your Odoo projects,

  • odoo is the Github user,

  • odoo-addons is the Github repository,

  • feature-1 is the name of a development branch,

  • master is the name of the production branch,

  • my_module is the name of the module.

Substitua esses valores pelos valores de sua escolha.

Criar a ramificação de desenvolvimento

Pelo Odoo.sh

Na visualização das ramificações:

  • hit the + button next to the development stage,

  • choose the branch master in the Fork selection,

  • type feature-1 in the To input.

pic1 pic2

Depois que a compilação for criada, você poderá acessar o editor e navegar até a pasta ~/src/user para acessar o código da sua ramificação de desenvolvimento.

first_module/firstmodule-development-editor.png first_module/firstmodule-development-editor-interface.png

Pelo seu computador

Clone seu repositório do Github no computador:

$ mkdir ~/src
$ cd ~/src
$ git clone https://github.com/odoo/odoo-addons.git
$ cd ~/src/odoo-addons

Crie uma nova ramificação:

$ git checkout -b feature-1 master

Criar a estrutura do módulo

Estruturação do módulo

Embora não seja necessário, a estruturação evita o tédio de definir a base do módulo do Odoo. Você pode criar um novo módulo usando o odoo-bin executável.

Pelo editor do Odoo.sh, em um terminal:

$ odoo-bin scaffold my_module ~/src/user/

Ou, do seu computador, se você tiver uma instalação do Odoo:

$ ./odoo-bin scaffold my_module ~/src/odoo-addons/

Se não quiser se dar ao trabalho de instalar o Odoo em seu computador, você também pode :download:`baixar esse modelo de estrutura de módulo <first_module/my_module.zip>`, no qual você substituirá todas as ocorrências de my_module pelo nome de sua escolha.

A estrutura abaixo será gerada:

my_module
├── __init__.py
├── __manifest__.py
├── controllers
│   ├── __init__.py
│   └── controllers.py
├── demo
│   └── demo.xml
├── models
│   ├── __init__.py
│   └── models.py
├── security
│   └── ir.model.access.csv
└── views
    ├── templates.xml
    └── views.xml

Não use outros caracteres especiais além do sublinhado ( _ ) no nome do módulo, nem mesmo um hífen ( - ). Esse nome é usado para as classes Python do seu módulo, e ter nomes de classes com caracteres especiais que não sejam o sublinhado não é válido no Python.

Descomente o conteúdo dos arquivos:

  • models/models.py, an example of model with its fields,

  • views/views.xml, a tree and a form view, with the menus opening them,

  • demo/demo.xml, demo records for the above example model,

  • controllers/controllers.py, an example of controller implementing some routes,

  • views/templates.xml, two example qweb views used by the above controller routes,

  • __manifest__.py, the manifest of your module, including for instance its title, description and data files to load. You just need to uncomment the access control list data file:

    # 'security/ir.model.access.csv',

Manualmente

Se quiser criar a estrutura do módulo manualmente, você pode seguir o tutorial /developer/tutorials/server_framework_101 para entender a estrutura de um módulo e o conteúdo de cada arquivo.

Enviar a ramificação de desenvolvimento

Preparar as alterações para o commit

$ git add my_module

Fazer commit das suas alterações

$ git commit -m "My first module"

Envie suas alterações para seu repositório remoto

Em um terminal do editor do Odoo.sh:

$ git push https HEAD:feature-1

O comando acima é explicado na seção Confirmar e enviar alterações <odoo-sh/editor/commit> da página Editor online. Inclui a explicação sobre o fato de que você será solicitado a digitar seu nome de usuário e senha, e o que fazer se você usar a autenticação de dois fatores.

Ou, no terminal de seu computador:

$ git push -u origin feature-1

Você precisa especificar -u origin feature-1 apenas para o primeiro envio. A partir desse ponto, para enviar as alterações futuras do seu computador, basta usar

$ git push

Testar seu módulo

Sua ramificação deve aparecer nas ramificações de desenvolvimento do seu projeto.

first_module/firstmodule-test-branch.png

Na visualização de ramificações do seu projeto, você pode clicar no nome da ramificação no painel de navegação esquerdo para acessar o histórico dela.

first_module/firstmodule-test-branch-history.png

Você pode ver aqui as alterações que acabou de enviar, inclusive o comentário que definiu. Quando a base de dados estiver pronta, você poderá acessá-la clicando no botão Conectar.

first_module/firstmodule-test-database.png

Se o seu projeto Odoo.sh estiver configurado para instalar seu módulo automaticamente, você logo o verá entre os aplicativos da base de dados. Caso contrário, ele estará disponível nos aplicativos para instalar.

Em seguida, você pode brincar com seu módulo, criar novos registros e testar seus recursos e botões.

Testar com os dados de produção

Você precisa ter uma base de dados de produção para esta etapa. Você pode criá-la se ainda não tiver.

Depois de testar seu módulo com os dados de demonstração em uma compilação de desenvolvimento e achar que está pronto, você poderá testá-lo com os dados de produção usando uma ramificação de teste.

Você pode:

  • Make your development branch a staging branch, by drag and dropping it onto the staging section title.

    first_module/firstmodule-test-devtostaging.png
  • Merge it in an existing staging branch, by drag and dropping it onto the given staging branch.

    first_module/firstmodule-test-devinstaging.png

Você também pode usar o comando git merge para mesclar suas ramificações.

Isso criará uma nova compilação de teste, que duplicará a base de dados de produção e a executará usando um servidor atualizado com as alterações mais recentes da sua ramificação.

first_module/firstmodule-test-mergedinstaging.png

Quando a base de dados estiver pronta, você poderá acessá-la usando o botão Conectar.

Instalar seu módulo

Seu módulo não será instalado automaticamente, você terá que instalá-lo no menu de aplicativos. De fato, o objetivo da compilação de teste é testar o comportamento de suas alterações como seria na sua produção, e na produção você não gostaria que seu módulo fosse instalado automaticamente, mas sob demanda.

Seu módulo também pode não aparecer diretamente nos aplicativos a serem instalados; primeiro, você precisa atualizar sua lista de aplicativos:

  • Activate the developer mode <developer-mode>

  • in the apps menu, click the Update Apps List button,

  • in the dialog that appears, click the Update button.

    first_module/firstmodule-test-updateappslist.png

Seu módulo aparecerá na lista de aplicativos disponíveis.

first_module/firstmodule-test-mymoduleinapps.png

Implementar em produção

Depois de testar seu módulo em uma ramificação de teste com os dados de produção e acreditar que está pronto para produção, você pode mesclar sua ramificação na de produção.

Arraste e solte a ramificação de teste na ramificação de produção.

first_module/firstmodule-test-mergeinproduction.png

Você também pode usar o comando git merge para mesclar suas ramificações.

Isso mesclará as alterações mais recentes de sua ramificação de teste na ramificação de produção e atualizará seu servidor de produção com essas alterações.

first_module/firstmodule-test-mergedinproduction.png

Quando a base de dados estiver pronta, você poderá acessá-la usando o botão Conectar.

Instalar seu módulo

Seu módulo não será instalado automaticamente, você deverá instalá-lo manualmente, conforme explicado na seção acima sobre a instalação do seu módulo em bases de dados de teste <odoosh-gettingstarted-firstmodule-productiondata-install>.

Adicionar uma alteração

Esta seção explica como adicionar uma alteração em seu módulo, adicionando um novo campo em um modelo e implementando-o.

From the Odoo.sh editor,
  • browse to your module folder ~/src/user/my_module,

  • then, open the file models/models.py.

Or, from your computer,
  • use the file browser of your choice to browse to your module folder ~/src/odoo-addons/my_module,

  • then, open the file models/models.py using the editor of your choice, such as Atom, Sublime Text, PyCharm, vim, ...

Então, após o campo de descrição

description = fields.Text()

Adicione um campo de data e hora

start_datetime = fields.Datetime('Start time', default=lambda self: fields.Datetime.now())

Em seguida, abra o arquivo views/views.xml.

Depois

<field name="value2"/>

Adicionar

<field name="start_datetime"/>

Essas alterações modificam a estrutura da base de dados, adicionando uma coluna em uma tabela e modificando uma visualização armazenada na base de dados.

Para que sejam aplicadas em bases de dados existentes, como a base de dados de produção, essas alterações exigem que o módulo seja atualizado.

Se quiser que a atualização seja realizada automaticamente pela plataforma Odoo.sh quando você enviar suas alterações, aumente a versão do módulo em seu manifesto.

Abra o manifesto do módulo __manifest__.py.

Substituir

'version': '0.1',

com

'version': '0.2',

A plataforma detectará a mudança de versão e acionará a atualização do módulo após a implementação da nova revisão.

Navegue até sua pasta Git.

Em seguida, em um terminal do Odoo.sh:

$ cd ~/src/user/

Ou, no terminal de seu computador:

$ cd ~/src/odoo-addons/

Então, prepare as alterações a fazer commit

$ git add my_module

Fazer commit das suas alterações

$ git commit -m "[ADD] my_module: add the start_datetime field to the model my_module.my_module"

Envie suas alterações:

Em um terminal do Odoo.sh:

$ git push https HEAD:feature-1

Ou, no terminal de seu computador:

$ git push

Então, a plataforma criará uma nova compilação para a ramificação feature-1.

first_module/firstmodule-test-addachange-build.png

Depois de testar suas alterações, você pode mesclar suas alterações na ramificação de produção, por exemplo, arrastando e soltando a ramificação na de produção pela interface do Odoo.sh. À medida que você aumentar a versão do módulo no manifesto, a plataforma atualizará o módulo automaticamente e seu novo campo logo estará disponível. Caso contrário, você pode atualizar manualmente o módulo na lista de aplicativos.

Usar uma biblioteca Python externa

Se quiser usar uma biblioteca Python externa que não esteja instalada por padrão, você poderá definir um arquivo requirements.txt listando as bibliotecas externas das quais seus módulos dependem.

A plataforma usará esse arquivo para instalar automaticamente as bibliotecas Python de que seu projeto precisa.

O recurso é explicado nesta seção usando a Biblioteca Unidecode em seu módulo.

Crie um arquivo requirements.txt na pasta raiz do seu repositório

No editor do Odoo.sh, crie e abra o arquivo ~/src/user/requirements.txt.

Ou, em seu computador, crie e abra o arquivo ~/src/odoo-addons/requirements.txt.

Adicionar

unidecode

Em seguida, use a biblioteca em seu módulo, por exemplo, para remover acentos dos caracteres no campo de nome de seu modelo.

Abra o arquivo models/models.py.

Antes de

from odoo import models, fields, api

Adicionar

from unidecode import unidecode

Depois

start_datetime = fields.Datetime('Start time', default=lambda self: fields.Datetime.now())

Adicionar

@api.model
def create(self, vals_list):
    for vals in vals_list:
        if 'name' in vals:
            vals['name'] = unidecode(vals['name'])
    return super().create(vals_list)

def write(self, vals):
    if 'name' in vals:
        vals['name'] = unidecode(vals['name'])
    return super().write(vals)

A adição de uma dependência do Python requer um aumento da versão do módulo para que a plataforma o instale.

Edite o manifesto do módulo __manifest__.py

Substituir

'version': '0.2',

com

'version': '0.3',

Prepare e faça commit das suas alterações:

$ git add requirements.txt
$ git add my_module
$ git commit -m "[IMP] my_module: automatically remove special chars in my_module.my_module name field"

Em seguida, envie as alterações:

Em um terminal do Odoo.sh:

$ git push https HEAD:feature-1

No terminal do seu computador:

$ git push