Browse Source

3149 - Situação em Pauta de Sessão (#3220)

* Adiciona condicional para Situação da Matéria em Pauta

* Comenta uri de pauta descontinuada
pull/3226/head
Vinícius Cantuária 5 years ago
committed by GitHub
parent
commit
b3ceebc847
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      sapl/relatorios/urls.py
  2. 3
      sapl/relatorios/views.py
  3. 138
      sapl/sessao/views.py
  4. 46
      sapl/templates/relatorios/relatorio_pauta_sessao.html
  5. 82
      sapl/templates/sessao/pauta_sessao_detail.html

4
sapl/relatorios/urls.py

@ -27,8 +27,8 @@ urlpatterns = [
relatorio_protocolo, name='relatorio_protocolo'),
url(r'^relatorios/(?P<nro>\d+)/(?P<ano>\d+)/etiqueta-protocolo$',
relatorio_etiqueta_protocolo, name='relatorio_etiqueta_protocolo'),
url(r'^relatorios/pauta-sessao/(?P<pk>\d+)/$',
relatorio_pauta_sessao, name='relatorio_pauta_sessao'),
# url(r'^relatorios/pauta-sessao/(?P<pk>\d+)/$',
# relatorio_pauta_sessao, name='relatorio_pauta_sessao'),
url(r'^relatorios/(?P<pk>\d+)/resumo_ata$',
resumo_ata_pdf, name='resumo_ata_pdf'),
url(r'^relatorios/(?P<pk>\d+)/sessao-plenaria-pdf$',

3
sapl/relatorios/views.py

@ -1368,8 +1368,7 @@ def relatorio_normas_por_autor(obj, request, context):
def relatorio_pauta_sessao_weasy(obj, request, context):
sessao = context['object']
info = "Pauta da {} ({} - {}) Legislatura".format(sessao, sessao.legislatura.data_inicio.year,
sessao.legislatura.data_fim.year)
info = f"Pauta da {sessao} ({sessao.legislatura.data_inicio.year} - {sessao.legislatura.data_fim.year}) Legislatura"
return cria_relatorio(request, context, 'relatorios/relatorio_pauta_sessao.html', info)

138
sapl/sessao/views.py

@ -29,7 +29,7 @@ from sapl.crud.base import (RP_DETAIL, RP_LIST, Crud, CrudAux,
PermissionRequiredForAppCrudMixin, make_pagination)
from sapl.materia.forms import filtra_tramitacao_status
from sapl.materia.models import (Autoria, TipoMateriaLegislativa,
Tramitacao, MateriaEmTramitacao)
Tramitacao, MateriaEmTramitacao, Numeracao)
from sapl.materia.views import MateriaLegislativaPesquisaView
from sapl.parlamentares.models import (Filiacao, Legislatura, Mandato,
Parlamentar, SessaoLegislativa)
@ -3355,38 +3355,21 @@ class PautaSessaoDetailView(DetailView):
# =====================================================================
# Identificação Básica
abertura = self.object.data_inicio.strftime('%d/%m/%Y')
if self.object.data_fim:
encerramento = self.object.data_fim.strftime('%d/%m/%Y')
else:
encerramento = ""
encerramento = self.object.data_fim.strftime('%d/%m/%Y') if self.object.data_fim else ""
hora_inicio = self.object.hora_inicio
hora_fim = self.object.hora_fim
context.update({'basica': [
_('Tipo de Sessão: %(tipo)s') % {'tipo': self.object.tipo},
_('Abertura: %(abertura)s - %(hora_inicio)s') % {
'abertura': abertura, 'hora_inicio': hora_inicio},
_('Encerramento: %(encerramento)s - %(hora_fim)s') % {
'encerramento': encerramento, 'hora_fim': hora_fim},
]})
context.update({
'basica': [
_(f'Tipo de Sessão: {self.object.tipo}'),
_(f'Abertura: {abertura} - {hora_inicio}'),
_(f'Encerramento: {encerramento} - {hora_fim}')
]
})
# =====================================================================
# Matérias Expediente
materias = ExpedienteMateria.objects.filter(
sessao_plenaria_id=self.object.id)
materias_expediente = []
for m in materias:
ementa = m.materia.ementa
titulo = m.materia
numero = m.numero_ordem
ultima_tramitacao = m.materia.tramitacao_set.last()
situacao = ultima_tramitacao.status if ultima_tramitacao else None
if situacao is None:
situacao = _("Não informada")
for m in ExpedienteMateria.objects.select_related("materia").filter(sessao_plenaria_id=self.object.id):
rv = m.registrovotacao_set.all()
if rv:
resultado = rv[0].tipo_resultado_votacao.nome
@ -3395,60 +3378,45 @@ class PautaSessaoDetailView(DetailView):
resultado = _('Matéria não votada')
resultado_observacao = _(' ')
autoria = Autoria.objects.filter(materia_id=m.materia_id)
autor = [str(x.autor) for x in autoria]
mat = {'id': m.materia_id,
'ementa': ementa,
'observacao': m.observacao,
'titulo': titulo,
'numero': numero,
'resultado': resultado,
'resultado_observacao': resultado_observacao,
'situacao': situacao,
'autor': autor
}
materias_expediente.append(mat)
ultima_tramitacao = m.materia.tramitacao_set.last()
numeracao = Numeracao.objects.filter(materia=m.materia).first()
materias_expediente.append({
'id': m.materia_id,
'ementa': m.materia.ementa,
'observacao': m.observacao,
'titulo': m.materia,
'numero': m.numero_ordem,
'resultado': resultado,
'resultado_observacao': resultado_observacao,
'situacao': ultima_tramitacao.status if ultima_tramitacao else _("Não informada"),
'processo': f'{str(numeracao.numero_materia)}/{str(numeracao.ano_materia)}' if numeracao else '-',
'autor': [str(x.autor) for x in Autoria.objects.select_related("autor").filter(materia_id=m.materia_id)]
})
context.update({'materia_expediente': materias_expediente})
# =====================================================================
# Expedientes
expediente = ExpedienteSessao.objects.filter(
sessao_plenaria_id=self.object.id).order_by('tipo__ordenacao')
expedientes = []
for e in expediente:
for e in ExpedienteSessao.objects.select_related("tipo").filter(sessao_plenaria_id=self.object.id)\
.order_by('tipo__ordenacao'):
conteudo = e.conteudo
from sapl.relatorios.views import is_empty
if not is_empty(conteudo):
tipo = e.tipo
conteudo = sub('&nbsp;', ' ', conteudo)
ex = {'tipo': tipo, 'conteudo': conteudo}
expedientes.append(ex)
expedientes.append({'tipo': tipo, 'conteudo': conteudo})
context.update({'expedientes': expedientes})
# =====================================================================
# Orador Expediente
oradores = OradorExpediente.objects.filter(
sessao_plenaria_id=self.object.id).order_by('numero_ordem')
context.update({'oradores': oradores})
context.update({
'oradores': OradorExpediente.objects.filter(sessao_plenaria_id=self.object.id).order_by('numero_ordem')
})
# =====================================================================
# Matérias Ordem do Dia
ordem = OrdemDia.objects.filter(
sessao_plenaria_id=self.object.id)
materias_ordem = []
for o in ordem:
ementa = o.materia.ementa
titulo = o.materia
numero = o.numero_ordem
ultima_tramitacao = o.materia.tramitacao_set.last()
situacao = ultima_tramitacao.status if ultima_tramitacao else None
if situacao is None:
situacao = _("Não informada")
for o in OrdemDia.objects.select_related("materia").filter(sessao_plenaria_id=self.object.id):
# Verificar resultado
rv = o.registrovotacao_set.all()
if rv:
@ -3458,29 +3426,29 @@ class PautaSessaoDetailView(DetailView):
resultado = _('Matéria não votada')
resultado_observacao = _(' ')
autoria = Autoria.objects.filter(
materia_id=o.materia_id)
autor = [str(x.autor) for x in autoria]
mat = {'id': o.materia_id,
'ementa': ementa,
'observacao': o.observacao,
'titulo': titulo,
'numero': numero,
'resultado': resultado,
'resultado_observacao': resultado_observacao,
'situacao': situacao,
'autor': autor
}
materias_ordem.append(mat)
context.update({'materias_ordem': materias_ordem})
context.update({'subnav_template_name': 'sessao/pauta_subnav.yaml'})
ultima_tramitacao = o.materia.tramitacao_set.last()
numeracao = Numeracao.objects.filter(materia=m.materia).first()
materias_ordem.append({
'id': o.materia_id,
'ementa': o.materia.ementa,
'observacao': o.observacao,
'titulo': o.materia,
'numero': o.numero_ordem,
'resultado': resultado,
'resultado_observacao': resultado_observacao,
'situacao': ultima_tramitacao.status if ultima_tramitacao else _("Não informada"),
'processo': f'{str(numeracao.numero_materia)}/{str(numeracao.ano_materia)}' if numeracao else '-',
'autor': [str(x.autor) for x in Autoria.objects.select_related("autor").filter(materia_id=o.materia_id)]
})
is_pdf = True if request.build_absolute_uri().split(
'/')[-1] == 'pdf' else False
context.update({
'materias_ordem': materias_ordem,
'subnav_template_name': 'sessao/pauta_subnav.yaml'
})
if is_pdf:
# Verifica se é um PDF
if request.build_absolute_uri().split('/')[-1] == 'pdf':
return relatorio_pauta_sessao_weasy(self, request, context)
else:
return self.render_to_response(context)

46
sapl/templates/relatorios/relatorio_pauta_sessao.html

@ -16,34 +16,42 @@
<h2 class="gray-title">Matérias do Expediente</h2>
{% if materia_expediente %}
<table class="grayTable">
<thead><tr><th>Matéria</th><th>Ementa</th></tr></thead>
<thead><tr><th>Matéria</th><th>Ementa</th> {% if not object.finalizada %} <th>Situação</th> {% endif %} </tr></thead>
{% for m in materia_expediente %}
<tr>
<td style="width:30%; font-size: x-small;">
{{ m.numero }} - {{ m.titulo }}<br />
<b>Autor{{ m.autor|length|pluralize:"es" }}</b>: {{ m.autor|join:', ' }}
</td>
<td style="width:70%;">
{{ m.ementa|safe }}<br>{{ m.observacao|linebreaksbr|safe }}
</td>
</tr>
<tr>
<td style="width:20%;">
{{ m.numero }} - {{ m.titulo }}<br />
<b>Processo</b>: {{ m.processo }}<br/>
<b>Autor{{ m.autor|length|pluralize:"es" }}</b>: {{ m.autor|join:', ' }}
</td>
<td style="width:60%;">
{{ m.ementa|safe }}<br>{{ m.observacao|linebreaksbr|safe }}
</td>
{% if not object.finalizada %}
<td style="width:20%;">{{m.situacao|linebreaksbr|safe}}</td>
{% endif %}
</tr>
{% endfor %}
</table>
</table>
{% else %}
<b>Não existem Matérias de Expediente para essa Sessão Plenária</b>
{% endif %}
<h2 class="gray-title">Matérias da Ordem do Dia</h2>
{% if materias_ordem %}
<table class="grayTable">
<thead><tr><th>Matéria</th><th>Ementa</th></tr></thead>
<thead><tr><th>Matéria</th><th>Ementa</th> {% if not object.finalizada %} <th>Situação</th> {% endif %} </tr></thead>
{% for m in materias_ordem %}
<tr>
<td style="width:30%; font-size: x-small;">
{{m.numero}} - <b">{{m.titulo}}</b><br />
<b>Autor{{ m.autor|length|pluralize:"es" }}</b>: {{ m.autor|join:', ' }}
</td>
<td style="width:70%;">{{m.ementa|safe}}<br>{{m.observacao|linebreaksbr|safe}}</td>
</tr>
<tr>
<td style="width:20%;">
{{m.numero}} - <b>{{m.titulo}}</b><br />
<b>Processo</b>: {{ m.processo }}<br/>
<b>Autor{{ m.autor|length|pluralize:"es" }}</b>: {{ m.autor|join:', ' }}
</td>
<td style="width:60%;">{{m.ementa|safe}}<br>{{m.observacao|linebreaksbr|safe}}</td>
{% if not object.finalizada %}
<td style="width:20%;">{{m.situacao|linebreaksbr|safe}}</td>
{% endif %}
</tr>
{% endfor %}
</table>
{% else %}

82
sapl/templates/sessao/pauta_sessao_detail.html

@ -19,61 +19,67 @@
<fieldset>
<legend>Expedientes</legend>
<table class="table">
<thead class="thead-default">
<thead class="thead-default">
{% for e in expedientes %}
<tr>
<td>
<b>{{e.tipo}}: </b> <br><br>
<div
style="border:0.5px solid #BAB4B1; border-radius: 10px;
background-color: rgba(225, 225, 225, .8);"
>
<p>{{e.conteudo|safe}}</p>
</div>
</td>
</tr>
<tr>
<td>
<b>{{e.tipo}}: </b> <br><br>
<div 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>
</thead>
</table>
</fieldset>
<fieldset>
<legend>Matérias do Expediente</legend>
{% if materia_expediente %}
<table class="table table-striped">
<thead><tr><th>Matéria</th><th>Ementa</th></tr></thead>
{% for m in materia_expediente %}
<tr>
<td style="width:20%;">
{{m.numero}} -
<a href="{% url 'sapl.materia:materialegislativa_detail' m.id %}">{{m.titulo}}</a><br/>
<b>Autor{{ m.autor|length|pluralize:"es" }}</b>: {{ m.autor|join:', ' }}
</td>
<td style="width:70%;">{{m.ementa|safe}}<br>{{m.observacao|linebreaksbr|safe}}</td>
<thead><tr><th>Matéria</th><th>Ementa</th> {% if not object.finalizada %} <th>Situação</th> {% endif %} </tr></thead>
{% for m in materia_expediente %}
<tr>
<td style="width:20%;">
{{m.numero}} -
<a href="{% url 'sapl.materia:materialegislativa_detail' m.id %}">{{m.titulo}}</a><br/>
<b>Processo</b>: {{ m.processo }}<br/>
<b>Autor{{ m.autor|length|pluralize:"es" }}</b>: {{ m.autor|join:', ' }}
</td>
<td style="width:60%;">{{m.ementa|safe}}<br>{{m.observacao|linebreaksbr|safe}}</td>
{% if not object.finalizada %}
<td style="width:20%;">{{m.situacao|linebreaksbr|safe}}</td>
{% endif %}
</tr>
{% endfor %}
</table>
{% else %}
<strong>Não existem Matérias de Expediente para essa Sessão Plenária</strong>
{% endif %}
{% endfor %}
</table>
{% else %}
<strong>Não existem Matérias de Expediente para essa Sessão Plenária</strong>
{% endif %}
</fieldset>
<fieldset>
<legend>Matérias da Ordem do Dia</legend>
{% if materias_ordem %}
<table class="table table-striped">
<thead><tr><th>Matéria</th><th>Ementa</th></tr></thead>
<thead><tr><th>Matéria</th><th>Ementa</th> {% if not object.finalizada %} <th>Situação</th> {% endif %} </tr></thead>
{% for m in materias_ordem %}
<tr>
<td style="width:20%;">
{{m.numero}} -
<a href="{% url 'sapl.materia:materialegislativa_detail' m.id %}">{{m.titulo}}</a><br/>
<b>Autor{{ m.autor|length|pluralize:"es" }}</b>: {{ m.autor|join:', ' }}
</td>
<td style="width:70%;">{{m.ementa|safe}}<br>{{m.observacao|linebreaksbr|safe}}</td>
</tr>
<tr>
<td style="width:20%;">
{{m.numero}} -
<a href="{% url 'sapl.materia:materialegislativa_detail' m.id %}">{{m.titulo}}</a><br/>
<b>Processo</b>: {{ m.processo }}<br/>
<b>Autor{{ m.autor|length|pluralize:"es" }}</b>: {{ m.autor|join:', ' }}
</td>
<td style="width:60%;">{{m.ementa|safe}}<br>{{m.observacao|linebreaksbr|safe}}</td>
{% if not object.finalizada %}
<td style="width:20%;">{{m.situacao|linebreaksbr|safe}}</td>
{% endif %}
</tr>
{% endfor %}
</table>
{% else %}
{% else %}
<strong>Não existem Matérias de Ordem do Dia para essa Sessão Plenária</strong>
{% endif %}
{% endif %}
</fieldset>
{% endblock base_content %}

Loading…
Cancel
Save