|
|
@ -1,6 +1,6 @@ |
|
|
|
from datetime import datetime |
|
|
|
import json |
|
|
|
import logging |
|
|
|
from datetime import datetime |
|
|
|
|
|
|
|
from django.contrib import messages |
|
|
|
from django.contrib.contenttypes.models import ContentType |
|
|
@ -35,6 +35,7 @@ from .models import (CargoMesa, Coligacao, ComposicaoColigacao, ComposicaoMesa, |
|
|
|
NivelInstrucao, Parlamentar, Partido, SessaoLegislativa, |
|
|
|
SituacaoMilitar, TipoAfastamento, TipoDependente, Votante) |
|
|
|
|
|
|
|
|
|
|
|
CargoMesaCrud = CrudAux.build(CargoMesa, 'cargo_mesa') |
|
|
|
PartidoCrud = CrudAux.build(Partido, 'partidos') |
|
|
|
TipoDependenteCrud = CrudAux.build(TipoDependente, 'tipo_dependente') |
|
|
@ -45,6 +46,7 @@ TipoMilitarCrud = CrudAux.build(SituacaoMilitar, 'tipo_situa_militar') |
|
|
|
DependenteCrud = MasterDetailCrud.build( |
|
|
|
Dependente, 'parlamentar', 'dependente') |
|
|
|
|
|
|
|
|
|
|
|
class SessaoLegislativaCrud(CrudAux): |
|
|
|
model = SessaoLegislativa |
|
|
|
|
|
|
@ -54,6 +56,7 @@ class SessaoLegislativaCrud(CrudAux): |
|
|
|
class UpdateView(CrudAux.UpdateView): |
|
|
|
form_class = SessaoLegislativaForm |
|
|
|
|
|
|
|
|
|
|
|
class VotanteView(MasterDetailCrud): |
|
|
|
model = Votante |
|
|
|
parent_field = 'parlamentar' |
|
|
@ -89,6 +92,7 @@ class FrenteList(MasterDetailCrud): |
|
|
|
|
|
|
|
class BaseMixin(Crud.PublicMixin, MasterDetailCrud.BaseMixin): |
|
|
|
list_field_names = ['nome', 'data_criacao', 'data_extincao'] |
|
|
|
|
|
|
|
@classmethod |
|
|
|
def url_name(cls, suffix): |
|
|
|
return '%s_parlamentar_%s' % (cls.model._meta.model_name, suffix) |
|
|
@ -276,13 +280,16 @@ def parlamentares_frente_selected(request): |
|
|
|
logger = logging.getLogger(__name__) |
|
|
|
username = request.user.username |
|
|
|
try: |
|
|
|
logger.info("user=" + username + ". Tentando objet objeto Frente com id={}.".format(request.GET['frente_id'])) |
|
|
|
logger.info("user=" + username + |
|
|
|
". Tentando objet objeto Frente com id={}.".format(request.GET['frente_id'])) |
|
|
|
frente = Frente.objects.get(id=int(request.GET['frente_id'])) |
|
|
|
except ObjectDoesNotExist: |
|
|
|
logger.error("user=" + username + ". Frente buscada (id={}) não existe. Retornada lista vazia.".format(request.GET['frente_id'])) |
|
|
|
logger.error("user=" + username + |
|
|
|
". Frente buscada (id={}) não existe. Retornada lista vazia.".format(request.GET['frente_id'])) |
|
|
|
lista_parlamentar_id = [] |
|
|
|
else: |
|
|
|
logger.info("user=" + username + ". Frente (id={}) encontrada com sucesso.".format(request.GET['frente_id'])) |
|
|
|
logger.info("user=" + username + |
|
|
|
". Frente (id={}) encontrada com sucesso.".format(request.GET['frente_id'])) |
|
|
|
lista_parlamentar_id = frente.parlamentares.all().values_list( |
|
|
|
'id', flat=True) |
|
|
|
return JsonResponse({'id_list': list(lista_parlamentar_id)}) |
|
|
@ -292,8 +299,14 @@ class FrenteCrud(Crud): |
|
|
|
model = Frente |
|
|
|
help_topic = 'tipo_situa_militar' |
|
|
|
public = [RP_DETAIL, RP_LIST] |
|
|
|
list_field_names = ['nome', 'data_criacao', 'data_extincao', 'parlamentares'] |
|
|
|
list_field_names = ['nome', 'data_criacao', |
|
|
|
'data_extincao', 'parlamentares'] |
|
|
|
|
|
|
|
class BaseMixin(Crud.BaseMixin): |
|
|
|
def get_context_data(self, **kwargs): |
|
|
|
context = super().get_context_data(**kwargs) |
|
|
|
context['subnav_template_name'] = '' |
|
|
|
return context |
|
|
|
|
|
|
|
class CreateView(Crud.CreateView): |
|
|
|
form_class = FrenteForm |
|
|
@ -301,18 +314,8 @@ class FrenteCrud(Crud): |
|
|
|
def form_valid(self, form): |
|
|
|
return super(Crud.CreateView, self).form_valid(form) |
|
|
|
|
|
|
|
class DetailView(Crud.DetailView): |
|
|
|
def get_context_data(self, **kwargs): |
|
|
|
context = super().get_context_data(**kwargs) |
|
|
|
context['subnav_template_name'] = '' |
|
|
|
return context |
|
|
|
|
|
|
|
class UpdateView(Crud.UpdateView): |
|
|
|
form_class = FrenteForm |
|
|
|
def get_context_data(self, **kwargs): |
|
|
|
context = super().get_context_data(**kwargs) |
|
|
|
context['subnav_template_name'] = '' |
|
|
|
return context |
|
|
|
|
|
|
|
|
|
|
|
class MandatoCrud(MasterDetailCrud): |
|
|
@ -369,7 +372,7 @@ class ComposicaoColigacaoCrud(MasterDetailCrud): |
|
|
|
|
|
|
|
|
|
|
|
class LegislaturaCrud(CrudAux): |
|
|
|
|
|
|
|
|
|
|
|
model = Legislatura |
|
|
|
help_topic = 'legislatura' |
|
|
|
|
|
|
@ -380,11 +383,13 @@ class LegislaturaCrud(CrudAux): |
|
|
|
def get_initial(self): |
|
|
|
username = self.request.user.username |
|
|
|
try: |
|
|
|
self.logger.error("user=" + username + ". Tentando obter última Legislatura.") |
|
|
|
self.logger.error("user=" + username + |
|
|
|
". Tentando obter última Legislatura.") |
|
|
|
ultima_legislatura = Legislatura.objects.latest('numero') |
|
|
|
numero = ultima_legislatura.numero + 1 |
|
|
|
except Legislatura.DoesNotExist: |
|
|
|
self.logger.error("user=" + username + ". Legislatura não encontrada. Número definido como 1.") |
|
|
|
self.logger.error( |
|
|
|
"user=" + username + ". Legislatura não encontrada. Número definido como 1.") |
|
|
|
numero = 1 |
|
|
|
return {'numero': numero} |
|
|
|
|
|
|
@ -485,10 +490,12 @@ class ParlamentarCrud(Crud): |
|
|
|
def take_legislatura_id(self): |
|
|
|
username = self.request.user.username |
|
|
|
try: |
|
|
|
self.logger.debug("user=" + username + ". Tentando obter id da legislatura.") |
|
|
|
self.logger.debug("user=" + username + |
|
|
|
". Tentando obter id da legislatura.") |
|
|
|
return int(self.request.GET['pk']) |
|
|
|
except: |
|
|
|
self.logger.error("user=" + username + ". Legislatura não possui ID. Buscando em todas as entradas.") |
|
|
|
self.logger.error( |
|
|
|
"user=" + username + ". Legislatura não possui ID. Buscando em todas as entradas.") |
|
|
|
legislaturas = Legislatura.objects.all() |
|
|
|
for l in legislaturas: |
|
|
|
if l.atual(): |
|
|
@ -510,14 +517,17 @@ class ParlamentarCrud(Crud): |
|
|
|
mandato_titular=F('mandato__titular')).distinct() |
|
|
|
else: |
|
|
|
try: |
|
|
|
self.logger.debug("user=" + username + ". Tentando obter o mais recente registro do objeto Legislatura.") |
|
|
|
self.logger.debug( |
|
|
|
"user=" + username + ". Tentando obter o mais recente registro do objeto Legislatura.") |
|
|
|
l = Legislatura.objects.all().order_by( |
|
|
|
'-data_inicio').first() |
|
|
|
except ObjectDoesNotExist: |
|
|
|
self.logger.error("user=" + username + ". Objeto não encontrado. Retornando todos os registros.") |
|
|
|
self.logger.error( |
|
|
|
"user=" + username + ". Objeto não encontrado. Retornando todos os registros.") |
|
|
|
return Legislatura.objects.all() |
|
|
|
else: |
|
|
|
self.logger.info("user=" + username + ". Objeto encontrado com sucesso.") |
|
|
|
self.logger.info("user=" + username + |
|
|
|
". Objeto encontrado com sucesso.") |
|
|
|
if l is None: |
|
|
|
return Legislatura.objects.all() |
|
|
|
return queryset.filter(mandato__legislatura_id=l).annotate( |
|
|
@ -556,8 +566,8 @@ class ParlamentarCrud(Crud): |
|
|
|
# ou igual a data de fim da legislatura |
|
|
|
try: |
|
|
|
self.logger.debug("user=" + username + ". Tentando obter filiação do parlamentar com (data<={} e data_desfiliacao>={}) " |
|
|
|
"ou (data<={} e data_desfiliacao=Null))." |
|
|
|
.format(legislatura.data_fim, legislatura.data_fim, legislatura.data_fim)) |
|
|
|
"ou (data<={} e data_desfiliacao=Null))." |
|
|
|
.format(legislatura.data_fim, legislatura.data_fim, legislatura.data_fim)) |
|
|
|
filiacao = parlamentar.filiacao_set.get(Q( |
|
|
|
data__lte=legislatura.data_fim, |
|
|
|
data_desfiliacao__gte=legislatura.data_fim) | Q( |
|
|
@ -583,7 +593,8 @@ class ParlamentarCrud(Crud): |
|
|
|
|
|
|
|
# Caso encontre UMA filiação nessas condições |
|
|
|
else: |
|
|
|
self.logger.debug("user=" + username + ". Filiação encontrada com sucesso.") |
|
|
|
self.logger.debug("user=" + username + |
|
|
|
". Filiação encontrada com sucesso.") |
|
|
|
row[1] = (filiacao.partido.sigla, None, None) |
|
|
|
|
|
|
|
return context |
|
|
@ -615,13 +626,16 @@ class ParlamentarMateriasView(FormView): |
|
|
|
parlamentar_pk = kwargs['pk'] |
|
|
|
username = request.user.username |
|
|
|
try: |
|
|
|
self.logger.debug("user=" + username + ". Tentando obter Autor (object_id={}).".format(parlamentar_pk)) |
|
|
|
self.logger.debug( |
|
|
|
"user=" + username + ". Tentando obter Autor (object_id={}).".format(parlamentar_pk)) |
|
|
|
autor = Autor.objects.get( |
|
|
|
content_type=ContentType.objects.get_for_model(Parlamentar), |
|
|
|
object_id=parlamentar_pk) |
|
|
|
except ObjectDoesNotExist: |
|
|
|
mensagem = _('Este Parlamentar (pk={}) não é Autor de matéria.'.format(parlamentar_pk)) |
|
|
|
self.logger.error("user=" + username + ". Este Parlamentar (pk={}) não é Autor de matéria.".format(parlamentar_pk)) |
|
|
|
mensagem = _( |
|
|
|
'Este Parlamentar (pk={}) não é Autor de matéria.'.format(parlamentar_pk)) |
|
|
|
self.logger.error( |
|
|
|
"user=" + username + ". Este Parlamentar (pk={}) não é Autor de matéria.".format(parlamentar_pk)) |
|
|
|
messages.add_message(request, messages.ERROR, mensagem) |
|
|
|
return HttpResponseRedirect( |
|
|
|
reverse( |
|
|
@ -709,7 +723,8 @@ class MesaDiretoraView(FormView): |
|
|
|
sessao_atual = sessoes.filter(data_inicio__year__lte=year).exclude( |
|
|
|
data_inicio__gt=timezone.now()).order_by('-data_inicio').first() |
|
|
|
|
|
|
|
mesa = sessao_atual.composicaomesa_set.all().order_by('cargo_id') if sessao_atual else [] |
|
|
|
mesa = sessao_atual.composicaomesa_set.all().order_by( |
|
|
|
'cargo_id') if sessao_atual else [] |
|
|
|
|
|
|
|
cargos_ocupados = [m.cargo for m in mesa] |
|
|
|
cargos = CargoMesa.objects.all() |
|
|
@ -765,7 +780,8 @@ def altera_field_mesa(request): |
|
|
|
else: |
|
|
|
year = timezone.now().year |
|
|
|
try: |
|
|
|
logger.debug("user=" + username + ". Tentando obter id de sessoes com data_inicio.ano={}.".format(year)) |
|
|
|
logger.debug( |
|
|
|
"user=" + username + ". Tentando obter id de sessoes com data_inicio.ano={}.".format(year)) |
|
|
|
sessao_selecionada = sessoes.get(data_inicio__year=year).id |
|
|
|
except ObjectDoesNotExist: |
|
|
|
logger.error("user=" + username + ". Id de sessoes com data_inicio.ano={} não encontrado. " |
|
|
@ -818,24 +834,29 @@ def insere_parlamentar_composicao(request): |
|
|
|
composicao = ComposicaoMesa() |
|
|
|
|
|
|
|
try: |
|
|
|
logger.debug("user=" + username + ". Tentando obter SessaoLegislativa com id={}.".format(request.POST['sessao'])) |
|
|
|
logger.debug( |
|
|
|
"user=" + username + ". Tentando obter SessaoLegislativa com id={}.".format(request.POST['sessao'])) |
|
|
|
composicao.sessao_legislativa = SessaoLegislativa.objects.get( |
|
|
|
id=int(request.POST['sessao'])) |
|
|
|
except MultiValueDictKeyError: |
|
|
|
logger.error("user=" + username + ". 'MultiValueDictKeyError', nenhuma sessão foi inserida!") |
|
|
|
logger.error( |
|
|
|
"user=" + username + ". 'MultiValueDictKeyError', nenhuma sessão foi inserida!") |
|
|
|
return JsonResponse({'msg': ('Nenhuma sessão foi inserida!', 0)}) |
|
|
|
|
|
|
|
try: |
|
|
|
logger.debug("user=" + username + ". Tentando obter Parlamentar com id={}.".format(request.POST['parlamentar'])) |
|
|
|
logger.debug( |
|
|
|
"user=" + username + ". Tentando obter Parlamentar com id={}.".format(request.POST['parlamentar'])) |
|
|
|
composicao.parlamentar = Parlamentar.objects.get( |
|
|
|
id=int(request.POST['parlamentar'])) |
|
|
|
except MultiValueDictKeyError: |
|
|
|
logger.error("user=" + username + ". 'MultiValueDictKeyError', nenhum parlamentar foi inserido!") |
|
|
|
logger.error( |
|
|
|
"user=" + username + ". 'MultiValueDictKeyError', nenhum parlamentar foi inserido!") |
|
|
|
return JsonResponse({ |
|
|
|
'msg': ('Nenhum parlamentar foi inserido!', 0)}) |
|
|
|
|
|
|
|
try: |
|
|
|
logger.info("user=" + username + ". Tentando obter CargoMesa com id={}.".format(request.POST['cargo'])) |
|
|
|
logger.info("user=" + username + |
|
|
|
". Tentando obter CargoMesa com id={}.".format(request.POST['cargo'])) |
|
|
|
composicao.cargo = CargoMesa.objects.get( |
|
|
|
id=int(request.POST['cargo'])) |
|
|
|
parlamentar_ja_inserido = ComposicaoMesa.objects.filter( |
|
|
@ -848,14 +869,16 @@ def insere_parlamentar_composicao(request): |
|
|
|
composicao.save() |
|
|
|
|
|
|
|
except MultiValueDictKeyError: |
|
|
|
logger.error("user=" + username + ". 'MultiValueDictKeyError', nenhum cargo foi inserido!") |
|
|
|
logger.error("user=" + username + |
|
|
|
". 'MultiValueDictKeyError', nenhum cargo foi inserido!") |
|
|
|
return JsonResponse({'msg': ('Nenhum cargo foi inserido!', 0)}) |
|
|
|
|
|
|
|
logger.info("user=" + username + ". Parlamentar inserido com sucesso!") |
|
|
|
return JsonResponse({'msg': ('Parlamentar inserido com sucesso!', 1)}) |
|
|
|
|
|
|
|
else: |
|
|
|
logger.error("user=" + username + " não tem permissão para esta operação!") |
|
|
|
logger.error("user=" + username + |
|
|
|
" não tem permissão para esta operação!") |
|
|
|
return JsonResponse( |
|
|
|
{'msg': ('Você não tem permissão para esta operação!', 0)}) |
|
|
|
|
|
|
@ -873,7 +896,8 @@ def remove_parlamentar_composicao(request): |
|
|
|
|
|
|
|
if 'composicao_mesa' in request.POST: |
|
|
|
try: |
|
|
|
logger.debug("user=" + username + ". Tentando obter ComposicaoMesa com id={}.".format(request.POST['composicao_mesa'])) |
|
|
|
logger.debug("user=" + username + ". Tentando obter ComposicaoMesa com id={}.".format( |
|
|
|
request.POST['composicao_mesa'])) |
|
|
|
composicao = ComposicaoMesa.objects.get( |
|
|
|
id=request.POST['composicao_mesa']) |
|
|
|
except ObjectDoesNotExist: |
|
|
@ -885,12 +909,14 @@ def remove_parlamentar_composicao(request): |
|
|
|
|
|
|
|
composicao.delete() |
|
|
|
|
|
|
|
logger.info("user=" + username + ". ComposicaoMesa com id={} excluido com sucesso!".format(request.POST['composicao_mesa'])) |
|
|
|
logger.info("user=" + username + ". ComposicaoMesa com id={} excluido com sucesso!".format( |
|
|
|
request.POST['composicao_mesa'])) |
|
|
|
return JsonResponse( |
|
|
|
{'msg': ( |
|
|
|
'Parlamentar excluido com sucesso!', 1)}) |
|
|
|
else: |
|
|
|
logger.info("user=" + username + ". Nenhum parlamentar escolhido para ser excluído.") |
|
|
|
logger.info("user=" + username + |
|
|
|
". Nenhum parlamentar escolhido para ser excluído.") |
|
|
|
return JsonResponse( |
|
|
|
{'msg': ( |
|
|
|
'Selecione algum parlamentar para ser excluido!', 0)}) |
|
|
@ -909,8 +935,8 @@ def partido_parlamentar_sessao_legislativa(sessao, parlamentar): |
|
|
|
logger = logging.getLogger(__name__) |
|
|
|
try: |
|
|
|
logger.debug("Tentando obter filiação do parlamentar com (data<={} e data_desfiliacao>={}) " |
|
|
|
"ou (data<={} e data_desfiliacao=Null))." |
|
|
|
.format(sessao.data_fim, sessao.data_fim, sessao.data_fim)) |
|
|
|
"ou (data<={} e data_desfiliacao=Null))." |
|
|
|
.format(sessao.data_fim, sessao.data_fim, sessao.data_fim)) |
|
|
|
|
|
|
|
logger.info("Tentando obter filiação correspondente.") |
|
|
|
filiacao = parlamentar.filiacao_set.get(Q( |
|
|
@ -966,7 +992,8 @@ def altera_field_mesa_public_view(request): |
|
|
|
else: |
|
|
|
try: |
|
|
|
year = timezone.now().year |
|
|
|
logger.info("user=" + username + ". Tentando obter sessões com data_inicio.ano = {}.".format(year)) |
|
|
|
logger.info("user=" + username + |
|
|
|
". Tentando obter sessões com data_inicio.ano = {}.".format(year)) |
|
|
|
sessao_selecionada = sessoes.get(data_inicio__year=year).id |
|
|
|
except ObjectDoesNotExist: |
|
|
|
logger.error("user=" + username + ". Sessões não encontradas com com data_inicio.ano = {}. " |
|
|
|