.tpl em texto simples. O Reporter o renderiza com um motor Pongo2, que lê tags no estilo Django e filtros com pipe.
Referência de template lista todas as tags e filtros. Formatos de template mostra um arquivo pronto para cada formato de saída.
O mapa de campos
Quando você envia um template, o Reporter analisa o texto e deriva um mapa de campos: cada fonte de dados, cada tabela e cada campo que o template nomeia.
O contexto de dados
A extração monta um contexto para a renderização. O primeiro nível é o nome de configuração da fonte de dados. O segundo nível é a tabela. Cada valor é uma lista de linhas.
schema__table, com underscore duplo, tanto no mapa de campos quanto no contexto de renderização. Os filtros de linha são mais flexíveis e aceitam tanto schema.table quanto schema__table.
Variáveis
Um template lê o contexto por meio de variáveis. Um alias de loop vincula uma linha por vez, e{% with %} nomeia parte do contexto para o bloco abaixo dele. Os dois aliases são locais ao bloco que os declara.
O analisador rastreia um alias de volta até a tabela por trás dele. Um campo que você lê como order.total dentro de um loop sobre external_db.orders chega ao mapa de campos como total sob essa tabela, então a extração o retorna.
Fontes de dados multi-schema
Uma fonte de dados normalmente vive no registro persistente do Reporter e é gerenciada pela API de fontes de dados. No modo single-tenant, um bloco de ambiente pode semear uma entrada no registro na inicialização do Manager apenas quando nenhuma entrada ativa ou com exclusão lógica já usa esse nome de configuração. O modo multi-tenant cria fontes de dados por tenant pela API.
CONFIG_NAME define o nome que os seus templates usam, e SCHEMAS lista os esquemas que o Reporter descobre nela. Use o mesmo nome para o segmento de nome de ambiente e para CONFIG_NAME, deixando esse nome em maiúsculas nas chaves de variável de ambiente, como no bloco abaixo:
SCHEMAS, o Reporter descobre apenas o esquema public. A chave de esquema é DATASOURCE_{CONFIG_NAME}_SCHEMAS, enquanto as outras chaves de ambiente usam o segmento {NAME}. Veja Variáveis de ambiente para o bloco de bootstrap completo.
O motor resolve um nome de tabela sem qualificação em relação a cada esquema descoberto:
Qualifique a referência para remover a ambiguidade. A forma qualificada nomeia a fonte, o esquema e a tabela:
Blocos
Um bloco é a unidade com que o construtor visual de templates trabalha. Existem treze tipos, em seis categorias:
O valor entre parênteses é o que o catálogo de blocos retorna como string de categoria. Um cliente que faz correspondência na resposta da API usa essa chave, não o rótulo.
Quatro deles contêm filhos:
loop, conditional, section e with. Um conditional também carrega ramos alternativos. Os blocos se aninham até cinquenta níveis de profundidade.
Os blocos nunca são armazenados. O construtor os envia ao Reporter, e o Reporter retorna o código-fonte Pongo2 mais o mapa de campos que esse código implica. O template que você envia é sempre o texto.
Três operações dão suporte a esse fluxo:
- Validar blocos de template confere a estrutura, faz o parsing do código gerado e reporta cada problema em relação ao bloco que o causou.
- Gerar código de template retorna o código-fonte finalizado para um formato de saída.
- Listar definições de bloco retorna o catálogo, para que um cliente permaneça alinhado com o motor.
Dois tipos de filtro
O Reporter usa a palavra filtro para duas coisas diferentes, que rodam em momentos diferentes. Filtros de linha rodam durante a extração. Eles vivem na requisição de relatório, não no template, e restringem as linhas que o banco de dados retorna. O payload os aninha em três níveis: fonte de dados, depois tabela, depois campo.
Todo operador recebe um array. Vários operadores em um mesmo campo se combinam, como o intervalo de datas acima mostra.
Filtros de template rodam durante a renderização, depois que as linhas chegam. Eles moldam um valor dentro do documento e usam sintaxe de pipe:
{{ value|percent_of:total }}. Listar definições de filtro retorna o catálogo com um exemplo por filtro.
A etapa de renderização
O motor faz o parsing do template preparado uma vez por relatório e o executa contra o contexto. Dois comportamentos dessa etapa mudam como você projeta um documento. A saída numérica perde os zeros à direita, então
1200.00 é renderizado como 1200. Use floatformat quando uma coluna precisar de casas decimais fixas. Valores com vários pontos permanecem intactos, o que mantém um código contábil como 1.1.2.00.000 inalterado.
Um template XML pode declarar a codificação do arquivo armazenado. Coloque o marcador na mesma linha da declaração XML:
Limites que o motor aplica
O Reporter bloqueia as tags do Pongo2 que carregam ou estendem outro arquivo:
include, extends, import, block e ssi. Um template é um documento autocontido.Próximos passos
Como funciona a geração de relatórios
O caminho de uma requisição de relatório até um arquivo que você pode baixar.
Referência de template
Toda tag, filtro e operador que a sintaxe aceita.
Formatos de template
Um template pronto para cada formato de saída.
Conceitos essenciais do Reporter
Templates, fontes de dados, relatórios e prazos em um só lugar.

