Browse Source

Discussao materia

MateriaDiscussao
Gustavo 3 years ago
committed by Edward Oliveira
parent
commit
9b84988e9e
  1. 11
      sapl/painel/views.py
  2. 7
      sapl/sessao/models.py
  3. 49
      sapl/sessao/views.py
  4. 10
      sapl/templates/painel/index.html

11
sapl/painel/views.py

@ -355,7 +355,7 @@ def get_cronometro_status(request, name):
def get_materia_aberta(pk): def get_materia_aberta(pk):
return OrdemDia.objects.filter( return OrdemDia.objects.filter(
sessao_plenaria_id=pk, votacao_aberta=True).last() sessao_plenaria_id=pk).filter(Q(votacao_aberta=True) | Q(discussao_aberta=True)).last()
def get_presentes(pk, response, materia): def get_presentes(pk, response, materia):
@ -437,7 +437,7 @@ def get_presentes(pk, response, materia):
def get_materia_expediente_aberta(pk): def get_materia_expediente_aberta(pk):
return ExpedienteMateria.objects.filter( return ExpedienteMateria.objects.filter(
sessao_plenaria_id=pk, votacao_aberta=True).last() sessao_plenaria_id=pk).filter(Q(votacao_aberta=True) | Q(discussao_aberta=True)).last()
def response_nenhuma_materia(response): def response_nenhuma_materia(response):
@ -563,7 +563,8 @@ def get_dados_painel(request, pk):
'cronometro_ordem': get_cronometro_status(request, 'ordem'), 'cronometro_ordem': get_cronometro_status(request, 'ordem'),
'cronometro_consideracoes': get_cronometro_status(request, 'consideracoes'), 'cronometro_consideracoes': get_cronometro_status(request, 'consideracoes'),
'status_painel': sessao.painel_aberto, 'status_painel': sessao.painel_aberto,
'brasao': brasao 'brasao': brasao,
'discutir': False
} }
ordem_dia = get_materia_aberta(pk) ordem_dia = get_materia_aberta(pk)
@ -572,10 +573,14 @@ def get_dados_painel(request, pk):
# Caso tenha alguma matéria com votação aberta, ela é mostrada no painel # Caso tenha alguma matéria com votação aberta, ela é mostrada no painel
# com prioridade para Ordem do Dia. # com prioridade para Ordem do Dia.
if ordem_dia: if ordem_dia:
if ordem_dia.discussao_aberta == True:
response.update({'discutir':True})
return JsonResponse(get_votos( return JsonResponse(get_votos(
get_presentes(pk, response, ordem_dia), get_presentes(pk, response, ordem_dia),
ordem_dia)) ordem_dia))
elif expediente: elif expediente:
if expediente.discussao_aberta == True:
response.update({'discutir':True})
return JsonResponse(get_votos( return JsonResponse(get_votos(
get_presentes(pk, response, expediente), get_presentes(pk, response, expediente),
expediente)) expediente))

7
sapl/sessao/models.py

@ -381,6 +381,13 @@ class AbstractOrdemDia(models.Model):
choices=YES_NO_CHOICES, choices=YES_NO_CHOICES,
verbose_name=_('Registro de Votação Iniciado?') verbose_name=_('Registro de Votação Iniciado?')
) )
discussao_aberta = models.BooleanField(
null=True,
blank=True,
default=False,
choices=YES_NO_CHOICES,
verbose_name=_('Discurssão iniciada?')
)
class Meta: class Meta:
abstract = True abstract = True

49
sapl/sessao/views.py

@ -3,6 +3,7 @@ from collections import OrderedDict
from datetime import datetime from datetime import datetime
from re import sub from re import sub
import logging import logging
from urllib.request import parse_keqv_list
from django.conf import settings from django.conf import settings
from django.contrib import messages from django.contrib import messages
@ -117,10 +118,10 @@ def verifica_presenca(request, model, spk, is_leitura=False):
return True return True
def verifica_votacoes_abertas(request): def verifica_votacoes_abertas(request, pk):
votacoes_abertas = SessaoPlenaria.objects.filter( votacoes_abertas = SessaoPlenaria.objects.filter(
Q(ordemdia__votacao_aberta=True) | (Q(ordemdia__votacao_aberta=True) | Q(ordemdia__discussao_aberta=True) & ~Q(ordemdia__id=int(pk))) |
Q(expedientemateria__votacao_aberta=True)).distinct() (Q(expedientemateria__votacao_aberta=True) | Q(expedientemateria__discussao_aberta=True) & ~Q(expedientemateria__id=int(pk)))).distinct()
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -185,9 +186,15 @@ def abrir_votacao(request, pk, spk):
materia_votacao = model.objects.get(id=pk) materia_votacao = model.objects.get(id=pk)
is_leitura = materia_votacao.tipo_votacao == 4 is_leitura = materia_votacao.tipo_votacao == 4
if (verifica_presenca(request, presenca_model, spk, is_leitura) and if (verifica_presenca(request, presenca_model, spk, is_leitura) and
verifica_votacoes_abertas(request) and verifica_votacoes_abertas(request, pk) and
verifica_sessao_iniciada(request, spk, is_leitura)): verifica_sessao_iniciada(request, spk, is_leitura)):
materia_votacao.votacao_aberta = True if 'discutir' in request.GET:
materia_votacao.discussao_aberta = True
else:
if materia_votacao.discussao_aberta == True:
materia_votacao.discussao_aberta = False
if 'cancelar_discussao' not in request.GET:
materia_votacao.votacao_aberta = True
sessao = SessaoPlenaria.objects.get(id=spk) sessao = SessaoPlenaria.objects.get(id=spk)
sessao.painel_aberto = True sessao.painel_aberto = True
sessao.save() sessao.save()
@ -325,7 +332,7 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
if obj.tipo_votacao != LEITURA: if obj.tipo_votacao != LEITURA:
btn_registrar = ''' btn_registrar = '''
<form action="%s"> <form action="%s">
<input type="submit" class="btn btn-primary" <input type="submit" class="btn btn-primary btn-block"
value="Registrar Votação" /> value="Registrar Votação" />
%s %s
</form>''' % ( </form>''' % (
@ -333,7 +340,7 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
else: else:
btn_registrar = ''' btn_registrar = '''
<form action="%s"> <form action="%s">
<input type="submit" class="btn btn-primary" <input type="submit" class="btn btn-primary btn-block"
value="Registrar Leitura" /> value="Registrar Leitura" />
%s %s
</form>''' % ( </form>''' % (
@ -363,17 +370,31 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
if has_permission: if has_permission:
if not obj.tipo_votacao == LEITURA: if not obj.tipo_votacao == LEITURA:
btn_abrir = ''' if obj.discussao_aberta != True:
Matéria não votada<br /> btn_abrir = '''
<a href="%s" Matéria não votada<br />
class="btn btn-primary" <a href="%s"
role="button">Abrir Votação</a>''' % (url) class="btn btn-primary btn-block"
resultado = btn_abrir role="button" style="white-space : nowrap;">Abrir Discussão</a>
<a href="%s"
class="btn btn-primary btn-block"
role="button" style="white-space : nowrap;">Abrir Votação</a>''' % (url + '&discutir=True', url)
resultado = btn_abrir
else:
btn_abrir = '''
Matéria não votada<br />
<a href="%s"
class="btn btn-danger btn-block"
role="button" style="white-space : nowrap;">Cancelar Discussão</a>
<a href="%s"
class="btn btn-primary btn-block"
role="button">Abrir Votação</a>''' % (url + '&cancelar_discussao=True', url)
resultado = btn_abrir
else: else:
btn_abrir = ''' btn_abrir = '''
Matéria não lida<br /> Matéria não lida<br />
<a href="%s" <a href="%s"
class="btn btn-primary" class="btn btn-primary btn-block"
role="button">Abrir para Leitura</a>''' % (url) role="button">Abrir para Leitura</a>''' % (url)
resultado = btn_abrir resultado = btn_abrir
else: else:

10
sapl/templates/painel/index.html

@ -408,13 +408,17 @@
if (data["status_painel"] == true){ if (data["status_painel"] == true){
$("#materia_legislativa_texto").text(data["materia_legislativa_texto"]); $("#materia_legislativa_texto").text(data["materia_legislativa_texto"]);
$("#materia_legislativa_ementa").text(data["materia_legislativa_ementa"]); $("#materia_legislativa_ementa").text(data["materia_legislativa_ementa"]);
$("#materia_legislativa_ementa").show();
} }
else{ else{
$("#materia_legislativa_texto").text('A Matéria em votação só aparecerá quando o painel estiver aberto'); $("#materia_legislativa_texto").text('A Matéria em votação só aparecerá quando o painel estiver aberto');
$("#materia_legislativa_ementa").hide();
} }
} }
else{ else{
$("#materia_legislativa_texto").text('Não há nenhuma matéria votada ou para votação.'); $("#materia_legislativa_texto").text('Não há nenhuma matéria votada ou para votação.');
$("#materia_legislativa_ementa").hide();
} }
if (data['observacao_materia'] && data["status_painel"] == true){ if (data['observacao_materia'] && data["status_painel"] == true){
@ -432,7 +436,11 @@
if (data['tipo_resultado'] && data['status_painel'] == true){ if (data['tipo_resultado'] && data['status_painel'] == true){
if(data['tipo_votacao'] != 'Leitura' && !data['sessao_finalizada'] && !data["sessao_solene"]){ if(data['tipo_votacao'] != 'Leitura' && !data['sessao_finalizada'] && !data["sessao_solene"]){
$("#resultado_votacao").css("color", "#45919D"); $("#resultado_votacao").css("color", "#45919D");
$("#mat_em_votacao").text("Matéria em Votação"); if (!data['discutir']){
$("#mat_em_votacao").text("Matéria em Votação");
}else{
$("#mat_em_votacao").text("Matéria em Discussão");
}
$("#resultado_votacao_div").show(); $("#resultado_votacao_div").show();
} }
else{ else{

Loading…
Cancel
Save