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'), relatorio_protocolo, name='relatorio_protocolo'),
url(r'^relatorios/(?P<nro>\d+)/(?P<ano>\d+)/etiqueta-protocolo$', url(r'^relatorios/(?P<nro>\d+)/(?P<ano>\d+)/etiqueta-protocolo$',
relatorio_etiqueta_protocolo, name='relatorio_etiqueta_protocolo'), relatorio_etiqueta_protocolo, name='relatorio_etiqueta_protocolo'),
url(r'^relatorios/pauta-sessao/(?P<pk>\d+)/$', # url(r'^relatorios/pauta-sessao/(?P<pk>\d+)/$',
relatorio_pauta_sessao, name='relatorio_pauta_sessao'), # relatorio_pauta_sessao, name='relatorio_pauta_sessao'),
url(r'^relatorios/(?P<pk>\d+)/resumo_ata$', url(r'^relatorios/(?P<pk>\d+)/resumo_ata$',
resumo_ata_pdf, name='resumo_ata_pdf'), resumo_ata_pdf, name='resumo_ata_pdf'),
url(r'^relatorios/(?P<pk>\d+)/sessao-plenaria-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): def relatorio_pauta_sessao_weasy(obj, request, context):
sessao = context['object'] sessao = context['object']
info = "Pauta da {} ({} - {}) Legislatura".format(sessao, sessao.legislatura.data_inicio.year, info = f"Pauta da {sessao} ({sessao.legislatura.data_inicio.year} - {sessao.legislatura.data_fim.year}) Legislatura"
sessao.legislatura.data_fim.year)
return cria_relatorio(request, context, 'relatorios/relatorio_pauta_sessao.html', info) 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) PermissionRequiredForAppCrudMixin, make_pagination)
from sapl.materia.forms import filtra_tramitacao_status from sapl.materia.forms import filtra_tramitacao_status
from sapl.materia.models import (Autoria, TipoMateriaLegislativa, from sapl.materia.models import (Autoria, TipoMateriaLegislativa,
Tramitacao, MateriaEmTramitacao) Tramitacao, MateriaEmTramitacao, Numeracao)
from sapl.materia.views import MateriaLegislativaPesquisaView from sapl.materia.views import MateriaLegislativaPesquisaView
from sapl.parlamentares.models import (Filiacao, Legislatura, Mandato, from sapl.parlamentares.models import (Filiacao, Legislatura, Mandato,
Parlamentar, SessaoLegislativa) Parlamentar, SessaoLegislativa)
@ -3355,38 +3355,21 @@ class PautaSessaoDetailView(DetailView):
# ===================================================================== # =====================================================================
# Identificação Básica # Identificação Básica
abertura = self.object.data_inicio.strftime('%d/%m/%Y') abertura = self.object.data_inicio.strftime('%d/%m/%Y')
if self.object.data_fim: encerramento = self.object.data_fim.strftime('%d/%m/%Y') if self.object.data_fim else ""
encerramento = self.object.data_fim.strftime('%d/%m/%Y')
else:
encerramento = ""
hora_inicio = self.object.hora_inicio hora_inicio = self.object.hora_inicio
hora_fim = self.object.hora_fim hora_fim = self.object.hora_fim
context.update({'basica': [ context.update({
_('Tipo de Sessão: %(tipo)s') % {'tipo': self.object.tipo}, 'basica': [
_('Abertura: %(abertura)s - %(hora_inicio)s') % { _(f'Tipo de Sessão: {self.object.tipo}'),
'abertura': abertura, 'hora_inicio': hora_inicio}, _(f'Abertura: {abertura} - {hora_inicio}'),
_('Encerramento: %(encerramento)s - %(hora_fim)s') % { _(f'Encerramento: {encerramento} - {hora_fim}')
'encerramento': encerramento, 'hora_fim': hora_fim}, ]
]}) })
# ===================================================================== # =====================================================================
# Matérias Expediente # Matérias Expediente
materias = ExpedienteMateria.objects.filter(
sessao_plenaria_id=self.object.id)
materias_expediente = [] materias_expediente = []
for m in materias: for m in ExpedienteMateria.objects.select_related("materia").filter(sessao_plenaria_id=self.object.id):
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")
rv = m.registrovotacao_set.all() rv = m.registrovotacao_set.all()
if rv: if rv:
resultado = rv[0].tipo_resultado_votacao.nome resultado = rv[0].tipo_resultado_votacao.nome
@ -3395,60 +3378,45 @@ class PautaSessaoDetailView(DetailView):
resultado = _('Matéria não votada') resultado = _('Matéria não votada')
resultado_observacao = _(' ') resultado_observacao = _(' ')
autoria = Autoria.objects.filter(materia_id=m.materia_id) ultima_tramitacao = m.materia.tramitacao_set.last()
autor = [str(x.autor) for x in autoria] numeracao = Numeracao.objects.filter(materia=m.materia).first()
mat = {'id': m.materia_id, materias_expediente.append({
'ementa': ementa, 'id': m.materia_id,
'observacao': m.observacao, 'ementa': m.materia.ementa,
'titulo': titulo, 'observacao': m.observacao,
'numero': numero, 'titulo': m.materia,
'resultado': resultado, 'numero': m.numero_ordem,
'resultado_observacao': resultado_observacao, 'resultado': resultado,
'situacao': situacao, 'resultado_observacao': resultado_observacao,
'autor': autor 'situacao': ultima_tramitacao.status if ultima_tramitacao else _("Não informada"),
} 'processo': f'{str(numeracao.numero_materia)}/{str(numeracao.ano_materia)}' if numeracao else '-',
materias_expediente.append(mat) 'autor': [str(x.autor) for x in Autoria.objects.select_related("autor").filter(materia_id=m.materia_id)]
})
context.update({'materia_expediente': materias_expediente}) context.update({'materia_expediente': materias_expediente})
# ===================================================================== # =====================================================================
# Expedientes # Expedientes
expediente = ExpedienteSessao.objects.filter(
sessao_plenaria_id=self.object.id).order_by('tipo__ordenacao')
expedientes = [] 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 conteudo = e.conteudo
from sapl.relatorios.views import is_empty from sapl.relatorios.views import is_empty
if not is_empty(conteudo): if not is_empty(conteudo):
tipo = e.tipo tipo = e.tipo
conteudo = sub('&nbsp;', ' ', conteudo) conteudo = sub('&nbsp;', ' ', conteudo)
ex = {'tipo': tipo, 'conteudo': conteudo} expedientes.append({'tipo': tipo, 'conteudo': conteudo})
expedientes.append(ex)
context.update({'expedientes': expedientes}) context.update({'expedientes': expedientes})
# ===================================================================== # =====================================================================
# Orador Expediente # Orador Expediente
oradores = OradorExpediente.objects.filter( context.update({
sessao_plenaria_id=self.object.id).order_by('numero_ordem') 'oradores': OradorExpediente.objects.filter(sessao_plenaria_id=self.object.id).order_by('numero_ordem')
context.update({'oradores': oradores}) })
# ===================================================================== # =====================================================================
# Matérias Ordem do Dia # Matérias Ordem do Dia
ordem = OrdemDia.objects.filter(
sessao_plenaria_id=self.object.id)
materias_ordem = [] materias_ordem = []
for o in ordem: for o in OrdemDia.objects.select_related("materia").filter(sessao_plenaria_id=self.object.id):
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")
# Verificar resultado # Verificar resultado
rv = o.registrovotacao_set.all() rv = o.registrovotacao_set.all()
if rv: if rv:
@ -3458,29 +3426,29 @@ class PautaSessaoDetailView(DetailView):
resultado = _('Matéria não votada') resultado = _('Matéria não votada')
resultado_observacao = _(' ') resultado_observacao = _(' ')
autoria = Autoria.objects.filter( ultima_tramitacao = o.materia.tramitacao_set.last()
materia_id=o.materia_id) numeracao = Numeracao.objects.filter(materia=m.materia).first()
autor = [str(x.autor) for x in autoria]
materias_ordem.append({
mat = {'id': o.materia_id, 'id': o.materia_id,
'ementa': ementa, 'ementa': o.materia.ementa,
'observacao': o.observacao, 'observacao': o.observacao,
'titulo': titulo, 'titulo': o.materia,
'numero': numero, 'numero': o.numero_ordem,
'resultado': resultado, 'resultado': resultado,
'resultado_observacao': resultado_observacao, 'resultado_observacao': resultado_observacao,
'situacao': situacao, 'situacao': ultima_tramitacao.status if ultima_tramitacao else _("Não informada"),
'autor': autor '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)]
materias_ordem.append(mat) })
context.update({'materias_ordem': materias_ordem})
context.update({'subnav_template_name': 'sessao/pauta_subnav.yaml'})
is_pdf = True if request.build_absolute_uri().split( context.update({
'/')[-1] == 'pdf' else False '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) return relatorio_pauta_sessao_weasy(self, request, context)
else: else:
return self.render_to_response(context) 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> <h2 class="gray-title">Matérias do Expediente</h2>
{% if materia_expediente %} {% if materia_expediente %}
<table class="grayTable"> <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 %} {% for m in materia_expediente %}
<tr> <tr>
<td style="width:30%; font-size: x-small;"> <td style="width:20%;">
{{ m.numero }} - {{ m.titulo }}<br /> {{ m.numero }} - {{ m.titulo }}<br />
<b>Autor{{ m.autor|length|pluralize:"es" }}</b>: {{ m.autor|join:', ' }} <b>Processo</b>: {{ m.processo }}<br/>
</td> <b>Autor{{ m.autor|length|pluralize:"es" }}</b>: {{ m.autor|join:', ' }}
<td style="width:70%;"> </td>
{{ m.ementa|safe }}<br>{{ m.observacao|linebreaksbr|safe }} <td style="width:60%;">
</td> {{ m.ementa|safe }}<br>{{ m.observacao|linebreaksbr|safe }}
</tr> </td>
{% if not object.finalizada %}
<td style="width:20%;">{{m.situacao|linebreaksbr|safe}}</td>
{% endif %}
</tr>
{% endfor %} {% endfor %}
</table> </table>
{% else %} {% else %}
<b>Não existem Matérias de Expediente para essa Sessão Plenária</b> <b>Não existem Matérias de Expediente para essa Sessão Plenária</b>
{% endif %} {% endif %}
<h2 class="gray-title">Matérias da Ordem do Dia</h2> <h2 class="gray-title">Matérias da Ordem do Dia</h2>
{% if materias_ordem %} {% if materias_ordem %}
<table class="grayTable"> <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 %} {% for m in materias_ordem %}
<tr> <tr>
<td style="width:30%; font-size: x-small;"> <td style="width:20%;">
{{m.numero}} - <b">{{m.titulo}}</b><br /> {{m.numero}} - <b>{{m.titulo}}</b><br />
<b>Autor{{ m.autor|length|pluralize:"es" }}</b>: {{ m.autor|join:', ' }} <b>Processo</b>: {{ m.processo }}<br/>
</td> <b>Autor{{ m.autor|length|pluralize:"es" }}</b>: {{ m.autor|join:', ' }}
<td style="width:70%;">{{m.ementa|safe}}<br>{{m.observacao|linebreaksbr|safe}}</td> </td>
</tr> <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 %} {% endfor %}
</table> </table>
{% else %} {% else %}

82
sapl/templates/sessao/pauta_sessao_detail.html

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

Loading…
Cancel
Save