|
|
@ -53,7 +53,6 @@ from .models import (Bancada, CargoBancada, CargoMesa, |
|
|
|
|
|
|
|
|
|
|
|
TipoSessaoCrud = CrudAux.build(TipoSessaoPlenaria, 'tipo_sessao_plenaria') |
|
|
|
TipoExpedienteCrud = CrudAux.build(TipoExpediente, 'tipo_expediente') |
|
|
|
TipoJustificativaCrud = CrudAux.build(TipoJustificativa, 'tipo_justificativa') |
|
|
|
CargoBancadaCrud = CrudAux.build(CargoBancada, '') |
|
|
|
TipoResultadoVotacaoCrud = CrudAux.build( |
|
|
@ -93,6 +92,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 +103,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 +114,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(): |
|
|
@ -464,6 +466,23 @@ def get_presencas_generic(model, sessao, legislatura): |
|
|
|
yield (m.parlamentar, False) |
|
|
|
|
|
|
|
|
|
|
|
class TipoExpedienteCrud(CrudAux): |
|
|
|
model = TipoExpediente |
|
|
|
|
|
|
|
class DeleteView(CrudAux.DeleteView): |
|
|
|
|
|
|
|
def delete(self, *args, **kwargs): |
|
|
|
self.object = self.get_object() |
|
|
|
|
|
|
|
# Se todas as referências a este tipo forem de conteúdo vazio, |
|
|
|
# significa que pode ser apagado |
|
|
|
if self.object.expedientesessao_set.filter(conteudo='').count() == \ |
|
|
|
self.object.expedientesessao_set.all().count(): |
|
|
|
self.object.expedientesessao_set.all().delete() |
|
|
|
|
|
|
|
return CrudAux.DeleteView.delete(self, *args, **kwargs) |
|
|
|
|
|
|
|
|
|
|
|
class MateriaOrdemDiaCrud(MasterDetailCrud): |
|
|
|
model = OrdemDia |
|
|
|
parent_field = 'sessao_plenaria' |
|
|
@ -595,7 +614,6 @@ class OradorCrud(MasterDetailCrud): |
|
|
|
class ListView(MasterDetailCrud.ListView): |
|
|
|
ordering = ['numero_ordem', 'parlamentar'] |
|
|
|
|
|
|
|
|
|
|
|
class CreateView(MasterDetailCrud.CreateView): |
|
|
|
|
|
|
|
form_class = OradorForm |
|
|
@ -607,7 +625,6 @@ class OradorCrud(MasterDetailCrud): |
|
|
|
return reverse('sapl.sessao:orador_list', |
|
|
|
kwargs={'pk': self.kwargs['pk']}) |
|
|
|
|
|
|
|
|
|
|
|
class UpdateView(MasterDetailCrud.UpdateView): |
|
|
|
|
|
|
|
form_class = OradorForm |
|
|
@ -677,11 +694,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 +1096,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 +1389,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 +1434,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 +1517,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 +1549,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 |
|
|
@ -2051,13 +2084,24 @@ class VotacaoView(SessaoPermissionMixin): |
|
|
|
|
|
|
|
ordem_id = kwargs['oid'] |
|
|
|
ordem = OrdemDia.objects.get(id=ordem_id) |
|
|
|
qtde_presentes = PresencaOrdemDia.objects.filter( |
|
|
|
sessao_plenaria_id=self.object.id).count() |
|
|
|
|
|
|
|
presentes_id = [ |
|
|
|
presente.parlamentar.id for presente in PresencaOrdemDia.objects.filter( |
|
|
|
sessao_plenaria_id=self.kwargs['pk'] |
|
|
|
) |
|
|
|
] |
|
|
|
qtde_presentes = len(presentes_id) |
|
|
|
|
|
|
|
presenca_ativos = Parlamentar.objects.filter( |
|
|
|
id__in=presentes_id, ativo=True |
|
|
|
) |
|
|
|
qtde_ativos = len(presenca_ativos) |
|
|
|
|
|
|
|
materia = {'materia': ordem.materia, 'ementa': ordem.materia.ementa} |
|
|
|
context.update({'votacao_titulo': titulo, |
|
|
|
'materia': materia, |
|
|
|
'total_presentes': qtde_presentes}) |
|
|
|
'total_presentes': qtde_presentes, |
|
|
|
'total_votantes': qtde_ativos}) |
|
|
|
|
|
|
|
return self.render_to_response(context) |
|
|
|
|
|
|
@ -2077,13 +2121,24 @@ class VotacaoView(SessaoPermissionMixin): |
|
|
|
|
|
|
|
ordem_id = kwargs['oid'] |
|
|
|
ordem = OrdemDia.objects.get(id=ordem_id) |
|
|
|
qtde_presentes = PresencaOrdemDia.objects.filter( |
|
|
|
sessao_plenaria_id=self.object.id).count() |
|
|
|
|
|
|
|
presentes_id = [ |
|
|
|
presente.parlamentar.id for presente in PresencaOrdemDia.objects.filter( |
|
|
|
sessao_plenaria_id=self.kwargs['pk'] |
|
|
|
) |
|
|
|
] |
|
|
|
qtde_presentes = len(presentes_id) |
|
|
|
|
|
|
|
presenca_ativos = Parlamentar.objects.filter( |
|
|
|
id__in=presentes_id, ativo=True |
|
|
|
) |
|
|
|
qtde_ativos = len(presenca_ativos) |
|
|
|
|
|
|
|
materia = {'materia': ordem.materia, 'ementa': ordem.materia.ementa} |
|
|
|
context.update({'votacao_titulo': titulo, |
|
|
|
'materia': materia, |
|
|
|
'total_presentes': qtde_presentes}) |
|
|
|
'total_presentes': qtde_presentes, |
|
|
|
'total_votantes': qtde_ativos}) |
|
|
|
context.update({'form': form}) |
|
|
|
# ==================================================== |
|
|
|
|
|
|
@ -2096,21 +2151,19 @@ class VotacaoView(SessaoPermissionMixin): |
|
|
|
materia_id = kwargs['mid'] |
|
|
|
ordem_id = kwargs['oid'] |
|
|
|
|
|
|
|
qtde_presentes = PresencaOrdemDia.objects.filter( |
|
|
|
sessao_plenaria_id=self.object.id).count() |
|
|
|
qtde_votos = (int(request.POST['votos_sim']) + |
|
|
|
int(request.POST['votos_nao']) + |
|
|
|
int(request.POST['abstencoes'])) |
|
|
|
|
|
|
|
if (int(request.POST['voto_presidente']) == 0): |
|
|
|
qtde_presentes -= 1 |
|
|
|
qtde_ativos -= 1 |
|
|
|
|
|
|
|
if (qtde_votos > qtde_presentes or qtde_votos < qtde_presentes): |
|
|
|
if qtde_votos != qtde_ativos: |
|
|
|
msg = _( |
|
|
|
'O total de votos não corresponde com a quantidade de presentes!') |
|
|
|
'O total de votos não corresponde com a quantidade de votantes!') |
|
|
|
messages.add_message(request, messages.ERROR, msg) |
|
|
|
return self.render_to_response(context) |
|
|
|
elif (qtde_presentes == qtde_votos): |
|
|
|
else: |
|
|
|
try: |
|
|
|
votacao = RegistroVotacao() |
|
|
|
votacao.numero_votos_sim = int(request.POST['votos_sim']) |
|
|
@ -2755,14 +2808,25 @@ class VotacaoExpedienteView(SessaoPermissionMixin): |
|
|
|
|
|
|
|
expediente_id = kwargs['oid'] |
|
|
|
expediente = ExpedienteMateria.objects.get(id=expediente_id) |
|
|
|
qtde_presentes = SessaoPlenariaPresenca.objects.filter( |
|
|
|
sessao_plenaria_id=self.object.id).count() |
|
|
|
|
|
|
|
presentes_id = [ |
|
|
|
presente.parlamentar.id for presente in SessaoPlenariaPresenca.objects.filter( |
|
|
|
sessao_plenaria_id=self.kwargs['pk'] |
|
|
|
) |
|
|
|
] |
|
|
|
qtde_presentes = len(presentes_id) |
|
|
|
|
|
|
|
presentes_ativos = Parlamentar.objects.filter( |
|
|
|
id__in=presentes_id, ativo=True |
|
|
|
) |
|
|
|
qtde_ativos = len(presentes_ativos) |
|
|
|
|
|
|
|
materia = {'materia': expediente.materia, |
|
|
|
'ementa': expediente.materia.ementa} |
|
|
|
context.update({'votacao_titulo': titulo, |
|
|
|
'materia': materia, |
|
|
|
'total_presentes': qtde_presentes}) |
|
|
|
'total_presentes': qtde_presentes, |
|
|
|
'total_votantes': qtde_ativos}) |
|
|
|
|
|
|
|
return self.render_to_response(context) |
|
|
|
|
|
|
@ -2782,14 +2846,25 @@ class VotacaoExpedienteView(SessaoPermissionMixin): |
|
|
|
|
|
|
|
expediente_id = kwargs['oid'] |
|
|
|
expediente = ExpedienteMateria.objects.get(id=expediente_id) |
|
|
|
qtde_presentes = SessaoPlenariaPresenca.objects.filter( |
|
|
|
sessao_plenaria_id=self.object.id).count() |
|
|
|
|
|
|
|
presentes_id = [ |
|
|
|
presente.parlamentar.id for presente in SessaoPlenariaPresenca.objects.filter( |
|
|
|
sessao_plenaria_id=self.kwargs['pk'] |
|
|
|
) |
|
|
|
] |
|
|
|
qtde_presentes = len(presentes_id) |
|
|
|
|
|
|
|
presentes_ativos = Parlamentar.objects.filter( |
|
|
|
id__in=presentes_id, ativo=True |
|
|
|
) |
|
|
|
qtde_ativos = len(presentes_ativos) |
|
|
|
|
|
|
|
materia = {'materia': expediente.materia, |
|
|
|
'ementa': expediente.materia.ementa} |
|
|
|
context.update({'votacao_titulo': titulo, |
|
|
|
'materia': materia, |
|
|
|
'total_presentes': qtde_presentes}) |
|
|
|
'total_presentes': qtde_presentes, |
|
|
|
'total_votantes': qtde_ativos}) |
|
|
|
context.update({'form': form}) |
|
|
|
# ==================================================== |
|
|
|
|
|
|
@ -2802,17 +2877,17 @@ class VotacaoExpedienteView(SessaoPermissionMixin): |
|
|
|
materia_id = kwargs['mid'] |
|
|
|
expediente_id = kwargs['oid'] |
|
|
|
|
|
|
|
qtde_presentes = SessaoPlenariaPresenca.objects.filter( |
|
|
|
sessao_plenaria_id=self.object.id).count() |
|
|
|
qtde_votos = (int(request.POST['votos_sim']) + |
|
|
|
int(request.POST['votos_nao']) + |
|
|
|
int(request.POST['abstencoes'])) |
|
|
|
|
|
|
|
if (int(request.POST['voto_presidente']) == 0): |
|
|
|
qtde_presentes -= 1 |
|
|
|
qtde_ativos -= 1 |
|
|
|
|
|
|
|
if qtde_votos != qtde_presentes: |
|
|
|
form._errors["total_votos"] = ErrorList([u""]) |
|
|
|
if qtde_votos != qtde_ativos: |
|
|
|
msg = _( |
|
|
|
'O total de votos não corresponde com a quantidade de votantes!') |
|
|
|
messages.add_message(request, messages.ERROR, msg) |
|
|
|
return self.render_to_response(context) |
|
|
|
else: |
|
|
|
try: |
|
|
@ -3561,17 +3636,41 @@ class VotacaoEmBlocoSimbolicaView(PermissionRequiredForAppCrudMixin, TemplateVie |
|
|
|
if request.POST['origem'] == 'ordem': |
|
|
|
ordens = OrdemDia.objects.filter( |
|
|
|
id__in=request.POST.getlist('marcadas_1')) |
|
|
|
qtde_presentes = PresencaOrdemDia.objects.filter( |
|
|
|
sessao_plenaria_id=self.kwargs['pk']).count() |
|
|
|
|
|
|
|
presentes_id = [ |
|
|
|
presente.parlamentar.id for presente in PresencaOrdemDia.objects.filter( |
|
|
|
sessao_plenaria_id=self.kwargs['pk'] |
|
|
|
) |
|
|
|
] |
|
|
|
qtde_presentes = len(presentes_id) |
|
|
|
|
|
|
|
presenca_ativos = Parlamentar.objects.filter( |
|
|
|
id__in=presentes_id, ativo=True |
|
|
|
) |
|
|
|
qtde_ativos = len(presenca_ativos) |
|
|
|
|
|
|
|
context.update({'ordens': ordens, |
|
|
|
'total_presentes': qtde_presentes}) |
|
|
|
'total_presentes': qtde_presentes, |
|
|
|
'total_votantes': qtde_ativos}) |
|
|
|
else: |
|
|
|
expedientes = ExpedienteMateria.objects.filter( |
|
|
|
id__in=request.POST.getlist('marcadas_1')) |
|
|
|
qtde_presentes = SessaoPlenariaPresenca.objects.filter( |
|
|
|
sessao_plenaria_id=self.kwargs['pk']).count() |
|
|
|
|
|
|
|
presentes_id = [ |
|
|
|
presente.parlamentar.id for presente in SessaoPlenariaPresenca.objects.filter( |
|
|
|
sessao_plenaria_id=self.kwargs['pk'] |
|
|
|
) |
|
|
|
] |
|
|
|
qtde_presentes = len(presentes_id) |
|
|
|
|
|
|
|
presenca_ativos = Parlamentar.objects.filter( |
|
|
|
id__in=presentes_id, ativo=True |
|
|
|
) |
|
|
|
qtde_ativos = len(presenca_ativos) |
|
|
|
|
|
|
|
context.update({'expedientes': expedientes, |
|
|
|
'total_presentes': qtde_presentes}) |
|
|
|
'total_presentes': qtde_presentes, |
|
|
|
'total_votantes': qtde_ativos}) |
|
|
|
|
|
|
|
if 'salvar-votacao' in request.POST: |
|
|
|
form = VotacaoForm(request.POST) |
|
|
@ -3696,17 +3795,41 @@ class VotacaoEmBlocoSimbolicaView(PermissionRequiredForAppCrudMixin, TemplateVie |
|
|
|
if self.request.POST['origem'] == 'ordem': |
|
|
|
ordens = OrdemDia.objects.filter( |
|
|
|
id__in=self.request.POST.getlist('ordens')) |
|
|
|
qtde_presentes = PresencaOrdemDia.objects.filter( |
|
|
|
sessao_plenaria_id=self.kwargs['pk']).count() |
|
|
|
|
|
|
|
presentes_id = [ |
|
|
|
presente.parlamentar.id for presente in PresencaOrdemDia.objects.filter( |
|
|
|
sessao_plenaria_id=self.kwargs['pk'] |
|
|
|
) |
|
|
|
] |
|
|
|
qtde_presentes = len(presentes_id) |
|
|
|
|
|
|
|
presenca_ativos = Parlamentar.objects.filter( |
|
|
|
id__in=presentes_id, ativo=True |
|
|
|
) |
|
|
|
qtde_ativos = len(presenca_ativos) |
|
|
|
|
|
|
|
context.update({'ordens': ordens, |
|
|
|
'total_presentes': qtde_presentes}) |
|
|
|
'total_presentes': qtde_presentes, |
|
|
|
'total_votantes': qtde_ativos}) |
|
|
|
elif self.request.POST['origem'] == 'expediente': |
|
|
|
expedientes = ExpedienteMateria.objects.filter( |
|
|
|
id__in=self.request.POST.getlist('expedientes')) |
|
|
|
qtde_presentes = SessaoPlenariaPresenca.objects.filter( |
|
|
|
sessao_plenaria_id=self.kwargs['pk']).count() |
|
|
|
|
|
|
|
presentes_id = [ |
|
|
|
presente.parlamentar.id for presente in SessaoPlenariaPresenca.objects.filter( |
|
|
|
sessao_plenaria_id=self.kwargs['pk'] |
|
|
|
) |
|
|
|
] |
|
|
|
qtde_presentes = len(presentes_id) |
|
|
|
|
|
|
|
presenca_ativos = Parlamentar.objects.filter( |
|
|
|
id__in=presentes_id, ativo=True |
|
|
|
) |
|
|
|
qtde_ativos = len(presenca_ativos) |
|
|
|
|
|
|
|
context.update({'expedientes': expedientes, |
|
|
|
'total_presentes': qtde_presentes}) |
|
|
|
'total_presentes': qtde_presentes, |
|
|
|
'total_votantes': qtde_ativos}) |
|
|
|
|
|
|
|
context.update({'resultado_votacao': TipoResultadoVotacao.objects.all(), |
|
|
|
'form': form, |
|
|
|