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. 4
      sapl/sessao/urls.py
  3. 37
      sapl/sessao/views.py
  4. 2
      sapl/templates/sessao/layouts.yaml
  5. 17
      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.db import models
from django.db.models import Q
from django.utils import timezone
from django.utils.translation import ugettext_lazy as _
from model_utils import Choices
@ -99,6 +100,29 @@ class TipoSessaoPlenaria(models.Model):
def __str__(self):
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):
return './sapl/sessao/%s/%s/%s' % (instance.numero, subpath, filename)

4
sapl/sessao/urls.py

@ -25,7 +25,7 @@ from sapl.sessao.views import (AdicionarVariasMateriasExpediente,
VotacaoNominalView, VotacaoView, abrir_votacao,
atualizar_mesa, insere_parlamentar_composicao,
mudar_ordem_materia_sessao, recuperar_materia,
recuperar_numero_sessao,
recuperar_numero_sessao_view,
remove_parlamentar_composicao,
reordernar_materias_expediente,
reordernar_materias_ordem,
@ -65,7 +65,7 @@ urlpatterns = [
url(r'^sessao/recuperar-materia/', recuperar_materia),
url(r'^sessao/recuperar-numero-sessao/',
recuperar_numero_sessao,
recuperar_numero_sessao_view,
name='recuperar_numero_sessao_view'
),
url(r'^sessao/sessao-legislativa-legislatura-ajax/',

37
sapl/sessao/views.py

@ -93,6 +93,7 @@ def reordernar_materias_ordem(request, pk):
return HttpResponseRedirect(
reverse('sapl.sessao:ordemdia_list', kwargs={'pk': pk}))
def renumerar_materias_ordem(request, pk):
ordens = OrdemDia.objects.filter(sessao_plenaria_id=pk)
@ -103,6 +104,7 @@ def renumerar_materias_ordem(request, pk):
return HttpResponseRedirect(
reverse('sapl.sessao:ordemdia_list', kwargs={'pk': pk}))
def renumerar_materias_expediente(request, pk):
expedientes = ExpedienteMateria.objects.filter(sessao_plenaria_id=pk)
@ -113,6 +115,7 @@ def renumerar_materias_expediente(request, pk):
return HttpResponseRedirect(
reverse('sapl.sessao:expedientemateria_list', kwargs={'pk': pk}))
def verifica_presenca(request, model, spk):
logger = logging.getLogger(__name__)
if not model.objects.filter(sessao_plenaria_id=spk).exists():
@ -595,7 +598,6 @@ class OradorCrud(MasterDetailCrud):
class ListView(MasterDetailCrud.ListView):
ordering = ['numero_ordem', 'parlamentar']
class CreateView(MasterDetailCrud.CreateView):
form_class = OradorForm
@ -607,7 +609,6 @@ class OradorCrud(MasterDetailCrud):
return reverse('sapl.sessao:orador_list',
kwargs={'pk': self.kwargs['pk']})
class UpdateView(MasterDetailCrud.UpdateView):
form_class = OradorForm
@ -677,11 +678,24 @@ class BancadaCrud(CrudAux):
return reverse('sapl.sessao:bancada_list')
def recuperar_numero_sessao(request):
def recuperar_numero_sessao_view(request):
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(
tipo__pk=request.GET['tipo'],
sessao_legislativa=request.GET['sessao_legislativa']).last()
tipo.queryset_tipo_numeracao(
l, sl, data
)).last()
except ObjectDoesNotExist:
numero = 1
else:
@ -1066,7 +1080,6 @@ class ListMateriaOrdemDiaView(FormMixin, DetailView):
return self.get(self, request, args, kwargs)
class MesaView(FormMixin, DetailView):
template_name = 'sessao/mesa.html'
form_class = MesaForm
@ -1360,7 +1373,8 @@ def get_conteudo_multimidia(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,
'cargo': m.cargo} for m in mesa]
return {'mesa': integrantes}
@ -1404,7 +1418,8 @@ def get_materias_expediente(sessao_plenaria):
numero = m.numero_ordem
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:
if aux_tramitacao.turno:
tramitacao = aux_tramitacao
@ -1486,7 +1501,8 @@ def get_assinaturas(sessao_plenaria):
parlamentares_mesa = [m['parlamentar'] for m in mesa_dia]
# 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 = {}
config_assinatura_ata = AppsAppConfig.attr('assinatura_ata')
@ -1517,7 +1533,8 @@ def get_materias_ordem_do_dia(sessao_plenaria):
numero = o.numero_ordem
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:
if aux_tramitacao.turno:
tramitacao = aux_tramitacao

2
sapl/templates/sessao/layouts.yaml

@ -5,7 +5,7 @@ TipoSessaoPlenaria:
SessaoPlenaria:
{% 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_fim:5 hora_fim:5 finalizada
- upload_pauta upload_ata upload_anexo

17
sapl/templates/sessao/sessaoplenaria_form.html

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

Loading…
Cancel
Save