Hooks e extensibilidade

Hooks são pontos declarativos de extensão do framework. Eles permitem que um app injete comportamento, assets, eventos e contexto sem alterar o núcleo do NEO.

Onde ficam

No arquivo hooks.py do app.

app_name = "biblioteca"
app_title = "Biblioteca"
app_publisher = "Sua Empresa"
app_email = "[email protected]"
app_license = "MIT"

Hooks comuns

Hook
Uso

app_include_js

Injetar JS global no Desk

app_include_css

Injetar CSS global

doctype_js

JS específico de DocType

doctype_list_js

Customização de lista

page_js

Script de Page

scheduler_events

Tarefas periódicas

doc_events

Eventos de documentos

fixtures

Exportação de artefatos

website_context

Contexto global do website

Exemplo de doc_events

Hooks de front-end

Os mais relevantes para UI são:

  • app_include_js;

  • app_include_css;

  • doctype_js;

  • doctype_list_js;

  • page_js.

Boas práticas:

  • prefira escopo específico antes de escopo global;

  • documente por que um asset é global;

  • teste conflito entre apps instalados.

Website e portal via hooks

Hooks também podem influenciar:

  • contexto global de templates;

  • assets públicos;

  • portal;

  • sitemap e rotas auxiliares.

Scheduler e automação

Fixtures

Fixtures ajudam a versionar itens como:

  • Workspace;

  • Client Script;

  • Custom Field;

  • Report;

  • Property Setter.

Isso é útil quando a experiência do Desk depende dessas configurações.

Erros comuns

  • usar JS global para resolver problema local;

  • duplicar regra em controller e doc_events;

  • exportar fixtures demais;

  • confiar em ordem implícita entre apps.

Atualizado