Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion sapl/relatorios/templates/pdf_materia_gerar.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,10 @@ def materias(lst_materias):
# materias
tmp_data += '\t\t<para style="P1"> <b>' + \
dic['titulo'] + '</b> - <b>Autor: </b>' + \
dic['nom_autor'] + ' </para>\n'
dic['nom_autor']
if dic.get('nom_relator'):
tmp_data += ' - <b>Relator: </b>' + dic['nom_relator']
tmp_data += ' </para>\n'
if dic['txt_ementa'] != None:
txt_ementa = dic['txt_ementa'].replace('&', '&amp;')
tmp_data += '\t\t<para style="P2"> ' + txt_ementa + ' </para>\n'
Expand Down
29 changes: 9 additions & 20 deletions sapl/relatorios/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,13 @@ def get_materias(mats):
dic['nom_autor'] = ', '.join(
[str(autor) for autor in materia.autores.all()])

# Buscar relator atual da matéria
relatoria = materia.relatoria_set.filter(data_destituicao_relator__isnull=True).order_by('-data_designacao_relator').first()
if relatoria:
dic['nom_relator'] = str(relatoria.parlamentar)
else:
dic['nom_relator'] = ''

des_status = ''
txt_tramitacao = ''

Expand All @@ -143,27 +150,9 @@ def get_materias(mats):
'-data_tramitacao', '-id')

for tramitacao in tramitacoes:
des_status = tramitacao.status.descricao
dic['nom_relator'] = str(relatoria.parlamentar) if relatoria.parlamentar else ''
txt_tramitacao = tramitacao.texto

# for tramitacao in context.zsql
# .tramitacao_obter_zsql(cod_materia
# =materia.cod_materia,ind_ult_tramitacao=1):
# if tramitacao.cod_unid_tram_dest:
# cod_unid_tram = tramitacao.cod_unid_tram_dest
# else:
# cod_unid_tram = tramitacao.cod_unid_tram_local
# for unidade_tramitacao in
# context.zsql
# .unidade_tramitacao_obter_zsql(
# cod_unid_tramitacao = cod_unid_tram):
# if unidade_tramitacao.cod_orgao:
# dic['localizacao_atual']=unidade_tramitacao.nom_orgao
# else:
# dic['localizacao_atual']=unidade_tramitacao.nom_comissao
# des_status=tramitacao.des_status
# txt_tramitacao=tramitacao.txt_tramitacao

dic['nom_relator'] = ''
dic['des_situacao'] = des_status
dic['ultima_acao'] = txt_tramitacao

Expand Down
47 changes: 47 additions & 0 deletions sapl/sessao/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -402,6 +402,53 @@ class Meta:
def ementa(self):
return self.materia.ementa

@property
def turno_vigente(self):
"""
Retorna o código do turno vigente para esta inclusão na pauta.
Prioriza o campo `tramitacao` gravado na inclusão. Caso não haja,
busca a última tramitação com timestamp anterior ao início da sessão.
"""
# Usa a tramitação registrada na inclusão, se houver
if self.tramitacao and getattr(self.tramitacao, 'turno', None):
return self.tramitacao.turno

# Caso não haja tramitação registrada, calcula em função da sessão
try:
from django.conf import settings
import pytz
from datetime import datetime
except Exception:
return None

if not self.sessao_plenaria or not self.sessao_plenaria.data_inicio:
return None

# Monta datetime local da sessão a partir de data_inicio e hora_inicio
data_sessao = self.sessao_plenaria.data_inicio.strftime("%Y-%m-%d ")
hora = self.sessao_plenaria.hora_inicio or "00:00"
try:
data_hora_sessao = datetime.strptime(
data_sessao + hora, "%Y-%m-%d %H:%M")
except Exception:
return None

try:
tz_local = pytz.timezone(getattr(settings, 'TIME_ZONE', 'UTC'))
data_hora_sessao_utc = tz_local.localize(data_hora_sessao).astimezone(pytz.utc)
except Exception:
data_hora_sessao_utc = None

qs = self.materia.tramitacao_set.all()
if data_hora_sessao_utc is not None:
qs = qs.filter(timestamp__lt=data_hora_sessao_utc)

# Respeita a ordenação padrão de Tramitacao ('-data_tramitacao', '-id')
tr = qs.first()
if tr and getattr(tr, 'turno', None):
return tr.turno
return None

def __str__(self):
return 'Ordem do Dia/Expediente: %s - %s em %s' % (
self.numero_ordem, self.materia, self.sessao_plenaria)
Expand Down
6 changes: 2 additions & 4 deletions sapl/templates/sessao/leitura/leitura_bloco.html
Original file line number Diff line number Diff line change
Expand Up @@ -62,16 +62,14 @@ <h3 id='frase_selecione'>{% if expediente %} Selecione o(s) expediente(s) deseja
{% if o.materia.numero_protocolo %}
<strong>Protocolo:</strong> &nbsp; {{o.materia.numero_protocolo}}</br>
{% endif %}
{% if o.materia.tramitacao_set.first %}
{% if o.materia.tramitacao_set.first.turno %}
{% if o.turno_vigente %}
<strong>Turno:</strong>&nbsp;
{% for t in turno_choices %}
{% if t.0 == o.materia.tramitacao_set.first.turno %}
{% if t.0 == o.turno_vigente %}
{{ t.1 }}
{% endif %}
{% endfor %}<br>
{% endif %}
{% endif %}
<strong>Ementa:</strong>&nbsp;{{ o.materia.ementa|safe }}<br>
<p></p>
</td>
Expand Down
6 changes: 2 additions & 4 deletions sapl/templates/sessao/votacao/votacao_bloco.html
Original file line number Diff line number Diff line change
Expand Up @@ -63,16 +63,14 @@ <h3 id='frase_selecione'>{% if expediente %} Selecione o(s) expediente(s) deseja
{% if o.materia.numero_protocolo %}
<strong>Protocolo:</strong> &nbsp; {{o.materia.numero_protocolo}}</br>
{% endif %}
{% if o.materia.tramitacao_set.first %}
{% if o.materia.tramitacao_set.first.turno %}
{% if o.turno_vigente %}
<strong>Turno:</strong>&nbsp;
{% for t in turno_choices %}
{% if t.0 == o.materia.tramitacao_set.first.turno %}
{% if t.0 == o.turno_vigente %}
{{ t.1 }}
{% endif %}
{% endfor %}</br>
{% endif %}
{% endif %}
<strong>Ementa:</strong>&nbsp;{{ o.materia.ementa|safe }}</br>
<p></p>
</td>
Expand Down