Browse Source

Fix #414 ordem resumo (#1109)

* Divide o template de resumo em blocos

* Cria a funcionalidade

* Pequena correcao

* add arq sql no instalador de reutil. da app sapl

* Conserta erro teste

* fix #1092 - Altera o destino dos documentos migrados (#1093)

* Altera o destino dos documentos migrados

Signed-off-by: Luciano Almeida <lucianoalmeida@interlegis.leg.br>

* Usa a data de matéria em doc acessório

Signed-off-by: Luciano Almeida <lucianoalmeida@interlegis.leg.br>

* ajusta caminho public private

* Faz a ordenação para o arquivo impresso

* fix #1098 (#1107)

* Padroniza tamanho foto para mesa (#1088)

* Adiciona permissão a tela de ordenação

* Bug Fix

* Fix 1104 (#1110)

* adiciona poppler-utils (#1113)

* Adiciona poppler-utils, onde está pdftotext que é usado por indexador.

* redesenha a exibição dos votos na tela de votação nominal #1100 (#1101)

* resultado de votação nominal

* Update nominal_detail.html

* Update nominal_edit.html

* Adiciona URL do Interlegis ao rodapé da página.

* Somente mostra interessado se Doc Adm e mostra Autor em listagem de pesquisa

* HOT-FIX: identificador de protocolo errado

* Atualiza código devido a deprecated na drf

* HOT-FIX: possível fix para erro de render no search index

* Add pesquisa em Autor pelo campo ativo de parlamentar

* Gera migração referente ao commit #285d32e

Signed-off-by: Eliseu Egewarth <eliseuegewarth@gmail.com>

* Add bsc param de Autor nos Models lig via GR a Autor

* campo texto para autor documentos acessorios em lote (#1117)

* Conserto paliativo para doc acessorio em lote

* Conserta DocumentoAcessorioEmLote

* fix conserta acessorio em lote (#1119)

* Melhorias no detail de protocolo

* Captura erro de indexação de arquivo.

* Fix #1111

* Divide o template de resumo em blocos

* Cria a funcionalidade

* Pequena correcao

* Conserta erro teste

* Faz a ordenação para o arquivo impresso

* Adiciona permissão a tela de ordenação

* Faz o merge das migrations
pull/1126/head 3.1.4-BETA
Eduardo Calil 8 years ago
committed by Edward
parent
commit
2101ba2614
  1. 3
      sapl/base/urls.py
  2. 32
      sapl/materia/migrations/0005_auto_20170522_1051.py
  3. 16
      sapl/materia/migrations/0006_merge.py
  4. 22
      sapl/norma/migrations/0004_auto_20170522_1051.py
  5. 16
      sapl/norma/migrations/0005_merge.py
  6. 48
      sapl/relatorios/templates/pdf_sessao_plenaria_gerar.py
  7. 1
      sapl/rules/map_rules.py
  8. 81
      sapl/sessao/forms.py
  9. 35
      sapl/sessao/migrations/0003_resumoordenacao.py
  10. 25
      sapl/sessao/models.py
  11. 6
      sapl/sessao/urls.py
  12. 99
      sapl/sessao/views.py
  13. 8
      sapl/templates/sessao/blocos_resumo/conteudo_multimidia.html
  14. 17
      sapl/templates/sessao/blocos_resumo/expedientes.html
  15. 8
      sapl/templates/sessao/blocos_resumo/identificacao_basica.html
  16. 8
      sapl/templates/sessao/blocos_resumo/lista_presenca.html
  17. 8
      sapl/templates/sessao/blocos_resumo/lista_presenca_ordem_dia.html
  18. 25
      sapl/templates/sessao/blocos_resumo/materias_expediente.html
  19. 25
      sapl/templates/sessao/blocos_resumo/materias_ordem_dia.html
  20. 10
      sapl/templates/sessao/blocos_resumo/mesa_diretora.html
  21. 14
      sapl/templates/sessao/blocos_resumo/oradores_expediente.html
  22. 14
      sapl/templates/sessao/blocos_resumo/oradores_explicacoes.html
  23. 165
      sapl/templates/sessao/resumo.html
  24. 13
      sapl/templates/sessao/resumo_ordenacao.html
  25. 2
      sapl/templates/sistema.html

3
sapl/base/urls.py

@ -92,7 +92,8 @@ urlpatterns = [
# todos os sublinks de sistema devem vir acima deste
url(r'^sistema/$', permission_required('base.view_tabelas_auxiliares')
(TemplateView.as_view(template_name='sistema.html'))),
(TemplateView.as_view(template_name='sistema.html')),
name='sistema'),
url(r'^login/$', views.login, {
'template_name': 'base/login.html', 'authentication_form': LoginForm},

32
sapl/materia/migrations/0005_auto_20170522_1051.py

@ -0,0 +1,32 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.7 on 2017-05-22 10:51
from __future__ import unicode_literals
from django.db import migrations, models
import sapl.materia.models
import sapl.utils
class Migration(migrations.Migration):
dependencies = [
('materia', '0004_auto_20170504_1751'),
]
operations = [
migrations.AlterField(
model_name='documentoacessorio',
name='arquivo',
field=models.FileField(blank=True, null=True, upload_to=sapl.materia.models.anexo_upload_path, validators=[sapl.utils.restringe_tipos_de_arquivo_txt], verbose_name='Texto Integral'),
),
migrations.AlterField(
model_name='materialegislativa',
name='texto_original',
field=models.FileField(blank=True, null=True, upload_to=sapl.materia.models.materia_upload_path, validators=[sapl.utils.restringe_tipos_de_arquivo_txt], verbose_name='Texto Original'),
),
migrations.AlterField(
model_name='proposicao',
name='texto_original',
field=models.FileField(blank=True, null=True, upload_to=sapl.materia.models.materia_upload_path, validators=[sapl.utils.restringe_tipos_de_arquivo_txt], verbose_name='Texto Original'),
),
]

16
sapl/materia/migrations/0006_merge.py

@ -0,0 +1,16 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.7 on 2017-05-23 18:20
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('materia', '0005_auto_20170522_1051'),
('materia', '0005_auto_20170522_1904'),
]
operations = [
]

22
sapl/norma/migrations/0004_auto_20170522_1051.py

@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.7 on 2017-05-22 10:51
from __future__ import unicode_literals
from django.db import migrations, models
import sapl.norma.models
import sapl.utils
class Migration(migrations.Migration):
dependencies = [
('norma', '0003_auto_20170510_1549'),
]
operations = [
migrations.AlterField(
model_name='normajuridica',
name='texto_integral',
field=models.FileField(blank=True, null=True, upload_to=sapl.norma.models.norma_upload_path, validators=[sapl.utils.restringe_tipos_de_arquivo_txt], verbose_name='Texto Integral'),
),
]

16
sapl/norma/migrations/0005_merge.py

@ -0,0 +1,16 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.7 on 2017-05-23 18:20
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('norma', '0004_auto_20170522_1115'),
('norma', '0004_auto_20170522_1051'),
]
operations = [
]

48
sapl/relatorios/templates/pdf_sessao_plenaria_gerar.py

@ -6,6 +6,8 @@
"""
import time
from sapl.sessao.models import ResumoOrdenacao
from trml2pdf import parseString
@ -287,15 +289,43 @@ def principal(cabecalho_dic, rodape_dic, imagem, sessao, inf_basicas_dic, lst_me
tmp += '\t</template>\n'
tmp += paraStyle()
tmp += '\t<story>\n'
tmp += inf_basicas(inf_basicas_dic)
tmp += mesa(lst_mesa)
tmp += presenca(lst_presenca_sessao)
tmp += expedientes(lst_expedientes)
tmp += expediente_materia(lst_expediente_materia)
tmp += oradores_expediente(lst_oradores_expediente)
tmp += presenca_ordem_dia(lst_presenca_ordem_dia)
tmp += votacao(lst_votacao)
tmp += oradores(lst_oradores)
ordenacao = ResumoOrdenacao.objects.first()
dict_ord_template = {
'cont_mult': '',
'exp': expedientes(lst_expedientes),
'id_basica': inf_basicas(inf_basicas_dic),
'lista_p': presenca(lst_presenca_sessao),
'lista_p_o_d': presenca_ordem_dia(lst_presenca_ordem_dia),
'mat_exp': expediente_materia(lst_expediente_materia),
'mat_o_d': votacao(lst_votacao),
'mesa_d': mesa(lst_mesa),
'oradores_exped': oradores_expediente(lst_oradores_expediente),
'oradores_expli': oradores(lst_oradores)
}
if ordenacao:
tmp += dict_ord_template[ordenacao.primeiro]
tmp += dict_ord_template[ordenacao.segundo]
tmp += dict_ord_template[ordenacao.terceiro]
tmp += dict_ord_template[ordenacao.quarto]
tmp += dict_ord_template[ordenacao.quinto]
tmp += dict_ord_template[ordenacao.sexto]
tmp += dict_ord_template[ordenacao.setimo]
tmp += dict_ord_template[ordenacao.oitavo]
tmp += dict_ord_template[ordenacao.nono]
tmp += dict_ord_template[ordenacao.decimo]
else:
tmp += inf_basicas(inf_basicas_dic)
tmp += mesa(lst_mesa)
tmp += presenca(lst_presenca_sessao)
tmp += expedientes(lst_expedientes)
tmp += expediente_materia(lst_expediente_materia)
tmp += oradores_expediente(lst_oradores_expediente)
tmp += presenca_ordem_dia(lst_presenca_ordem_dia)
tmp += votacao(lst_votacao)
tmp += oradores(lst_oradores)
tmp += '\t</story>\n'
tmp += '</document>\n'

1
sapl/rules/map_rules.py

@ -251,6 +251,7 @@ rules_group_geral = {
(sessao.TipoResultadoVotacao, __base__),
(sessao.TipoExpediente, __base__),
(sessao.Bloco, __base__),
(sessao.ResumoOrdenacao, __base__),
(lexml.LexmlProvedor, __base__),
(lexml.LexmlPublicador, __base__),

81
sapl/sessao/forms.py

@ -28,7 +28,7 @@ def recupera_anos():
# apos a adicao do .dates(), por isso o reversed() abaixo
anos = [(k.year, k.year) for k in reversed(anos_list)]
return anos
except:
except Exception:
return []
@ -39,6 +39,18 @@ MES_CHOICES = [('', '---------')] + RANGE_MESES
DIA_CHOICES = [('', '---------')] + RANGE_DIAS_MES
ORDENACAO_RESUMO = [('cont_mult', 'Conteúdo Multimídia'),
('exp', 'Expedientes'),
('id_basica', 'Identificação Básica'),
('lista_p', 'Lista de Presença'),
('lista_p_o_d', 'Lista de Presença Ordem do Dia'),
('mat_exp', 'Matérias do Expediente'),
('mat_o_d', 'Matérias da Ordem do Dia'),
('mesa_d', 'Mesa Diretora'),
('oradores_exped', 'Oradores do Expediente'),
('oradores_expli', 'Oradores das Explicações Pessoais')]
class BancadaForm(ModelForm):
class Meta:
@ -359,3 +371,70 @@ class OradorExpedienteForm(ModelForm):
class PautaSessaoFilterSet(SessaoPlenariaFilterSet):
titulo = _('Pesquisa de Pauta de Sessão')
class ResumoOrdenacaoForm(forms.Form):
primeiro = forms.ChoiceField(label=_(''),
choices=ORDENACAO_RESUMO)
segundo = forms.ChoiceField(label=_(''),
choices=ORDENACAO_RESUMO)
terceiro = forms.ChoiceField(label=u'',
choices=ORDENACAO_RESUMO)
quarto = forms.ChoiceField(label=_(''),
choices=ORDENACAO_RESUMO)
quinto = forms.ChoiceField(label=_(''),
choices=ORDENACAO_RESUMO)
sexto = forms.ChoiceField(label=_(''),
choices=ORDENACAO_RESUMO)
setimo = forms.ChoiceField(label=_(''),
choices=ORDENACAO_RESUMO)
oitavo = forms.ChoiceField(label=_(''),
choices=ORDENACAO_RESUMO)
nono = forms.ChoiceField(label=_(''),
choices=ORDENACAO_RESUMO)
decimo = forms.ChoiceField(label=u'10°',
choices=ORDENACAO_RESUMO)
def __init__(self, *args, **kwargs):
super(ResumoOrdenacaoForm, self).__init__(*args, **kwargs)
row1 = to_row(
[('primeiro', 12)])
row2 = to_row(
[('segundo', 12)])
row3 = to_row(
[('terceiro', 12)])
row4 = to_row(
[('quarto', 12)])
row5 = to_row(
[('quinto', 12)])
row6 = to_row(
[('sexto', 12)])
row7 = to_row(
[('setimo', 12)])
row8 = to_row(
[('oitavo', 12)])
row9 = to_row(
[('nono', 12)])
row10 = to_row(
[('decimo', 12)])
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset(_(''),
row1, row2, row3, row4, row5,
row6, row7, row8, row9, row10,
form_actions(save_label='Atualizar'))
)
def clean(self):
cleaned_data = self.cleaned_data
for c1 in cleaned_data:
i = 0
for c2 in cleaned_data:
if cleaned_data[str(c1)] == cleaned_data[str(c2)]:
i = i + 1
if i > 1:
raise ValidationError(_(
'Não é possível ter campos repetidos'))

35
sapl/sessao/migrations/0003_resumoordenacao.py

@ -0,0 +1,35 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.7 on 2017-05-22 10:51
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('sessao', '0002_sessaoplenaria_interativa'),
]
operations = [
migrations.CreateModel(
name='ResumoOrdenacao',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('primeiro', models.CharField(max_length=30)),
('segundo', models.CharField(max_length=30)),
('terceiro', models.CharField(max_length=30)),
('quarto', models.CharField(max_length=30)),
('quinto', models.CharField(max_length=30)),
('sexto', models.CharField(max_length=30)),
('setimo', models.CharField(max_length=30)),
('oitavo', models.CharField(max_length=30)),
('nono', models.CharField(max_length=30)),
('decimo', models.CharField(max_length=30)),
],
options={
'verbose_name': 'Ordenação do Resumo de uma Sessão',
'verbose_name_plural': 'Ordenação do Resumo de uma Sessão',
},
),
]

25
sapl/sessao/models.py

@ -493,3 +493,28 @@ class Bloco(models.Model):
def __str__(self):
return self.nome
@reversion.register()
class ResumoOrdenacao(models.Model):
'''
Tabela para registrar em qual ordem serão renderizados os componentes
da tela de resumo de uma sessão
'''
primeiro = models.CharField(max_length=30)
segundo = models.CharField(max_length=30)
terceiro = models.CharField(max_length=30)
quarto = models.CharField(max_length=30)
quinto = models.CharField(max_length=30)
sexto = models.CharField(max_length=30)
setimo = models.CharField(max_length=30)
oitavo = models.CharField(max_length=30)
nono = models.CharField(max_length=30)
decimo = models.CharField(max_length=30)
class Meta:
verbose_name = _('Ordenação do Resumo de uma Sessão')
verbose_name_plural = _('Ordenação do Resumo de uma Sessão')
def __str__(self):
return 'Ordenação do Resumo de uma Sessão'

6
sapl/sessao/urls.py

@ -10,7 +10,8 @@ from sapl.sessao.views import (AdicionarVariasMateriasExpediente,
PautaSessaoDetailView, PautaSessaoListView,
PesquisarPautaSessaoView,
PesquisarSessaoPlenariaView,
PresencaOrdemDiaView, PresencaView, ResumoView,
PresencaOrdemDiaView, PresencaView,
ResumoOrdenacaoView, ResumoView,
SessaoCrud, TipoExpedienteCrud,
TipoResultadoVotacaoCrud, TipoSessaoCrud,
VotacaoEditView, VotacaoExpedienteEditView,
@ -68,6 +69,9 @@ urlpatterns = [
include(BlocoCrud.get_urls())),
url(r'^sistema/cargo-bancada/',
include(CargoBancadaCrud.get_urls())),
url(r'^sistema/resumo-ordenacao/',
ResumoOrdenacaoView.as_view(),
name='resumo_ordenacao'),
url(r'^sessao/(?P<pk>\d+)/adicionar-varias-materias-expediente/',
AdicionarVariasMateriasExpediente.as_view(),
name='adicionar_varias_materias_expediente'),

99
sapl/sessao/views.py

@ -3,6 +3,7 @@ from re import sub
from django.contrib import messages
from django.contrib.auth.decorators import permission_required
from django.contrib.auth.mixins import PermissionRequiredMixin
from django.core.exceptions import MultipleObjectsReturned, ObjectDoesNotExist
from django.core.urlresolvers import reverse
from django.forms.utils import ErrorList
@ -13,7 +14,7 @@ from django.utils.decorators import method_decorator
from django.utils.html import strip_tags
from django.utils.translation import ugettext_lazy as _
from django.views.decorators.csrf import csrf_exempt
from django.views.generic import ListView, TemplateView
from django.views.generic import FormView, ListView, TemplateView
from django.views.generic.base import RedirectView
from django.views.generic.detail import DetailView
from django.views.generic.edit import FormMixin
@ -36,13 +37,14 @@ from sapl.sessao.forms import ExpedienteMateriaForm, OrdemDiaForm
from .forms import (AdicionarVariasMateriasFilterSet, ExpedienteForm,
ListMateriaForm, MesaForm, OradorExpedienteForm,
OradorForm, PautaSessaoFilterSet, PresencaForm,
ResumoOrdenacaoForm,
SessaoPlenariaFilterSet, VotacaoEditForm, VotacaoForm,
VotacaoNominalForm)
from .models import (Bancada, Bloco, CargoBancada, CargoMesa,
ExpedienteMateria, ExpedienteSessao, IntegranteMesa,
MateriaLegislativa, Orador, OradorExpediente, OrdemDia,
PresencaOrdemDia, RegistroVotacao, SessaoPlenaria,
SessaoPlenariaPresenca, TipoExpediente,
PresencaOrdemDia, RegistroVotacao, ResumoOrdenacao,
SessaoPlenaria, SessaoPlenariaPresenca, TipoExpediente,
TipoResultadoVotacao, TipoSessaoPlenaria, VotoNominal,
VotoParlamentar)
@ -930,6 +932,48 @@ class MesaView(FormMixin, DetailView):
return reverse('sapl.sessao:mesa', kwargs={'pk': pk})
class ResumoOrdenacaoView(PermissionRequiredMixin, FormView):
template_name = 'sessao/resumo_ordenacao.html'
form_class = ResumoOrdenacaoForm
permission_required = 'sessao.change_resumoordenacao'
def get_success_url(self):
return reverse('sapl.base:sistema')
def get_initial(self):
ordenacao = ResumoOrdenacao.objects.first()
if ordenacao:
return {'primeiro': ordenacao.primeiro,
'segundo': ordenacao.segundo,
'terceiro': ordenacao.terceiro,
'quarto': ordenacao.quarto,
'quinto': ordenacao.quinto,
'sexto': ordenacao.sexto,
'setimo': ordenacao.setimo,
'oitavo': ordenacao.oitavo,
'nono': ordenacao.nono,
'decimo': ordenacao.decimo}
return self.initial.copy()
def form_valid(self, form):
ordenacao = ResumoOrdenacao.objects.get_or_create()[0]
ordenacao.primeiro = form.cleaned_data['primeiro']
ordenacao.segundo = form.cleaned_data['segundo']
ordenacao.terceiro = form.cleaned_data['terceiro']
ordenacao.quarto = form.cleaned_data['quarto']
ordenacao.quinto = form.cleaned_data['quinto']
ordenacao.sexto = form.cleaned_data['sexto']
ordenacao.setimo = form.cleaned_data['setimo']
ordenacao.oitavo = form.cleaned_data['oitavo']
ordenacao.nono = form.cleaned_data['nono']
ordenacao.decimo = form.cleaned_data['decimo']
ordenacao.save()
return HttpResponseRedirect(self.get_success_url())
class ResumoView(DetailView):
template_name = 'sessao/resumo.html'
model = SessaoPlenaria
@ -1121,13 +1165,54 @@ class ResumoView(DetailView):
if not partido_sigla:
partido_sigla = ''
oradores = {
'numero_ordem': orador.numero_ordem,
'parlamentar': parlamentar,
'sgl_partido': partido_sigla
}
'numero_ordem': orador.numero_ordem,
'parlamentar': parlamentar,
'sgl_partido': partido_sigla
}
oradores_explicacoes.append(oradores)
context.update({'oradores_explicacoes': oradores_explicacoes})
# =====================================================================
# Indica a ordem com a qual o template será renderizado
ordenacao = ResumoOrdenacao.objects.first()
dict_ord_template = {
'cont_mult': 'conteudo_multimidia.html',
'exp': 'expedientes.html',
'id_basica': 'identificacao_basica.html',
'lista_p': 'lista_presenca.html',
'lista_p_o_d': 'lista_presenca_ordem_dia.html',
'mat_exp': 'materias_expediente.html',
'mat_o_d': 'materias_ordem_dia.html',
'mesa_d': 'mesa_diretora.html',
'oradores_exped': 'oradores_expediente.html',
'oradores_expli': 'oradores_explicacoes.html'
}
if ordenacao:
context.update(
{'primeiro_ordenacao': dict_ord_template[ordenacao.primeiro],
'segundo_ordenacao': dict_ord_template[ordenacao.segundo],
'terceiro_ordenacao': dict_ord_template[ordenacao.terceiro],
'quarto_ordenacao': dict_ord_template[ordenacao.quarto],
'quinto_ordenacao': dict_ord_template[ordenacao.quinto],
'sexto_ordenacao': dict_ord_template[ordenacao.sexto],
'setimo_ordenacao': dict_ord_template[ordenacao.setimo],
'oitavo_ordenacao': dict_ord_template[ordenacao.oitavo],
'nono_ordenacao': dict_ord_template[ordenacao.nono],
'decimo_ordenacao': dict_ord_template[ordenacao.decimo]})
else:
context.update(
{'primeiro_ordenacao': dict_ord_template['id_basica'],
'segundo_ordenacao': dict_ord_template['cont_mult'],
'terceiro_ordenacao': dict_ord_template['mesa_d'],
'quarto_ordenacao': dict_ord_template['lista_p'],
'quinto_ordenacao': dict_ord_template['exp'],
'sexto_ordenacao': dict_ord_template['mat_exp'],
'setimo_ordenacao': dict_ord_template['oradores_exped'],
'oitavo_ordenacao': dict_ord_template['lista_p_o_d'],
'nono_ordenacao': dict_ord_template['mat_o_d'],
'decimo_ordenacao': dict_ord_template['oradores_expli']})
return self.render_to_response(context)

8
sapl/templates/sessao/blocos_resumo/conteudo_multimidia.html

@ -0,0 +1,8 @@
<fieldset>
<legend>Conteúdo Multimídia</legend>
<div class="row">
<div class="col-md-6">{{multimidia_audio}}</div>
<div class="col-md-6">{{multimidia_video}}</div>
</div>
</fieldset>
<br /><br /><br />

17
sapl/templates/sessao/blocos_resumo/expedientes.html

@ -0,0 +1,17 @@
<fieldset>
<legend>Expedientes</legend>
<table class="table">
<thead class="thead-default">
{% for e in expedientes %}
<tr>
<td>
<b>{{e.tipo}}: </b> <br /><br />
<div contenteditable="false" style="border:0.5px solid #BAB4B1; border-radius: 10px; background-color: rgba(225, 225, 225, .8);">
<p>{{e.conteudo|safe}}</p>
</div>
</td>
</tr>
{% endfor %}
</thead>
</table>
</fieldset>

8
sapl/templates/sessao/blocos_resumo/identificacao_basica.html

@ -0,0 +1,8 @@
<fieldset>
<legend>Identificação Básica</legend>
<div class="row">
{% for b in basica %}
<div class="col-md-4">{{b}}</div>
{% endfor %}
</div>
</fieldset>

8
sapl/templates/sessao/blocos_resumo/lista_presenca.html

@ -0,0 +1,8 @@
<fieldset>
<legend>Lista de Presença na Sessão</legend>
<div class="row">
{% for p in presenca_sessao %}
<div class="col-md-12">{{p.nome_parlamentar}} / {{ p.filiacao_atual }}</div>
{% endfor %}
</div>
</fieldset>

8
sapl/templates/sessao/blocos_resumo/lista_presenca_ordem_dia.html

@ -0,0 +1,8 @@
<fieldset>
<legend>Lista de Presença na Ordem do Dia</legend>
<div class="row">
{% for p in presenca_ordem %}
<div class="col-md-12">{{p.nome_parlamentar}} / {{ p.filiacao_atual }}</div>
{% endfor %}
</div>
</fieldset>

25
sapl/templates/sessao/blocos_resumo/materias_expediente.html

@ -0,0 +1,25 @@
<fieldset>
<legend>Matérias do Expediente</legend>
<table class="table table-striped table-hover">
<thead>
<tr>
<th>Matéria</th>
<th>Ementa</th>
<th>Resultado da Votação</th>
</tr>
</thead>
<tbody>
{% for m in materia_expediente %}
<tr>
<td>
{{m.numero}} - {{m.titulo}}
<br />
<b>Autor{{ m.autor|length|pluralize:"es" }}</b>: {{ m.autor|join:', ' }}
</td>
<td>{{m.ementa|safe}}</td>
<td><b>{{m.resultado}}</b><br/>{{m.resultado_observacao}}</td>
</tr>
{% endfor %}
</tbody>
</table>
</fieldset>

25
sapl/templates/sessao/blocos_resumo/materias_ordem_dia.html

@ -0,0 +1,25 @@
<fieldset>
<legend>Matérias da Ordem do Dia</legend>
<table class="table table-striped table-hover">
<thead>
<tr>
<th>Matéria</th>
<th>Ementa</th>
<th>Resultado da Votação</th>
</tr>
</thead>
<tbody>
{% for m in materias_ordem %}
<tr>
<td>
{{m.numero}} - {{m.titulo}}
<br />
<b>Autor{{ m.autor|length|pluralize:"es" }}</b>: {{ m.autor|join:', ' }}
</td>
<td>{{m.ementa|safe}}</td>
<td><b>{{m.resultado}}</b><br/>{{m.resultado_observacao}}</td>
</tr>
{% endfor %}
</tbody>
</table>
</fieldset>

10
sapl/templates/sessao/blocos_resumo/mesa_diretora.html

@ -0,0 +1,10 @@
<fieldset>
<legend>Mesa Diretora</legend>
<div class="row">
{% for m in mesa %}
<div class="col-md-12"><b>{{m.cargo}}:
</b>{{m.parlamentar.nome_parlamentar}} / {{ m.parlamentar.filiacao_atual }}
</div>
{% endfor %}
</div>
</fieldset>

14
sapl/templates/sessao/blocos_resumo/oradores_expediente.html

@ -0,0 +1,14 @@
<fieldset>
<legend>Oradores do Expediente</legend>
<div class="row">
<div class="col-md-6">Parlamentar</div>
<div class="col-md-6">Discurso</div>
</div>
<div class="row">
{% for o in oradores %}
<div class="col-md-6"><b>{{o.numero_ordem}}</b> - {{o.parlamentar}}</div>
<div class="col-md-6">{{o.url_discurso}}</div>
</br>
{% endfor %}
</div>
</fieldset>

14
sapl/templates/sessao/blocos_resumo/oradores_explicacoes.html

@ -0,0 +1,14 @@
<fieldset>
<legend>Oradores das Explicações Pessoais</legend>
<div class="row">
<div class="col-md-6">Parlamentar</div>
<div class="col-md-6">Discurso</div>
</div>
<div class="row">
{% for o in oradores_explicacoes %}
<div class="col-md-6"><b>{{o.numero_ordem}}</b> - {{o.parlamentar.nome_parlamentar}} / {{ o.parlamentar.filiacao_atual }}</div>
<div class="col-md-6">{{o.url_discurso}}</div>
</br>
{% endfor %}
</div>
</fieldset>

165
sapl/templates/sessao/resumo.html

@ -19,157 +19,36 @@
</strong>
</p>
</div>
<fieldset>
<legend>Identificação Básica</legend>
<div class="row">
{% for b in basica %}
<div class="col-md-4">{{b}}</div>
{% endfor %}
</div>
</fieldset>
<br /><br /><br />
<fieldset>
<legend>Conteúdo Multimídia</legend>
<div class="row">
<div class="col-md-6">{{multimidia_audio}}</div>
<div class="col-md-6">{{multimidia_video}}</div>
</div>
</fieldset>
<br /><br /><br />
{% include 'sessao/blocos_resumo/'|add:primeiro_ordenacao %}
<br /><br /><br />
<fieldset>
<legend>Mesa Diretora</legend>
<div class="row">
{% for m in mesa %}
<div class="col-md-12"><b>{{m.cargo}}:
</b>{{m.parlamentar.nome_parlamentar}} / {{ m.parlamentar.filiacao_atual }}</div>
{% endfor %}
</div>
</fieldset>
<br /><br /><br />
{% include 'sessao/blocos_resumo/'|add:segundo_ordenacao %}
<br /><br /><br />
<fieldset>
<legend>Lista de Presença na Sessão</legend>
<div class="row">
{% for p in presenca_sessao %}
<div class="col-md-12">{{p.nome_parlamentar}} / {{ p.filiacao_atual }}</div>
{% endfor %}
</div>
</fieldset>
<br /><br /><br />
{% include 'sessao/blocos_resumo/'|add:terceiro_ordenacao %}
<br /><br /><br />
<fieldset>
<legend>Expedientes</legend>
<table class="table">
<thead class="thead-default">
{% for e in expedientes %}
<tr>
<td>
<b>{{e.tipo}}: </b> <br /><br />
<div contenteditable="false" style="border:0.5px solid #BAB4B1; border-radius: 10px; background-color: rgba(225, 225, 225, .8);">
<p>{{e.conteudo|safe}}</p>
</div>
</td>
</tr>
{% endfor %}
</thead>
</table>
</fieldset>
<br /><br /><br />
{% include 'sessao/blocos_resumo/'|add:quarto_ordenacao %}
<br /><br /><br />
<fieldset>
<legend>Matérias do Expediente</legend>
<table class="table table-striped table-hover">
<thead>
<tr>
<th>Matéria</th>
<th>Ementa</th>
<th>Resultado da Votação</th>
</tr>
</thead>
<tbody>
{% for m in materia_expediente %}
<tr>
<td>
{{m.numero}} - {{m.titulo}}
<br />
<b>Autor{{ m.autor|length|pluralize:"es" }}</b>: {{ m.autor|join:', ' }}
</td>
<td>{{m.ementa|safe}}</td>
<td><b>{{m.resultado}}</b><br/>{{m.resultado_observacao}}</td>
</tr>
{% endfor %}
</tbody>
</table>
</fieldset>
<br /><br /><br />
{% include 'sessao/blocos_resumo/'|add:quinto_ordenacao %}
<br /><br /><br />
<fieldset>
<legend>Oradores do Expediente</legend>
<div class="row">
<div class="col-md-6">Parlamentar</div>
<div class="col-md-6">Discurso</div>
</div>
<div class="row">
{% for o in oradores %}
<div class="col-md-6"><b>{{o.numero_ordem}}</b> - {{o.parlamentar}}</div>
<div class="col-md-6">{{o.url_discurso}}</div>
</br>
{% endfor %}
</div>
</fieldset>
<br /><br /><br />
{% include 'sessao/blocos_resumo/'|add:sexto_ordenacao %}
<br /><br /><br />
<fieldset>
<legend>Lista de Presença na Ordem do Dia</legend>
<div class="row">
{% for p in presenca_ordem %}
<div class="col-md-12">{{p.nome_parlamentar}} / {{ p.filiacao_atual }}</div>
{% endfor %}
</div>
</fieldset>
<br /><br /><br />
{% include 'sessao/blocos_resumo/'|add:setimo_ordenacao %}
<br /><br /><br />
<fieldset>
<legend>Matérias da Ordem do Dia</legend>
<table class="table table-striped table-hover">
<thead>
<tr>
<th>Matéria</th>
<th>Ementa</th>
<th>Resultado da Votação</th>
</tr>
</thead>
<tbody>
{% for m in materias_ordem %}
<tr>
<td>
{{m.numero}} - {{m.titulo}}
<br />
<b>Autor{{ m.autor|length|pluralize:"es" }}</b>: {{ m.autor|join:', ' }}
</td>
<td>{{m.ementa|safe}}</td>
<td><b>{{m.resultado}}</b><br/>{{m.resultado_observacao}}</td>
</tr>
{% endfor %}
</tbody>
</table>
</fieldset>
{% include 'sessao/blocos_resumo/'|add:oitavo_ordenacao %}
<br /><br /><br />
{% include 'sessao/blocos_resumo/'|add:nono_ordenacao %}
<br /><br /><br />
{% include 'sessao/blocos_resumo/'|add:decimo_ordenacao %}
<br /><br /><br />
<fieldset>
<legend>Oradores das Explicações Pessoais</legend>
<div class="row">
<div class="col-md-6">Parlamentar</div>
<div class="col-md-6">Discurso</div>
</div>
<div class="row">
{% for o in oradores_explicacoes %}
<div class="col-md-6"><b>{{o.numero_ordem}}</b> - {{o.parlamentar.nome_parlamentar}} / {{ o.parlamentar.filiacao_atual }}</div>
<div class="col-md-6">{{o.url_discurso}}</div>
</br>
{% endfor %}
</div>
</fieldset>
{% endblock detail_content %}

13
sapl/templates/sessao/resumo_ordenacao.html

@ -0,0 +1,13 @@
{% extends "crud/form.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block title %}
<h1 class="page-header">Ordenação do Resumo</h1>
{% endblock %}
{% block base_content %}
{% crispy form %}
{% endblock %}

2
sapl/templates/sistema.html

@ -82,7 +82,7 @@
<div class="col-md-6"><a href="{% url 'sapl.sessao:tiporesultadovotacao_list' %}" class="btn btn-link">Tipo de Resultado da Votação</a></div>
<div class="col-md-6"><a href="#" class="btn btn-link">Cadastro dos endereços dos computadores dos parlamentares</a></div>
<div class="col-md-6"><a href="{% url 'sapl.sessao:tipoexpediente_list' %}" class="btn btn-link">Tipo de Expediente</a></div>
<div class="col-md-6"><a href="#" class="btn btn-link">Propriedades do Painel Eletrônico</a></div>
<div class="col-md-6"><a href="{% url 'sapl.sessao:resumo_ordenacao' %}" class="btn btn-link">Ordenação do Resumo</a></div>
</div>
<hr />

Loading…
Cancel
Save