Sistema de Apoio ao Processo Legislativo
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

9.1 KiB

Templates de Documentos - SAPL

Visão Geral

O sistema de Templates de Documentos permite que administradores configurem modelos padrão com cabeçalho, rodapé e formatação pré-definidos. Quando um usuário cria um novo documento via OnlyOffice (proposição, matéria legislativa, norma, etc.), o sistema automaticamente aplica o template correspondente.

Arquitetura

┌─────────────────┐     ┌──────────────────┐     ┌─────────────────┐
│  Admin SAPL     │────▶│  CRUD Templates  │────▶│ OnlyOffice      │
│                 │     │                  │     │ (Edita .docx)   │
└─────────────────┘     └──────────────────┘     └────────┬────────┘
                                                          │
                                                          ▼
┌─────────────────┐     ┌──────────────────┐     ┌─────────────────┐
│  Usuário Comum  │────▶│  Criar Documento │────▶│ Aplica Template │
│                 │     │  (Matéria, etc)  │     │ (cabeç/rodapé)  │
└─────────────────┘     └──────────────────┘     └─────────────────┘

Como Acessar

Menu Principal

  1. Acesse o SAPL como administrador
  2. Vá em SistemaTabelas Auxiliares
  3. Na seção Configurações Gerais, clique em Templates de Documentos

URL Direta

/sistema/template-documento/

Criando um Template

Passo 1: Acessar a Criação

  1. Acesse /sistema/template-documento/
  2. Clique em Adicionar Template de Documento

Passo 2: Preencher o Formulário

Campo Descrição Obrigatório Exemplo
Nome Nome identificador do template Sim "Template Oficial Câmara"
Tipo de Conteúdo Tipo de documento que usará este template Sim Matéria Legislativa
Tipo Específico Vincular a um tipo específico Não TipoMateriaLegislativa
ID do Tipo ID do tipo específico Não 1 (Projeto de Lei)
Descrição Descrição do template Não "Template com brasão e rodapé padrão"
Arquivo Arquivo .docx inicial Não template.docx
Ativo Se o template está disponível para uso Sim
Padrão Se é o template padrão para este tipo Não

Nota: O campo Arquivo é opcional. Se não enviar um arquivo, o sistema criará automaticamente um documento em branco com cabeçalho e rodapé de exemplo.

Passo 3: Editar no OnlyOffice

Após salvar, você será automaticamente redirecionado para o editor OnlyOffice onde poderá:

  • Configurar o cabeçalho (logo, nome da casa legislativa)
  • Configurar o rodapé (numeração de página, data)
  • Definir estilos de fonte e formatação padrão
  • Adicionar elementos fixos que aparecerão em todos os documentos

Passo 4: Salvar

O OnlyOffice salva automaticamente. Quando terminar, clique em Voltar para retornar ao SAPL.

Editando um Template Existente

Na tela de Detalhes do template, você encontrará dois botões:

  • Editar no OnlyOffice - Abre o editor para modificar cabeçalho, rodapé e formatação
  • Editar Dados - Modifica os campos do formulário (nome, tipo, etc.)

Na tela de Edição de Dados, há um alerta no topo com link direto para o OnlyOffice.

Tipos de Conteúdo Suportados

Tipo Descrição Usado em
proposicao Proposições Módulo Matéria → Proposições
materia Matérias Legislativas Módulo Matéria → Matérias
docacessorio Documentos Acessórios Anexos de Matérias
docadm Documentos Administrativos Módulo Protocolo Administrativo
norma Normas Jurídicas Módulo Normas

Hierarquia de Templates

O sistema busca templates na seguinte ordem de prioridade:

  1. Template Específico: Vinculado ao tipo exato (ex: "Projeto de Lei")
  2. Template Genérico: Apenas com tipo de conteúdo (ex: "Matéria Legislativa")
  3. Documento em Branco: Se nenhum template for encontrado

Exemplo Prático

Se você criar:

  • Template A: Matéria Legislativa (genérico)
  • Template B: Matéria Legislativa → Projeto de Lei (específico)

Ao criar um Projeto de Lei, o sistema usará o Template B. Ao criar um Requerimento, o sistema usará o Template A.

Configurando Templates Específicos

Para vincular um template a um tipo específico:

1. Identificar o Tipo

Primeiro, descubra o ID do tipo desejado. Por exemplo, para TipoMateriaLegislativa:

  • Acesse /materia/tipo-materia-legislativa/
  • Anote o ID do tipo (visível na URL ao editar)

2. Configurar no Template

No formulário de criação/edição do template:

  • Tipo Específico: Selecione o ContentType correspondente
    • materia | tipomaterialegislativa para tipos de matéria
    • materia | tipoproposicao para tipos de proposição
    • protocoloadm | tipodocumentoadministrativo para tipos de doc. administrativo
    • norma | tiponormajuridica para tipos de norma
  • ID do Tipo Específico: Digite o ID anotado

Estrutura Técnica

Arquivos Criados

Arquivo Descrição
sapl/base/models.py Modelo DocumentTemplate
sapl/base/forms.py Formulário DocumentTemplateForm
sapl/base/views.py CRUD DocumentTemplateCrud
sapl/base/urls.py URLs do CRUD e OnlyOffice
sapl/base/onlyoffice_template_views.py Views OnlyOffice para templates
sapl/utils_template.py Funções utilitárias
sapl/base/migrations/0061_documenttemplate.py Migration do banco
sapl/templates/base/layouts.yaml Layout do formulário
sapl/templates/menu_tabelas_auxiliares.yaml Link no menu
sapl/templates/base/documenttemplate_detail.html Template da tela de detalhes
sapl/templates/base/documenttemplate_form.html Template da tela de edição

URLs Disponíveis

URL Descrição
/sistema/template-documento/ Lista de templates
/sistema/template-documento/create Criar template
/sistema/template-documento/{pk} Detalhes do template
/sistema/template-documento/{pk}/edit Editar template
/sistema/template-documento/{pk}/delete Excluir template
/sistema/template-documento/{pk}/onlyoffice/editor Editor OnlyOffice

Modelo de Dados

class DocumentTemplate(models.Model):
    nome = CharField(max_length=100)
    descricao = TextField(blank=True)
    tipo_conteudo = CharField(choices=TIPO_CONTEUDO_TEMPLATE)

    # GenericFK para tipo específico (opcional)
    content_type = ForeignKey(ContentType, null=True, blank=True)
    object_id = PositiveIntegerField(null=True, blank=True)
    tipo_especifico = GenericForeignKey()

    arquivo = FileField(upload_to='templates/')
    ativo = BooleanField(default=True)
    padrao = BooleanField(default=False)
    data_criacao = DateTimeField(auto_now_add=True)
    data_modificacao = DateTimeField(auto_now=True)

Boas Práticas

1. Nomenclatura

Use nomes descritivos que identifiquem claramente o propósito:

  • "Template Oficial - Projetos de Lei"
  • "Modelo Padrão Câmara - Requerimentos"
  • "Template 1"

2. Organização

  • Crie um template genérico para cada tipo de conteúdo
  • Crie templates específicos apenas quando necessário
  • Mantenha apenas um template padrão por tipo

3. Cabeçalho e Rodapé

No OnlyOffice, configure:

  • Cabeçalho: Brasão, nome da casa legislativa, endereço
  • Rodapé: Número da página, data, informações de contato

4. Manutenção

  • Revise os templates periodicamente
  • Desative templates obsoletos em vez de excluí-los
  • Mantenha backup dos arquivos .docx

Solução de Problemas

Template não está sendo aplicado

  1. Verifique se o template está Ativo
  2. Verifique se o Tipo de Conteúdo está correto
  3. Se é específico, verifique se o ID do Tipo está correto

Cabeçalho/rodapé não aparecem

  1. Edite o template no OnlyOffice
  2. Verifique se o cabeçalho/rodapé foram salvos corretamente
  3. O OnlyOffice salva automaticamente, mas aguarde alguns segundos

Erro ao criar template

  1. Verifique se o arquivo é um .docx válido
  2. Verifique se você tem permissão de administrador
  3. Consulte os logs do sistema para mais detalhes

Permissões Necessárias

Para gerenciar templates, o usuário precisa das permissões:

  • base.add_documenttemplate - Criar templates
  • base.change_documenttemplate - Editar templates
  • base.delete_documenttemplate - Excluir templates
  • base.view_documenttemplate - Visualizar templates

Essas permissões são automaticamente concedidas ao grupo Operador Geral e administradores.