mirror of https://github.com/interlegis/sigi.git
Sesostris Vieira
3 years ago
42 changed files with 1872 additions and 1699 deletions
@ -1,6 +1,10 @@ |
|||||
ipython==7.30.1 |
ipython==7.30.1 |
||||
|
weasyprint==54.0 |
||||
Django==4.0.1 |
Django==4.0.1 |
||||
|
django-localflavor==3.1 |
||||
django-extensions==3.1.5 |
django-extensions==3.1.5 |
||||
|
django-weasyprint==2.1.0 |
||||
psycopg2==2.9.3 |
psycopg2==2.9.3 |
||||
django-bootstrap5==21.3 |
django-bootstrap5==21.3 |
||||
Pillow==9.0.0 |
Pillow==9.0.0 |
||||
|
django-localflavor==3.1 |
||||
|
@ -0,0 +1,6 @@ |
|||||
|
from django.apps import AppConfig |
||||
|
from django.utils.translation import gettext_lazy as _ |
||||
|
|
||||
|
class CasasConfig(AppConfig): |
||||
|
name = 'sigi.apps.casas' |
||||
|
verbose_name = _('casas legislativas') |
@ -0,0 +1,97 @@ |
|||||
|
from django.contrib import admin |
||||
|
from sigi.apps.servidores.models import Servidor |
||||
|
|
||||
|
|
||||
|
class GerentesInterlegisFilter(admin.filters.RelatedFieldListFilter): |
||||
|
|
||||
|
def __init__(self, *args, **kwargs): |
||||
|
super(GerentesInterlegisFilter, self).__init__(*args, **kwargs) |
||||
|
gerentes = Servidor.objects.filter(casas_que_gerencia__isnull=False).order_by('nome_completo').distinct() |
||||
|
self.lookup_choices = [(x.id, x) for x in gerentes] |
||||
|
|
||||
|
# class ConvenioFilter(admin.SimpleListFilter): |
||||
|
# title = _("Tipo de convênio") |
||||
|
# parameter_name = 'convenio' |
||||
|
|
||||
|
# def lookups(self, request, model_admin): |
||||
|
# return ( |
||||
|
# ('SC', _("Sem nenhum convênio")), |
||||
|
# ('CC', _("Com algum convênio")), |
||||
|
# ) + tuple([(p.pk, p.sigla) for p in Projeto.objects.all()]) |
||||
|
|
||||
|
# def queryset(self, request, queryset): |
||||
|
# if self.value() is not None: |
||||
|
# if self.value() == 'SC': |
||||
|
# queryset = queryset.filter(convenio=None) |
||||
|
# elif self.value() == 'CC': |
||||
|
# queryset = queryset.exclude(convenio=None) |
||||
|
# else: |
||||
|
# queryset = queryset.filter(convenio__projeto_id=self.value()) |
||||
|
|
||||
|
# return queryset.distinct('municipio__uf__nome', 'nome') |
||||
|
|
||||
|
# class ExcluirConvenioFilter(admin.SimpleListFilter): |
||||
|
# title=_("Excluir convênio da pesquisa") |
||||
|
# parameter_name = 'excluir_convenio' |
||||
|
|
||||
|
# def lookups(self, request, model_admin): |
||||
|
# return tuple([(p.pk, p.sigla) for p in Projeto.objects.all()]) |
||||
|
|
||||
|
# def queryset(self, request, queryset): |
||||
|
# if (self.value() is None): |
||||
|
# return queryset |
||||
|
# else: |
||||
|
# queryset = queryset.exclude(convenio__projeto_id=self.value()).distinct('municipio__uf__nome', 'nome') |
||||
|
# return queryset |
||||
|
|
||||
|
# class ServicoFilter(admin.SimpleListFilter): |
||||
|
# title = _("Serviço") |
||||
|
# parameter_name = 'servico' |
||||
|
|
||||
|
# def lookups(self, request, model_admin): |
||||
|
# return ( |
||||
|
# ('SS', _("Sem nenhum serviço")), |
||||
|
# ('CS', _("Com algum serviço")), |
||||
|
# ('CH', _("Com algum serviço de hospedagem")), |
||||
|
# ('CR', _("Apenas serviço de registro")), |
||||
|
# ) + tuple([(p.pk, p.nome) for p in TipoServico.objects.all()]) |
||||
|
|
||||
|
# def queryset(self, request, queryset): |
||||
|
# if self.value() is not None: |
||||
|
# if self.value() == 'SS': |
||||
|
# queryset = queryset.filter(servico=None) |
||||
|
# elif self.value() == 'CS': |
||||
|
# queryset = queryset.exclude(servico=None).filter( |
||||
|
# servico__data_desativacao__isnull=True) |
||||
|
# elif self.value() == 'CR': |
||||
|
# queryset = queryset.exclude(servico__tipo_servico__modo='H') \ |
||||
|
# .exclude(servico=None) |
||||
|
# elif self.value() == 'CH': |
||||
|
# queryset = queryset.filter( |
||||
|
# servico__tipo_servico__modo='H', |
||||
|
# servico__data_desativacao__isnull=True |
||||
|
# ) |
||||
|
# else: |
||||
|
# queryset = queryset.filter( |
||||
|
# servico__tipo_servico_id=self.value() |
||||
|
# ) |
||||
|
|
||||
|
# return queryset.distinct('municipio__uf__nome', 'nome') |
||||
|
|
||||
|
# class ServicoAtivoFilter(admin.SimpleListFilter): |
||||
|
# title = _("Serviço ativo") |
||||
|
# parameter_name = 'ativo' |
||||
|
|
||||
|
# def lookups(self, request, model_admin): |
||||
|
# return ( |
||||
|
# ('ativo', _("Ativo")), |
||||
|
# ('desativado', _("Desativado")), |
||||
|
# ) |
||||
|
|
||||
|
# def queryset(self, request, queryset): |
||||
|
# if self.value() is not None: |
||||
|
# if self.value() == 'ativo': |
||||
|
# queryset = queryset.filter(servico__data_desativacao__isnull=True) |
||||
|
# else: |
||||
|
# queryset = queryset.filter(servico__data_desativacao__isnull=False) |
||||
|
# return queryset |
@ -0,0 +1,200 @@ |
|||||
|
# Generated by Django 4.0.1 on 2022-01-11 18:44 |
||||
|
|
||||
|
from django.db import migrations, models |
||||
|
import django.db.models.deletion |
||||
|
import sigi.apps.utils |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('servidores', '0008_alter_servico_id_alter_servidor_foto_and_more'), |
||||
|
('contatos', '0005_alter_mesorregiao_options_alter_microrregiao_options_and_more'), |
||||
|
('casas', '0020_auto_20210611_0946'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.AlterModelOptions( |
||||
|
name='orgao', |
||||
|
options={'ordering': ('nome',), 'verbose_name': 'órgão', 'verbose_name_plural': 'órgãos'}, |
||||
|
), |
||||
|
migrations.RemoveField( |
||||
|
model_name='orgao', |
||||
|
name='recorte', |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='funcionario', |
||||
|
name='bairro', |
||||
|
field=models.CharField(blank=True, max_length=100, verbose_name='bairro'), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='funcionario', |
||||
|
name='cargo', |
||||
|
field=models.CharField(blank=True, max_length=100, null=True, verbose_name='cargo'), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='funcionario', |
||||
|
name='data_nascimento', |
||||
|
field=models.DateField(blank=True, null=True, verbose_name='data de nascimento'), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='funcionario', |
||||
|
name='desativado', |
||||
|
field=models.BooleanField(default=False, verbose_name='desativado'), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='funcionario', |
||||
|
name='endereco', |
||||
|
field=models.CharField(blank=True, max_length=100, verbose_name='endereço'), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='funcionario', |
||||
|
name='id', |
||||
|
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='funcionario', |
||||
|
name='municipio', |
||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='contatos.municipio', verbose_name='municipio'), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='funcionario', |
||||
|
name='nome', |
||||
|
field=models.CharField(max_length=60, verbose_name='nome completo'), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='funcionario', |
||||
|
name='nota', |
||||
|
field=models.CharField(blank=True, max_length=250, null=True, verbose_name='telefones'), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='funcionario', |
||||
|
name='observacoes', |
||||
|
field=models.TextField(blank=True, verbose_name='observações'), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='funcionario', |
||||
|
name='redes_sociais', |
||||
|
field=models.TextField(blank=True, help_text='Colocar um por linha', verbose_name='redes sociais'), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='funcionario', |
||||
|
name='setor', |
||||
|
field=models.CharField(choices=[('presidente', 'Presidente'), ('contato_interlegis', 'Contato Interlegis'), ('infraestrutura_fisica', 'Infraestrutura Física'), ('estrutura_de_ti', 'Estrutura de TI'), ('organizacao_do_processo_legislativo', 'Organização do Processo Legislativo'), ('producao_legislativa', 'Produção Legislativa'), ('estrutura_de_comunicacao_social', 'Estrutura de Comunicação Social'), ('estrutura_de_recursos_humanos', 'Estrutura de Recursos Humanos'), ('gestao', 'Gestão'), ('outros', 'Outros')], default='outros', max_length=100, verbose_name='setor'), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='funcionario', |
||||
|
name='sexo', |
||||
|
field=models.CharField(choices=[('M', 'Masculino'), ('F', 'Feminino')], default='M', max_length=1, verbose_name='sexo'), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='funcionario', |
||||
|
name='tempo_de_servico', |
||||
|
field=models.CharField(blank=True, max_length=50, null=True, verbose_name='tempo de serviço'), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='funcionario', |
||||
|
name='ult_alteracao', |
||||
|
field=models.DateTimeField(auto_now=True, null=True, verbose_name='última alteração'), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='orgao', |
||||
|
name='bairro', |
||||
|
field=models.CharField(blank=True, max_length=100, verbose_name='bairro'), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='orgao', |
||||
|
name='cnpj', |
||||
|
field=models.CharField(blank=True, max_length=32, verbose_name='CNPJ'), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='orgao', |
||||
|
name='codigo_interlegis', |
||||
|
field=models.CharField(blank=True, max_length=3, verbose_name='código Interlegis'), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='orgao', |
||||
|
name='data_instalacao', |
||||
|
field=models.DateField(blank=True, null=True, verbose_name='data de instalação da Casa Legislativa'), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='orgao', |
||||
|
name='data_levantamento', |
||||
|
field=models.DateTimeField(blank=True, null=True, verbose_name='data/hora da pesquisa'), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='orgao', |
||||
|
name='email', |
||||
|
field=models.EmailField(blank=True, max_length=128, verbose_name='e-mail'), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='orgao', |
||||
|
name='foto', |
||||
|
field=models.ImageField(blank=True, height_field='foto_altura', upload_to='imagens/casas', verbose_name='foto', width_field='foto_largura'), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='orgao', |
||||
|
name='horario_funcionamento', |
||||
|
field=models.CharField(blank=True, max_length=100, verbose_name='horário de funcionamento da Casa Legislativa'), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='orgao', |
||||
|
name='id', |
||||
|
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='orgao', |
||||
|
name='inclusao_digital', |
||||
|
field=models.CharField(choices=[('NAO PESQUISADO', 'Não pesquisado'), ('NAO POSSUI PORTAL', 'Não possui portal'), ('PORTAL MODELO', 'Possui Portal Modelo'), ('OUTRO PORTAL', 'Possui outro portal')], default='NAO PESQUISADO', max_length=30, verbose_name='inclusão digital'), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='orgao', |
||||
|
name='logradouro', |
||||
|
field=models.CharField(help_text='Avenida, rua, praça, jardim, parque...', max_length=100, verbose_name='logradouro'), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='orgao', |
||||
|
name='municipio', |
||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='contatos.municipio', verbose_name='município'), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='orgao', |
||||
|
name='nome', |
||||
|
field=models.CharField(help_text='Exemplo: <em>Câmara Municipal de Pains</em>.', max_length=60, verbose_name='nome'), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='orgao', |
||||
|
name='obs_pesquisa', |
||||
|
field=models.TextField(blank=True, verbose_name='observações do pesquisador'), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='orgao', |
||||
|
name='pagina_web', |
||||
|
field=models.URLField(blank=True, help_text='Exemplo: <em>http://www.camarapains.mg.gov.br</em>.', verbose_name='página web'), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='orgao', |
||||
|
name='pesquisador', |
||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='servidores.servidor', verbose_name='pesquisador'), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='orgao', |
||||
|
name='search_text', |
||||
|
field=sigi.apps.utils.SearchField(editable=False, field_names=['nome']), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='orgao', |
||||
|
name='tipo', |
||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='casas.tipoorgao', verbose_name='tipo'), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='orgao', |
||||
|
name='ult_alt_endereco', |
||||
|
field=models.DateTimeField(blank=True, null=True, verbose_name='última alteração do endereço'), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='tipoorgao', |
||||
|
name='id', |
||||
|
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), |
||||
|
), |
||||
|
] |
@ -0,0 +1,37 @@ |
|||||
|
{% extends 'pdf/base_report.html' %} |
||||
|
{% load static i18n %} |
||||
|
|
||||
|
{% block page_size %}A4 landscape{% endblock %} |
||||
|
|
||||
|
{% block main_content %} |
||||
|
<table repeat="1"> |
||||
|
<thead> |
||||
|
<tr> |
||||
|
<th style="width: 22.5%;">{% trans 'Casa' %}</th> |
||||
|
<th style="width: 12.5%;">{% trans 'Presidente' %}</th> |
||||
|
<th style="width: 5%;">{% trans 'Tipo' %}</th> |
||||
|
<th style="width: 18%;">{% trans 'Endereço' %}</th> |
||||
|
<th style="width: 10%;">{% trans 'Bairro' %}</th> |
||||
|
<th style="width: 7%;">{% trans 'CEP' %}</th> |
||||
|
<th style="width: 12.5%;">{% trans 'Telefone' %}</th> |
||||
|
<th style="width: 12.5%;">{% trans 'E-mail' %}</th> |
||||
|
</tr> |
||||
|
</thead> |
||||
|
|
||||
|
{% for casa in casas %} |
||||
|
{% ifchanged casa.municipio.uf %} |
||||
|
<tr class="title_row"><td colspan="8"><h1>{{ casa.municipio.uf.nome }}</h1></td></tr> |
||||
|
{% endifchanged %} |
||||
|
<tr> |
||||
|
<td>{{ casa.nome }}</td> |
||||
|
<td>{{ casa.presidente }}</td> |
||||
|
<td>{{ casa.tipo.sigla }}</td> |
||||
|
<td>{{ casa.logradouro }}</td> |
||||
|
<td>{{ casa.bairro }}</td> |
||||
|
<td>{{ casa.cep }}</td> |
||||
|
<td>{{ casa.telefone }}</td> |
||||
|
<td>{{ casa.email }}</td> |
||||
|
</tr> |
||||
|
{% endfor %} |
||||
|
</table> |
||||
|
{% endblock main_content %} |
@ -1,132 +0,0 @@ |
|||||
{% load smart_if %} |
|
||||
{% load static from staticfiles %} |
|
||||
{% load i18n %} |
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> |
|
||||
<html> |
|
||||
<head> |
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
|
||||
<title>Casa Legislativa</title> |
|
||||
<style type="text/css"> |
|
||||
table { |
|
||||
padding: 3px; |
|
||||
line-height: 1em; |
|
||||
-fs-table-paginate: paginate; |
|
||||
} |
|
||||
thead { |
|
||||
display: table-header-group; |
|
||||
} |
|
||||
th { |
|
||||
font-weight: bold; |
|
||||
text-align: left; |
|
||||
} |
|
||||
|
|
||||
th, td { |
|
||||
border-bottom: 1px solid #ddd; |
|
||||
} |
|
||||
|
|
||||
td.logo { |
|
||||
text-align: center; |
|
||||
} |
|
||||
|
|
||||
td.header_text p { |
|
||||
margin: 0px; |
|
||||
font-size: 1.4em; |
|
||||
} |
|
||||
|
|
||||
td.header_text { |
|
||||
width: 550px; |
|
||||
} |
|
||||
|
|
||||
h1 { |
|
||||
font-size: 2em; |
|
||||
text-align: center; |
|
||||
} |
|
||||
h2 { |
|
||||
font-size: 1.7em; |
|
||||
} |
|
||||
h3 { |
|
||||
margin-top: 10px; |
|
||||
margin-bottom: 0px; |
|
||||
} |
|
||||
body { |
|
||||
font-family: "Helvetica, Arial, sans-serif"; |
|
||||
font-size: 1.3em; |
|
||||
line-height: 1em; |
|
||||
} |
|
||||
|
|
||||
#footer { |
|
||||
text-align: center; |
|
||||
} |
|
||||
|
|
||||
@page { |
|
||||
size: a4 landscape; |
|
||||
margin: 3.5cm 2cm 2cm 2cm; |
|
||||
font-family: "Helvetica, Arial, sans-serif"; |
|
||||
font-size: 2em; |
|
||||
@frame header { |
|
||||
-pdf-frame-content: header; |
|
||||
top: 1cm; |
|
||||
} |
|
||||
@frame footer { |
|
||||
-pdf-frame-content: footer; |
|
||||
bottom: 0cm; |
|
||||
margin-left: 2cm; |
|
||||
margin-right: 2cm; |
|
||||
height: 1cm; |
|
||||
} |
|
||||
} |
|
||||
</style> |
|
||||
</head> |
|
||||
<body> |
|
||||
<div id="header"> |
|
||||
<table> |
|
||||
<tr> |
|
||||
<td class="logo"><img src="{% static 'img/logo-senado.jpg' %}"/></td> |
|
||||
<td class="header_text"> |
|
||||
<p><strong>{% trans 'SENADO FEDERAL' %}</strong></p> |
|
||||
<p><strong>{% trans 'ILB - Interlegis' %}</strong></p> |
|
||||
<p>{{ title }}</p> |
|
||||
</td> |
|
||||
<td class="logo"><img src="{% static 'img/logo-interlegis.jpg' %}"/></td> |
|
||||
</tr> |
|
||||
</table> |
|
||||
</div> |
|
||||
|
|
||||
<table repeat="1"> |
|
||||
<thead> |
|
||||
<tr> |
|
||||
<th style="width: 22.5%;">{% trans 'Casa' %}</th> |
|
||||
<th style="width: 12.5%;">{% trans 'Presidente' %}</th> |
|
||||
<th style="width: 5%;">{% trans 'Tipo' %}</th> |
|
||||
<th style="width: 18%;">{% trans 'Endereço' %}</th> |
|
||||
<th style="width: 10%;">{% trans 'Bairro' %}</th> |
|
||||
<th style="width: 7%;">{% trans 'CEP' %}</th> |
|
||||
<th style="width: 12.5%;">{% trans 'Telefone' %}</th> |
|
||||
<th style="width: 12.5%;">{% trans 'E-mail' %}</th> |
|
||||
</tr> |
|
||||
</thead> |
|
||||
|
|
||||
{% for casa in casas %} |
|
||||
{% ifchanged casa.municipio.uf %} |
|
||||
<tr><td colspan="8"><h3>{{ casa.municipio.uf.nome }}</h3></td></tr> |
|
||||
{% endifchanged %} |
|
||||
<tr> |
|
||||
<td>{{ casa.nome }}</td> |
|
||||
<td>{{ casa.presidente }}</td> |
|
||||
<td>{{ casa.tipo.sigla }}</td> |
|
||||
<td>{{ casa.logradouro }}</td> |
|
||||
<td>{{ casa.bairro }}</td> |
|
||||
<td>{{ casa.cep }}</td> |
|
||||
<td>{{ casa.telefone }}</td> |
|
||||
<td>{{ casa.email }}</td> |
|
||||
</tr> |
|
||||
{% endfor %} |
|
||||
</table> |
|
||||
|
|
||||
<div id="footer"> |
|
||||
{%block page_foot%} |
|
||||
{% trans 'Página' %} <pdf:pagenumber> |
|
||||
{%endblock%} |
|
||||
</div> |
|
||||
</body> |
|
||||
</html> |
|
@ -0,0 +1,3 @@ |
|||||
|
from django.test import TestCase |
||||
|
|
||||
|
# Create your tests here. |
File diff suppressed because it is too large
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 31 KiB |
@ -1,5 +1,5 @@ |
|||||
{% extends "admin/change_list.html" %} |
{% extends "admin/change_list.html" %} |
||||
{% load admin_list i18n reporting_tags %} |
{% load admin_list i18n %} |
||||
|
|
||||
{% block object-tools-items %} |
{% block object-tools-items %} |
||||
<li><a class="btn" href="carrinho/{{query_str}}"> |
<li><a class="btn" href="carrinho/{{query_str}}"> |
@ -0,0 +1,45 @@ |
|||||
|
{% load static i18n %} |
||||
|
<!DOCTYPE HTML> |
||||
|
<html lang="pt-BR"> |
||||
|
<head> |
||||
|
<meta charset="utf-8"/> |
||||
|
<meta name="description" content="SIGI reports"> |
||||
|
<meta name="author" content="Interlegis"> |
||||
|
<style type="text/css"> |
||||
|
@page { |
||||
|
size: {% block page_size %}A4 portrait{% endblock page_size %}; |
||||
|
margin: {% block page_margin %}3cm 2cm 2cm 2cm{% endblock page_margin %}; |
||||
|
font-family: "Helvetica, Arial, sans-serif"; |
||||
|
font-size: 10px; |
||||
|
@top-right { content: url("{% static 'img/logo-interlegis.png' %}");} |
||||
|
@top-left {content: url("{% static 'img/logo-senado.png' %}");} |
||||
|
@top-center { content: element(header); } |
||||
|
@bottom-center { content: element(footer); } |
||||
|
@bottom-right { content: "{% trans "Página: " %}" counter(page); } |
||||
|
{% block extra_page_settings %}{% endblock extra_page_settings %} |
||||
|
} |
||||
|
h1 { bookmark-level: 1 } |
||||
|
h2 { bookmark-level: 2 } |
||||
|
h3 { bookmark-level: 3 } |
||||
|
h4 { bookmark-level: 4 } |
||||
|
h5 { bookmark-level: 5 } |
||||
|
h6 { bookmark-level: 6 } |
||||
|
@media print { |
||||
|
header {position: running(header);} |
||||
|
footer {position: running(footer);} |
||||
|
} |
||||
|
@media print { |
||||
|
} |
||||
|
body { |
||||
|
font-family: Helvetica, Arial, sans-serif; |
||||
|
font-size: 10px; |
||||
|
} |
||||
|
{% block extra_style %}{% endblock extra_style %} |
||||
|
</style> |
||||
|
{% block extra_head %}{% endblock extra_head %} |
||||
|
<title>{% block title %}{% endblock title %}</title> |
||||
|
</head> |
||||
|
<body class="{% block body_class %}{% endblock body_class %}"> |
||||
|
{% block body_content %}{% endblock body_content %} |
||||
|
</body> |
||||
|
</html> |
@ -0,0 +1,59 @@ |
|||||
|
{% extends 'pdf/base.html' %} |
||||
|
{% load static i18n %} |
||||
|
|
||||
|
{% block title %}{{ title }}{% endblock title %} |
||||
|
{% block extra_style %} |
||||
|
h1, h2, h3, h4, h5, h6 { |
||||
|
margin: 0; |
||||
|
} |
||||
|
h1 {font-size: 1.6em;} |
||||
|
h2 {font-size: 1.5em;} |
||||
|
h3 {font-size: 1.4em;} |
||||
|
h4 {font-size: 1.3em;} |
||||
|
h5 {font-size: 1.2em;} |
||||
|
h6 {font-size: 1.1em;} |
||||
|
header { |
||||
|
font-size: 1.4em; |
||||
|
font-weight: bold; |
||||
|
text-align: center; |
||||
|
} |
||||
|
header p { |
||||
|
margin: 5px; |
||||
|
} |
||||
|
.report_name { |
||||
|
font-size: 1.6em; |
||||
|
} |
||||
|
|
||||
|
table { |
||||
|
border: 2px white; |
||||
|
width: 100%; |
||||
|
} |
||||
|
th,td { |
||||
|
padding: 4px; |
||||
|
} |
||||
|
th { |
||||
|
background-color: #007433; |
||||
|
color: white; |
||||
|
} |
||||
|
tr:nth-child(even) { |
||||
|
background-color: #d2d2d2; |
||||
|
} |
||||
|
.title_row { |
||||
|
background-color: #b2b2b2; |
||||
|
} |
||||
|
{% endblock extra_style %} |
||||
|
|
||||
|
{% block body_content %} |
||||
|
<header>{% block header %} |
||||
|
<p>{% trans 'SENADO FEDERAL' %}</p> |
||||
|
<p>{% trans 'Instituto Legislativo Brasileiro - ILB' %}</p> |
||||
|
<p>{% trans "INTERLEGIS" %}</p> |
||||
|
<p class="report_name">{{ title|upper }}</p>{% endblock header %} |
||||
|
</header> |
||||
|
|
||||
|
<footer>{% block footer %} |
||||
|
<p>{% trans 'Emitido em ' %}{% now "DATETIME_FORMAT" %}</p>{% endblock footer %} |
||||
|
</footer> |
||||
|
|
||||
|
{% block main_content %}{% endblock main_content %} |
||||
|
{% endblock body_content %} |
Before Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 30 KiB |
Loading…
Reference in new issue