Browse Source

refatora view que recupera próximo número de sessões

pull/2835/head
Leandro Roberto 7 years ago
parent
commit
c119c8cf77
  1. 24
      sapl/sessao/models.py
  2. 6
      sapl/sessao/urls.py
  3. 61
      sapl/sessao/views.py
  4. 2
      sapl/templates/sessao/layouts.yaml
  5. 45
      sapl/templates/sessao/sessaoplenaria_form.html

24
sapl/sessao/models.py

@ -2,6 +2,7 @@ from operator import xor
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.db import models from django.db import models
from django.db.models import Q
from django.utils import timezone from django.utils import timezone
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from model_utils import Choices from model_utils import Choices
@ -99,6 +100,29 @@ class TipoSessaoPlenaria(models.Model):
def __str__(self): def __str__(self):
return self.nome return self.nome
def queryset_tipo_numeracao(self, legislatura, sessao_legislativa, data):
qs = Q(tipo=self)
tnc = self.TIPO_NUMERACAO_CHOICES
if self.tipo_numeracao == tnc.unica:
pass
elif self.tipo_numeracao == tnc.legislatura:
qs &= Q(legislatura=legislatura)
elif self.tipo_numeracao == tnc.sessao_legislativa:
qs &= Q(sessao_legislativa=sessao_legislativa)
elif self.tipo_numeracao == tnc.anual:
qs &= Q(data_inicio__year=data.year)
elif self.tipo_numeracao in (tnc.mensal, tnc.quizenal):
qs &= Q(data_inicio__year=data.year, data_inicio__month=data.month)
if self.tipo_numeracao == tnc.quizenal:
if data.day <= 15:
qs &= Q(data_inicio__day__lte=15)
else:
qs &= Q(data_inicio__day__gt=15)
return qs
def get_sessao_media_path(instance, subpath, filename): def get_sessao_media_path(instance, subpath, filename):
return './sapl/sessao/%s/%s/%s' % (instance.numero, subpath, filename) return './sapl/sessao/%s/%s/%s' % (instance.numero, subpath, filename)

6
sapl/sessao/urls.py

@ -2,7 +2,7 @@ from django.conf.urls import include, url
from sapl.sessao.views import (AdicionarVariasMateriasExpediente, from sapl.sessao.views import (AdicionarVariasMateriasExpediente,
AdicionarVariasMateriasOrdemDia, BancadaCrud, AdicionarVariasMateriasOrdemDia, BancadaCrud,
CargoBancadaCrud, ExpedienteMateriaCrud, CargoBancadaCrud, ExpedienteMateriaCrud,
ExpedienteView, JustificativaAusenciaCrud, ExpedienteView, JustificativaAusenciaCrud,
OcorrenciaSessaoView, MateriaOrdemDiaCrud, OradorOrdemDiaCrud, OcorrenciaSessaoView, MateriaOrdemDiaCrud, OradorOrdemDiaCrud,
MesaView, OradorCrud, MesaView, OradorCrud,
@ -25,7 +25,7 @@ from sapl.sessao.views import (AdicionarVariasMateriasExpediente,
VotacaoNominalView, VotacaoView, abrir_votacao, VotacaoNominalView, VotacaoView, abrir_votacao,
atualizar_mesa, insere_parlamentar_composicao, atualizar_mesa, insere_parlamentar_composicao,
mudar_ordem_materia_sessao, recuperar_materia, mudar_ordem_materia_sessao, recuperar_materia,
recuperar_numero_sessao, recuperar_numero_sessao_view,
remove_parlamentar_composicao, remove_parlamentar_composicao,
reordernar_materias_expediente, reordernar_materias_expediente,
reordernar_materias_ordem, reordernar_materias_ordem,
@ -65,7 +65,7 @@ urlpatterns = [
url(r'^sessao/recuperar-materia/', recuperar_materia), url(r'^sessao/recuperar-materia/', recuperar_materia),
url(r'^sessao/recuperar-numero-sessao/', url(r'^sessao/recuperar-numero-sessao/',
recuperar_numero_sessao, recuperar_numero_sessao_view,
name='recuperar_numero_sessao_view' name='recuperar_numero_sessao_view'
), ),
url(r'^sessao/sessao-legislativa-legislatura-ajax/', url(r'^sessao/sessao-legislativa-legislatura-ajax/',

61
sapl/sessao/views.py

@ -93,6 +93,7 @@ def reordernar_materias_ordem(request, pk):
return HttpResponseRedirect( return HttpResponseRedirect(
reverse('sapl.sessao:ordemdia_list', kwargs={'pk': pk})) reverse('sapl.sessao:ordemdia_list', kwargs={'pk': pk}))
def renumerar_materias_ordem(request, pk): def renumerar_materias_ordem(request, pk):
ordens = OrdemDia.objects.filter(sessao_plenaria_id=pk) ordens = OrdemDia.objects.filter(sessao_plenaria_id=pk)
@ -103,6 +104,7 @@ def renumerar_materias_ordem(request, pk):
return HttpResponseRedirect( return HttpResponseRedirect(
reverse('sapl.sessao:ordemdia_list', kwargs={'pk': pk})) reverse('sapl.sessao:ordemdia_list', kwargs={'pk': pk}))
def renumerar_materias_expediente(request, pk): def renumerar_materias_expediente(request, pk):
expedientes = ExpedienteMateria.objects.filter(sessao_plenaria_id=pk) expedientes = ExpedienteMateria.objects.filter(sessao_plenaria_id=pk)
@ -113,6 +115,7 @@ def renumerar_materias_expediente(request, pk):
return HttpResponseRedirect( return HttpResponseRedirect(
reverse('sapl.sessao:expedientemateria_list', kwargs={'pk': pk})) reverse('sapl.sessao:expedientemateria_list', kwargs={'pk': pk}))
def verifica_presenca(request, model, spk): def verifica_presenca(request, model, spk):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
if not model.objects.filter(sessao_plenaria_id=spk).exists(): if not model.objects.filter(sessao_plenaria_id=spk).exists():
@ -595,7 +598,6 @@ class OradorCrud(MasterDetailCrud):
class ListView(MasterDetailCrud.ListView): class ListView(MasterDetailCrud.ListView):
ordering = ['numero_ordem', 'parlamentar'] ordering = ['numero_ordem', 'parlamentar']
class CreateView(MasterDetailCrud.CreateView): class CreateView(MasterDetailCrud.CreateView):
form_class = OradorForm form_class = OradorForm
@ -607,7 +609,6 @@ class OradorCrud(MasterDetailCrud):
return reverse('sapl.sessao:orador_list', return reverse('sapl.sessao:orador_list',
kwargs={'pk': self.kwargs['pk']}) kwargs={'pk': self.kwargs['pk']})
class UpdateView(MasterDetailCrud.UpdateView): class UpdateView(MasterDetailCrud.UpdateView):
form_class = OradorForm form_class = OradorForm
@ -615,7 +616,7 @@ class OradorCrud(MasterDetailCrud):
def get_initial(self): def get_initial(self):
initial = super(UpdateView, self).get_initial() initial = super(UpdateView, self).get_initial()
initial.update({'id_sessao': self.object.sessao_plenaria.id}) initial.update({'id_sessao': self.object.sessao_plenaria.id})
initial.update({'numero':self.object.numero_ordem}) initial.update({'numero': self.object.numero_ordem})
return initial return initial
@ -677,11 +678,24 @@ class BancadaCrud(CrudAux):
return reverse('sapl.sessao:bancada_list') return reverse('sapl.sessao:bancada_list')
def recuperar_numero_sessao(request): def recuperar_numero_sessao_view(request):
try: try:
tipo = TipoSessaoPlenaria.objects.get(pk=request.GET.get('tipo', '0'))
sl = request.GET.get('sessao_legislativa', '0')
l = request.GET.get('legislatura', '0')
data = request.GET.get('data_inicio', timezone.now())
if isinstance(data, str):
if data:
data = timezone.datetime.strptime(data, '%d/%m/%Y').date()
else:
data = timezone.now().date()
sessao = SessaoPlenaria.objects.filter( sessao = SessaoPlenaria.objects.filter(
tipo__pk=request.GET['tipo'], tipo.queryset_tipo_numeracao(
sessao_legislativa=request.GET['sessao_legislativa']).last() l, sl, data
)).last()
except ObjectDoesNotExist: except ObjectDoesNotExist:
numero = 1 numero = 1
else: else:
@ -1066,7 +1080,6 @@ class ListMateriaOrdemDiaView(FormMixin, DetailView):
return self.get(self, request, args, kwargs) return self.get(self, request, args, kwargs)
class MesaView(FormMixin, DetailView): class MesaView(FormMixin, DetailView):
template_name = 'sessao/mesa.html' template_name = 'sessao/mesa.html'
form_class = MesaForm form_class = MesaForm
@ -1341,7 +1354,7 @@ def get_identificação_basica(sessao_plenaria):
_('Encerramento: %(encerramento)s %(hora_fim)s') % { _('Encerramento: %(encerramento)s %(hora_fim)s') % {
'encerramento': encerramento, 'hora_fim': sessao_plenaria.hora_fim} 'encerramento': encerramento, 'hora_fim': sessao_plenaria.hora_fim}
], ],
'sessaoplenaria': sessao_plenaria}) 'sessaoplenaria': sessao_plenaria})
def get_conteudo_multimidia(sessao_plenaria): def get_conteudo_multimidia(sessao_plenaria):
@ -1360,7 +1373,8 @@ def get_conteudo_multimidia(sessao_plenaria):
def get_mesa_diretora(sessao_plenaria): def get_mesa_diretora(sessao_plenaria):
mesa = IntegranteMesa.objects.filter(sessao_plenaria=sessao_plenaria).order_by('cargo_id') mesa = IntegranteMesa.objects.filter(
sessao_plenaria=sessao_plenaria).order_by('cargo_id')
integrantes = [{'parlamentar': m.parlamentar, integrantes = [{'parlamentar': m.parlamentar,
'cargo': m.cargo} for m in mesa] 'cargo': m.cargo} for m in mesa]
return {'mesa': integrantes} return {'mesa': integrantes}
@ -1369,8 +1383,8 @@ def get_mesa_diretora(sessao_plenaria):
def get_presenca_sessao(sessao_plenaria): def get_presenca_sessao(sessao_plenaria):
parlamentares_sessao = [p.parlamentar for p in SessaoPlenariaPresenca.objects.filter( parlamentares_sessao = [p.parlamentar for p in SessaoPlenariaPresenca.objects.filter(
sessao_plenaria_id=sessao_plenaria.id sessao_plenaria_id=sessao_plenaria.id
).order_by('parlamentar__nome_parlamentar')] ).order_by('parlamentar__nome_parlamentar')]
ausentes_sessao = JustificativaAusencia.objects.filter( ausentes_sessao = JustificativaAusencia.objects.filter(
sessao_plenaria_id=sessao_plenaria.id sessao_plenaria_id=sessao_plenaria.id
@ -1404,7 +1418,8 @@ def get_materias_expediente(sessao_plenaria):
numero = m.numero_ordem numero = m.numero_ordem
tramitacao = '' tramitacao = ''
tramitacoes = Tramitacao.objects.filter(materia=m.materia).order_by('-pk') tramitacoes = Tramitacao.objects.filter(
materia=m.materia).order_by('-pk')
for aux_tramitacao in tramitacoes: for aux_tramitacao in tramitacoes:
if aux_tramitacao.turno: if aux_tramitacao.turno:
tramitacao = aux_tramitacao tramitacao = aux_tramitacao
@ -1466,8 +1481,8 @@ def get_oradores_expediente(sessao_plenaria):
def get_presenca_ordem_do_dia(sessao_plenaria): def get_presenca_ordem_do_dia(sessao_plenaria):
parlamentares_ordem = [p.parlamentar for p in PresencaOrdemDia.objects.filter( parlamentares_ordem = [p.parlamentar for p in PresencaOrdemDia.objects.filter(
sessao_plenaria_id=sessao_plenaria.id sessao_plenaria_id=sessao_plenaria.id
).order_by('parlamentar__nome_parlamentar')] ).order_by('parlamentar__nome_parlamentar')]
return {'presenca_ordem': parlamentares_ordem} return {'presenca_ordem': parlamentares_ordem}
@ -1480,13 +1495,14 @@ def get_assinaturas(sessao_plenaria):
'')] '')]
parlamentares_ordem = [p.parlamentar for p in PresencaOrdemDia.objects.filter( parlamentares_ordem = [p.parlamentar for p in PresencaOrdemDia.objects.filter(
sessao_plenaria_id=sessao_plenaria.id sessao_plenaria_id=sessao_plenaria.id
).order_by('parlamentar__nome_parlamentar')] ).order_by('parlamentar__nome_parlamentar')]
parlamentares_mesa = [m['parlamentar'] for m in mesa_dia] parlamentares_mesa = [m['parlamentar'] for m in mesa_dia]
# filtra parlamentares retirando os que sao da mesa # filtra parlamentares retirando os que sao da mesa
parlamentares_ordem = [p for p in parlamentares_ordem if p not in parlamentares_mesa] parlamentares_ordem = [
p for p in parlamentares_ordem if p not in parlamentares_mesa]
context = {} context = {}
config_assinatura_ata = AppsAppConfig.attr('assinatura_ata') config_assinatura_ata = AppsAppConfig.attr('assinatura_ata')
@ -1517,7 +1533,8 @@ def get_materias_ordem_do_dia(sessao_plenaria):
numero = o.numero_ordem numero = o.numero_ordem
tramitacao = '' tramitacao = ''
tramitacoes = Tramitacao.objects.filter(materia=o.materia).order_by('-pk') tramitacoes = Tramitacao.objects.filter(
materia=o.materia).order_by('-pk')
for aux_tramitacao in tramitacoes: for aux_tramitacao in tramitacoes:
if aux_tramitacao.turno: if aux_tramitacao.turno:
tramitacao = aux_tramitacao tramitacao = aux_tramitacao
@ -1600,7 +1617,7 @@ def get_oradores_ordemdia(sessao_plenaria):
observacao = orador.observacao observacao = orador.observacao
parlamentar = Parlamentar.objects.get( parlamentar = Parlamentar.objects.get(
id=orador.parlamentar_id id=orador.parlamentar_id
) )
o = { o = {
'numero_ordem': numero_ordem, 'numero_ordem': numero_ordem,
'url_discurso': url_discurso, 'url_discurso': url_discurso,
@ -1610,9 +1627,9 @@ def get_oradores_ordemdia(sessao_plenaria):
oradores.append(o) oradores.append(o)
context = {'oradores_ordemdia': oradores} context = {'oradores_ordemdia': oradores}
return context return context
def get_oradores_explicações_pessoais(sessao_plenaria): def get_oradores_explicações_pessoais(sessao_plenaria):
oradores_explicacoes = [] oradores_explicacoes = []
for orador in Orador.objects.filter( for orador in Orador.objects.filter(
@ -1729,7 +1746,7 @@ class ResumoView(DetailView):
# ===================================================================== # =====================================================================
# Oradores Ordem do Dia # Oradores Ordem do Dia
context.update(get_oradores_ordemdia(self.object)) context.update(get_oradores_ordemdia(self.object))
# ===================================================================== # =====================================================================
# Oradores nas Explicações Pessoais # Oradores nas Explicações Pessoais
context.update(get_oradores_explicações_pessoais(self.object)) context.update(get_oradores_explicações_pessoais(self.object))
# ===================================================================== # =====================================================================

2
sapl/templates/sessao/layouts.yaml

@ -5,7 +5,7 @@ TipoSessaoPlenaria:
SessaoPlenaria: SessaoPlenaria:
{% trans 'Dados Básicos' %}: {% trans 'Dados Básicos' %}:
- legislatura sessao_legislativa tipo:3 numero:1 - legislatura sessao_legislativa tipo numero:2
- data_inicio:5 hora_inicio:5 iniciada - data_inicio:5 hora_inicio:5 iniciada
- data_fim:5 hora_fim:5 finalizada - data_fim:5 hora_fim:5 finalizada
- upload_pauta upload_ata upload_anexo - upload_pauta upload_ata upload_anexo

45
sapl/templates/sessao/sessaoplenaria_form.html

@ -7,24 +7,35 @@
<script language="Javascript"> <script language="Javascript">
// Seleciona o numero de acordo com o tipo {% if not object %}
function recuperar_numero_sessao() { // faz recuperação do próximo número apenas em caso de inclusão de sessão plenária
var tipo = $("#id_tipo").val() // Seleciona o numero de acordo com o tipo
var sessao = $("#id_sessao_legislativa").val() function recuperar_numero_sessao() {
var tipo = $("#id_tipo").val()
if (tipo) { var sessao = $("#id_sessao_legislativa").val()
$.get("{% url 'sapl.sessao:recuperar_numero_sessao_view' %}",{tipo: tipo, sessao_legislativa:sessao}, var legislatura = $("#id_legislatura").val()
function(data, status) { var data_ini = $("#id_data_inicio").val()
$("#id_numero").val(data.numero);
// console.log(data) if (tipo) {
}); $.get("{% url 'sapl.sessao:recuperar_numero_sessao_view' %}",
} {
else{ tipo: tipo,
$("#id_numero").val(''); sessao_legislativa: sessao,
data_inicio: data_ini
},
function(data, status) {
$("#id_numero").val(data.numero);
}
);
}
else{
$("#id_numero").val('');
}
} }
} $("#id_tipo").click(recuperar_numero_sessao);
$("#id_tipo").click(recuperar_numero_sessao); $("#id_sessao_legislativa").click(recuperar_numero_sessao);
$("#id_sessao_legislativa").click(recuperar_numero_sessao); $("#id_legislatura").click(recuperar_numero_sessao);
{% endif %}
// Filtra as choices de sessao legislativa pela legislatura // Filtra as choices de sessao legislativa pela legislatura

Loading…
Cancel
Save