@ -3,7 +3,7 @@ from re import sub
from django . contrib import messages
from django . contrib import messages
from django . contrib . auth . decorators import permission_required
from django . contrib . auth . decorators import permission_required
from django . core . exceptions import ObjectDoesNotExist , MultipleObjectsReturned
from django . core . exceptions import MultipleObjectsReturned , ObjectDoesNotExist
from django . core . urlresolvers import reverse
from django . core . urlresolvers import reverse
from django . forms . utils import ErrorList
from django . forms . utils import ErrorList
from django . http import JsonResponse
from django . http import JsonResponse
@ -42,7 +42,8 @@ from .models import (Bancada, Bloco, CargoBancada, CargoMesa,
MateriaLegislativa , Orador , OradorExpediente , OrdemDia ,
MateriaLegislativa , Orador , OradorExpediente , OrdemDia ,
PresencaOrdemDia , RegistroVotacao , SessaoPlenaria ,
PresencaOrdemDia , RegistroVotacao , SessaoPlenaria ,
SessaoPlenariaPresenca , TipoExpediente ,
SessaoPlenariaPresenca , TipoExpediente ,
TipoResultadoVotacao , TipoSessaoPlenaria , VotoParlamentar )
TipoResultadoVotacao , TipoSessaoPlenaria , VotoNominal ,
VotoParlamentar )
TipoSessaoCrud = CrudAux . build ( TipoSessaoPlenaria , ' tipo_sessao_plenaria ' )
TipoSessaoCrud = CrudAux . build ( TipoSessaoPlenaria , ' tipo_sessao_plenaria ' )
TipoExpedienteCrud = CrudAux . build ( TipoExpediente , ' tipo_expediente ' )
TipoExpedienteCrud = CrudAux . build ( TipoExpediente , ' tipo_expediente ' )
@ -1316,7 +1317,7 @@ class VotacaoNominalView(SessaoPermissionMixin):
' ementa ' : sub (
' ementa ' : sub (
' ' , ' ' , strip_tags ( ordem . observacao ) ) }
' ' , ' ' , strip_tags ( ordem . observacao ) ) }
context = { ' materia ' : materia , ' object ' : self . get_object ( ) ,
context = { ' materia ' : materia , ' object ' : self . get_object ( ) ,
' parlamentares ' : self . get_parlamentares ( ) ,
' parlamentares ' : self . get_parlamentares ( ordem . materia ) ,
' tipos ' : self . get_tipos_votacao ( ) ,
' tipos ' : self . get_tipos_votacao ( ) ,
' total ' : total }
' total ' : total }
@ -1331,6 +1332,21 @@ class VotacaoNominalView(SessaoPermissionMixin):
form = VotacaoNominalForm ( request . POST )
form = VotacaoNominalForm ( request . POST )
if ' cancelar-votacao ' in request . POST :
if ' cancelar-votacao ' in request . POST :
sessao = self . object
materia = ordem . materia
presentes = PresencaOrdemDia . objects . filter (
sessao_plenaria_id = expediente . sessao_plenaria_id )
for p in presentes :
try :
voto = VotoNominal . objects . get (
parlamentar = p . parlamentar ,
sessao = self . object . pk ,
materia = materia )
except ObjectDoesNotExist :
pass
else :
voto . delete ( )
ordem . votacao_aberta = False
ordem . votacao_aberta = False
ordem . save ( )
ordem . save ( )
return self . form_valid ( form )
return self . form_valid ( form )
@ -1349,13 +1365,13 @@ class VotacaoNominalView(SessaoPermissionMixin):
voto = v [ 0 ]
voto = v [ 0 ]
parlamentar_id = v [ 1 ]
parlamentar_id = v [ 1 ]
if ( voto == ' s im' ) :
if ( voto == ' S im' ) :
votos_sim + = 1
votos_sim + = 1
elif ( voto == ' na o' ) :
elif ( voto == ' Nã o' ) :
votos_nao + = 1
votos_nao + = 1
elif ( voto == ' abstenca o' ) :
elif ( voto == ' Abstençã o' ) :
abstencoes + = 1
abstencoes + = 1
elif ( voto == ' nao_v otou' ) :
elif ( voto == ' Não V otou' ) :
nao_votou + = 1
nao_votou + = 1
try :
try :
@ -1384,14 +1400,7 @@ class VotacaoNominalView(SessaoPermissionMixin):
parlamentar_id = v [ 1 ]
parlamentar_id = v [ 1 ]
voto_parlamentar = VotoParlamentar ( )
voto_parlamentar = VotoParlamentar ( )
if voto == ' sim ' :
voto_parlamentar . voto = voto
voto_parlamentar . voto = _ ( ' Sim ' )
elif voto == ' nao ' :
voto_parlamentar . voto = _ ( ' Não ' )
elif voto == ' abstencao ' :
voto_parlamentar . voto = _ ( ' Abstenção ' )
elif voto == ' nao_votou ' :
voto_parlamentar . voto = _ ( ' Não Votou ' )
voto_parlamentar . parlamentar_id = parlamentar_id
voto_parlamentar . parlamentar_id = parlamentar_id
voto_parlamentar . votacao_id = votacao . id
voto_parlamentar . votacao_id = votacao . id
voto_parlamentar . save ( )
voto_parlamentar . save ( )
@ -1409,7 +1418,7 @@ class VotacaoNominalView(SessaoPermissionMixin):
else :
else :
return self . form_invalid ( form )
return self . form_invalid ( form )
def get_parlamentares ( self ) :
def get_parlamentares ( self , materia ) :
self . object = self . get_object ( )
self . object = self . get_object ( )
presencas = PresencaOrdemDia . objects . filter (
presencas = PresencaOrdemDia . objects . filter (
@ -1419,7 +1428,15 @@ class VotacaoNominalView(SessaoPermissionMixin):
for parlamentar in Parlamentar . objects . filter ( ativo = True ) :
for parlamentar in Parlamentar . objects . filter ( ativo = True ) :
if parlamentar in presentes :
if parlamentar in presentes :
yield parlamentar
try :
voto = VotoNominal . objects . get (
parlamentar = parlamentar ,
sessao = self . object . pk ,
materia = materia )
except ObjectDoesNotExist :
yield [ parlamentar , None ]
else :
yield [ parlamentar , voto . voto ]
def get_tipos_votacao ( self ) :
def get_tipos_votacao ( self ) :
for tipo in TipoResultadoVotacao . objects . all ( ) :
for tipo in TipoResultadoVotacao . objects . all ( ) :
@ -1474,6 +1491,21 @@ class VotacaoNominalEditView(SessaoPermissionMixin):
materia_id = kwargs [ ' oid ' ]
materia_id = kwargs [ ' oid ' ]
ordem_id = kwargs [ ' mid ' ]
ordem_id = kwargs [ ' mid ' ]
sessao = self . object
ordem = ExpedienteMateria . objects . get ( id = ordem_id )
presentes = PresencaOrdemDia . objects . filter (
sessao_plenaria_id = ordem . sessao_plenaria_id )
for p in presentes :
try :
voto = VotoNominal . objects . get (
parlamentar = p . parlamentar ,
sessao = self . object . pk ,
materia = materia_id )
except ObjectDoesNotExist :
pass
else :
voto . delete ( )
if ( int ( request . POST [ ' anular_votacao ' ] ) == 1 ) :
if ( int ( request . POST [ ' anular_votacao ' ] ) == 1 ) :
registro = RegistroVotacao . objects . get (
registro = RegistroVotacao . objects . get (
materia_id = materia_id ,
materia_id = materia_id ,
@ -1494,8 +1526,6 @@ class VotacaoNominalEditView(SessaoPermissionMixin):
except :
except :
pass
pass
registro . delete ( )
return self . form_valid ( form )
return self . form_valid ( form )
def get_tipos_votacao ( self ) :
def get_tipos_votacao ( self ) :
@ -1521,7 +1551,7 @@ class VotacaoNominalExpedienteView(SessaoPermissionMixin):
' ementa ' : sub (
' ementa ' : sub (
' ' , ' ' , strip_tags ( expediente . observacao ) ) }
' ' , ' ' , strip_tags ( expediente . observacao ) ) }
context = { ' materia ' : materia , ' object ' : self . get_object ( ) ,
context = { ' materia ' : materia , ' object ' : self . get_object ( ) ,
' parlamentares ' : self . get_parlamentares ( ) ,
' parlamentares ' : self . get_parlamentares ( expediente . materia ) ,
' tipos ' : self . get_tipos_votacao ( ) ,
' tipos ' : self . get_tipos_votacao ( ) ,
' total ' : total }
' total ' : total }
@ -1536,6 +1566,23 @@ class VotacaoNominalExpedienteView(SessaoPermissionMixin):
form = VotacaoNominalForm ( request . POST )
form = VotacaoNominalForm ( request . POST )
if ' cancelar-votacao ' in request . POST :
if ' cancelar-votacao ' in request . POST :
sessao = self . object
expediente_id = kwargs [ ' mid ' ]
expediente = ExpedienteMateria . objects . get ( id = expediente_id )
materia = expediente . materia
presentes = SessaoPlenariaPresenca . objects . filter (
sessao_plenaria_id = expediente . sessao_plenaria_id )
for p in presentes :
try :
voto = VotoNominal . objects . get (
parlamentar = p . parlamentar ,
sessao = self . object . pk ,
materia = materia )
except ObjectDoesNotExist :
pass
else :
voto . delete ( )
expediente . votacao_aberta = False
expediente . votacao_aberta = False
expediente . save ( )
expediente . save ( )
return self . form_valid ( form )
return self . form_valid ( form )
@ -1554,13 +1601,13 @@ class VotacaoNominalExpedienteView(SessaoPermissionMixin):
voto = v [ 0 ]
voto = v [ 0 ]
parlamentar_id = v [ 1 ]
parlamentar_id = v [ 1 ]
if ( voto == ' s im' ) :
if ( voto == ' S im' ) :
votos_sim + = 1
votos_sim + = 1
elif ( voto == ' na o' ) :
elif ( voto == ' Nã o' ) :
votos_nao + = 1
votos_nao + = 1
elif ( voto == ' abstenca o' ) :
elif ( voto == ' Abstençã o' ) :
abstencoes + = 1
abstencoes + = 1
elif ( voto == ' nao_v otou' ) :
elif ( voto == ' Não V otou' ) :
nao_votou + = 1
nao_votou + = 1
try :
try :
@ -1587,14 +1634,7 @@ class VotacaoNominalExpedienteView(SessaoPermissionMixin):
parlamentar_id = v [ 1 ]
parlamentar_id = v [ 1 ]
voto_parlamentar = VotoParlamentar ( )
voto_parlamentar = VotoParlamentar ( )
if ( voto == ' sim ' ) :
voto_parlamentar . voto = voto
voto_parlamentar . voto = _ ( ' Sim ' )
elif ( voto == ' nao ' ) :
voto_parlamentar . voto = _ ( ' Não ' )
elif ( voto == ' abstencao ' ) :
voto_parlamentar . voto = _ ( ' Abstenção ' )
elif ( voto == ' nao_votou ' ) :
voto_parlamentar . voto = _ ( ' Não Votou ' )
voto_parlamentar . parlamentar_id = parlamentar_id
voto_parlamentar . parlamentar_id = parlamentar_id
voto_parlamentar . votacao_id = votacao . id
voto_parlamentar . votacao_id = votacao . id
voto_parlamentar . save ( )
voto_parlamentar . save ( )
@ -1612,9 +1652,8 @@ class VotacaoNominalExpedienteView(SessaoPermissionMixin):
else :
else :
return self . form_invalid ( form )
return self . form_invalid ( form )
def get_parlamentares ( self ) :
def get_parlamentares ( self , materia ) :
self . object = self . get_object ( )
self . object = self . get_object ( )
presencas = SessaoPlenariaPresenca . objects . filter (
presencas = SessaoPlenariaPresenca . objects . filter (
sessao_plenaria_id = self . object . id
sessao_plenaria_id = self . object . id
)
)
@ -1622,7 +1661,15 @@ class VotacaoNominalExpedienteView(SessaoPermissionMixin):
for parlamentar in Parlamentar . objects . filter ( ativo = True ) :
for parlamentar in Parlamentar . objects . filter ( ativo = True ) :
if parlamentar in presentes :
if parlamentar in presentes :
yield parlamentar
try :
voto = VotoNominal . objects . get (
parlamentar = parlamentar ,
sessao = self . object . pk ,
materia = materia )
except ObjectDoesNotExist :
yield [ parlamentar , None ]
else :
yield [ parlamentar , voto . voto ]
def get_tipos_votacao ( self ) :
def get_tipos_votacao ( self ) :
for tipo in TipoResultadoVotacao . objects . all ( ) :
for tipo in TipoResultadoVotacao . objects . all ( ) :
@ -1676,6 +1723,21 @@ class VotacaoNominalExpedienteEditView(SessaoPermissionMixin):
materia_id = kwargs [ ' oid ' ]
materia_id = kwargs [ ' oid ' ]
expediente_id = kwargs [ ' mid ' ]
expediente_id = kwargs [ ' mid ' ]
sessao = self . object
expediente = ExpedienteMateria . objects . get ( id = expediente_id )
presentes = SessaoPlenariaPresenca . objects . filter (
sessao_plenaria_id = expediente . sessao_plenaria_id )
for p in presentes :
try :
voto = VotoNominal . objects . get (
parlamentar = p . parlamentar ,
sessao = self . object . pk ,
materia = materia_id )
except ObjectDoesNotExist :
pass
else :
voto . delete ( )
if ( int ( request . POST [ ' anular_votacao ' ] ) == 1 ) :
if ( int ( request . POST [ ' anular_votacao ' ] ) == 1 ) :
registro = RegistroVotacao . objects . get (
registro = RegistroVotacao . objects . get (
materia_id = materia_id ,
materia_id = materia_id ,