@ -47,13 +47,15 @@ from .forms import (AdicionarVariasMateriasFilterSet, ExpedienteForm,
MesaForm , OradorExpedienteForm , OradorForm , PautaSessaoFilterSet ,
MesaForm , OradorExpedienteForm , OradorForm , PautaSessaoFilterSet ,
PresencaForm , SessaoPlenariaFilterSet ,
PresencaForm , SessaoPlenariaFilterSet ,
SessaoPlenariaForm , VotacaoEditForm , VotacaoForm ,
SessaoPlenariaForm , VotacaoEditForm , VotacaoForm ,
VotacaoNominalForm , RetiradaPautaForm , OradorOrdemDiaForm )
VotacaoNominalForm , RetiradaPautaForm , OradorOrdemDiaForm ,
OrdemExpedienteLeituraForm )
from . models import ( CargoMesa , ExpedienteMateria , ExpedienteSessao , OcorrenciaSessao , IntegranteMesa ,
from . models import ( CargoMesa , ExpedienteMateria , ExpedienteSessao , OcorrenciaSessao , IntegranteMesa ,
MateriaLegislativa , Orador , OradorExpediente , OrdemDia ,
MateriaLegislativa , Orador , OradorExpediente , OrdemDia ,
PresencaOrdemDia , RegistroVotacao , ResumoOrdenacao ,
PresencaOrdemDia , RegistroVotacao , ResumoOrdenacao ,
SessaoPlenaria , SessaoPlenariaPresenca , TipoExpediente ,
SessaoPlenaria , SessaoPlenariaPresenca , TipoExpediente ,
TipoResultadoVotacao , TipoSessaoPlenaria , VotoParlamentar , TipoRetiradaPauta ,
TipoResultadoVotacao , TipoSessaoPlenaria , VotoParlamentar , TipoRetiradaPauta ,
RetiradaPauta , TipoJustificativa , JustificativaAusencia , OradorOrdemDia , ORDENACAO_RESUMO )
RetiradaPauta , TipoJustificativa , JustificativaAusencia , OradorOrdemDia ,
ORDENACAO_RESUMO , RegistroLeitura )
TipoSessaoCrud = CrudAux . build ( TipoSessaoPlenaria , ' tipo_sessao_plenaria ' )
TipoSessaoCrud = CrudAux . build ( TipoSessaoPlenaria , ' tipo_sessao_plenaria ' )
@ -145,12 +147,12 @@ def verifica_votacoes_abertas(request):
kwargs = { ' pk ' : v . id } ) ,
kwargs = { ' pk ' : v . id } ) ,
v . __str__ ( ) ) )
v . __str__ ( ) ) )
username = request . user . username
username = request . user . username
logger . info ( ' user= ' + username + ' . Já existem votações abertas nas seguintes Sessões: ' +
logger . info ( ' user= ' + username + ' . Já existem votações ou leituras abertas nas seguintes Sessões: ' +
' , ' . join ( msg_abertas ) + ' . Para abrir '
' , ' . join ( msg_abertas ) + ' . Para abrir '
' outra, termine ou feche as votações abertas. ' )
' outra, termine ou feche as votações ou leituras abertas. ' )
msg = _ ( ' Já existem votações abertas nas seguintes Sessões: ' +
msg = _ ( ' Já existem votações ou leituras abertas nas seguintes Sessões: ' +
' , ' . join ( msg_abertas ) + ' . Para abrir '
' , ' . join ( msg_abertas ) + ' . Para abrir '
' outra, termine ou feche as votações abertas. ' )
' outra, termine ou feche as votações ou leituras abertas. ' )
messages . add_message ( request , messages . INFO , msg )
messages . add_message ( request , messages . INFO , msg )
return False
return False
@ -254,7 +256,11 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
materia = obj . materia ) . exists ( )
materia = obj . materia ) . exists ( )
exist_retirada = obj . retiradapauta_set . filter (
exist_retirada = obj . retiradapauta_set . filter (
materia = obj . materia ) . exists ( )
materia = obj . materia ) . exists ( )
if not exist_resultado and not exist_retirada :
exist_leitura = obj . registroleitura_set . filter (
materia = obj . materia ) . exists ( )
if ( obj . tipo_votacao != 4 and not exist_resultado and not exist_retirada ) or \
( obj . tipo_votacao == 4 and not exist_leitura ) :
if obj . votacao_aberta :
if obj . votacao_aberta :
url = ' '
url = ' '
if is_expediente :
if is_expediente :
@ -276,6 +282,13 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
' pk ' : obj . sessao_plenaria_id ,
' pk ' : obj . sessao_plenaria_id ,
' oid ' : obj . pk ,
' oid ' : obj . pk ,
' mid ' : obj . materia_id } )
' mid ' : obj . materia_id } )
elif obj . tipo_votacao == 4 :
url = reverse ( ' sapl.sessao:leituraexp ' ,
kwargs = {
' pk ' : obj . sessao_plenaria_id ,
' oid ' : obj . pk ,
' mid ' : obj . materia_id } )
else :
else :
if obj . tipo_votacao == 1 :
if obj . tipo_votacao == 1 :
url = reverse ( ' sapl.sessao:votacaosimbolica ' ,
url = reverse ( ' sapl.sessao:votacaosimbolica ' ,
@ -295,13 +308,28 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
' pk ' : obj . sessao_plenaria_id ,
' pk ' : obj . sessao_plenaria_id ,
' oid ' : obj . pk ,
' oid ' : obj . pk ,
' mid ' : obj . materia_id } )
' mid ' : obj . materia_id } )
elif obj . tipo_votacao == 4 :
url = reverse ( ' sapl.sessao:leituraod ' ,
kwargs = {
' pk ' : obj . sessao_plenaria_id ,
' oid ' : obj . pk ,
' mid ' : obj . materia_id } )
if has_permission :
if has_permission :
btn_registrar = '''
if obj . tipo_votacao != 4 :
< form action = " %s " >
btn_registrar = '''
< input type = " submit " class = " btn btn-primary "
< form action = " %s " >
value = " Registrar Votação " / >
< input type = " submit " class = " btn btn-primary "
< / form > ''' % (
value = " Registrar Votação " / >
url )
< / form > ''' % (
url )
else :
btn_registrar = '''
< form action = " %s " >
< input type = " submit " class = " btn btn-primary "
value = " Registrar Leitura " / >
< / form > ''' % (
url )
resultado = btn_registrar
resultado = btn_registrar
else :
else :
@ -319,12 +347,20 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
} ) + ' ?tipo_materia=ordem '
} ) + ' ?tipo_materia=ordem '
if has_permission :
if has_permission :
btn_abrir = '''
if not obj . tipo_votacao == 4 :
Matéria não votada < br / >
btn_abrir = '''
< a href = " %s "
Matéria não votada < br / >
class = " btn btn-primary "
< a href = " %s "
role = " button " > Abrir Votação < / a > ''' % (url)
class = " btn btn-primary "
resultado = btn_abrir
role = " button " > Abrir Votação < / a > ''' % (url)
resultado = btn_abrir
else :
btn_abrir = '''
Matéria não lida < br / >
< a href = " %s "
class = " btn btn-primary "
role = " button " > Abrir para Leitura < / a > ''' % (url)
resultado = btn_abrir
else :
else :
resultado = ''' Não há resultado '''
resultado = ''' Não há resultado '''
@ -341,10 +377,16 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
retirada_observacao ) )
retirada_observacao ) )
else :
else :
resultado = obj . registrovotacao_set . filter (
if obj . tipo_votacao == 4 :
materia_id = obj . materia_id ) . last ( )
resultado = obj . registroleitura_set . filter (
resultado_descricao = resultado . tipo_resultado_votacao . nome
materia_id = obj . materia_id ) . last ( )
resultado_observacao = resultado . observacao
resultado_descricao = " Matéria lida "
resultado_observacao = resultado . observacao
else :
resultado = obj . registrovotacao_set . filter (
materia_id = obj . materia_id ) . last ( )
resultado_descricao = obj . resultado
resultado_observacao = obj . observacao
if has_permission :
if has_permission :
url = ' '
url = ' '
@ -368,6 +410,12 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
' pk ' : obj . sessao_plenaria_id ,
' pk ' : obj . sessao_plenaria_id ,
' oid ' : obj . pk ,
' oid ' : obj . pk ,
' mid ' : obj . materia_id } )
' mid ' : obj . materia_id } )
elif obj . tipo_votacao == 4 :
url = reverse ( ' sapl.sessao:leituraexp ' ,
kwargs = {
' pk ' : obj . sessao_plenaria_id ,
' oid ' : obj . pk ,
' mid ' : obj . materia_id } )
else :
else :
if obj . tipo_votacao == 1 :
if obj . tipo_votacao == 1 :
url = reverse ( ' sapl.sessao:votacaosimbolicaedit ' ,
url = reverse ( ' sapl.sessao:votacaosimbolicaedit ' ,
@ -387,11 +435,17 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
' pk ' : obj . sessao_plenaria_id ,
' pk ' : obj . sessao_plenaria_id ,
' oid ' : obj . pk ,
' oid ' : obj . pk ,
' mid ' : obj . materia_id } )
' mid ' : obj . materia_id } )
elif obj . tipo_votacao == 4 :
url = reverse ( ' sapl.sessao:leituraod ' ,
kwargs = {
' pk ' : obj . sessao_plenaria_id ,
' oid ' : obj . pk ,
' mid ' : obj . materia_id } )
resultado = ( ' <a href= " %s " > %s <br/> %s </a> ' %
resultado = ( ' <a href= " %s " > %s <br/><br/> %s </a> ' %
( url ,
( url ,
resultado_descricao ,
resultado_descricao ,
resultado_observacao ) )
resultado_observacao ) )
else :
else :
if obj . tipo_votacao == 2 :
if obj . tipo_votacao == 2 :
@ -4372,3 +4426,90 @@ def voto_nominal_parlamentar(request):
voto . save ( )
voto . save ( )
return JsonResponse ( { } )
return JsonResponse ( { } )
class AbstractLeituraView ( FormView ) :
template_name = ' sessao/votacao/leitura_form.html '
form_class = OrdemExpedienteLeituraForm
def get_context_data ( self , * * kwargs ) :
context = super ( ) . get_context_data ( * * kwargs )
context [ ' materia ' ] = MateriaLegislativa . objects . get ( id = self . kwargs [ ' mid ' ] )
return context
def get_initial ( self ) :
initial = super ( ) . get_initial ( )
materia = MateriaLegislativa . objects . get ( id = self . kwargs [ ' mid ' ] )
initial [ ' materia ' ] = materia
initial [ ' materia__ementa ' ] = materia . ementa
if self . expediente :
expediente = ExpedienteMateria . objects . get ( id = self . kwargs [ ' oid ' ] )
instance = RegistroLeitura . objects . filter ( materia = materia , expediente = expediente )
initial [ ' expediente ' ] = expediente
else :
ordem = OrdemDia . objects . get ( id = self . kwargs [ ' oid ' ] )
instance = RegistroLeitura . objects . filter ( materia = materia , ordem = ordem )
initial [ ' ordem ' ] = ordem
initial [ ' instance ' ] = instance
initial [ ' user ' ] = self . request . user
initial [ ' ip ' ] = get_client_ip ( self . request )
return initial
def form_valid ( self , form ) :
if self . expediente :
model = ExpedienteMateria
else :
model = OrdemDia
ordem_expediente = model . objects . get ( id = self . kwargs [ ' oid ' ] )
ordem_expediente . resultado = " Matéria lida "
ordem_expediente . votacao_aberta = False
ordem_expediente . save ( )
form . save ( )
return super ( ) . form_valid ( form )
def get_success_url ( self ) :
pk = self . kwargs [ ' pk ' ]
if self . expediente :
url = reverse ( ' sapl.sessao:expedientemateria_list ' ,
kwargs = { ' pk ' : pk } )
else :
url = reverse ( ' sapl.sessao:ordemdia_list ' ,
kwargs = { ' pk ' : pk } )
return url
def cancel_url ( self ) :
url = reverse ( ' sapl.sessao:retirar_leitura ' ,
kwargs = {
' pk ' : self . kwargs [ ' pk ' ] ,
' iso ' : 1 if not self . expediente else 0 ,
' oid ' : self . kwargs [ ' oid ' ] } )
return url
class ExpedienteLeituraView ( AbstractLeituraView ) :
expediente = True
class OrdemDiaLeituraView ( AbstractLeituraView ) :
expediente = False
@permission_required ( ' sessao.change_expedientemateria ' ,
' sessao.change_ordemdia ' )
def retirar_leitura ( request , pk , iso , oid ) :
is_ordem = bool ( int ( iso ) )
if not is_ordem :
ordem_expediente = ExpedienteMateria . objects . get ( id = oid )
RegistroLeitura . objects . filter ( materia = ordem_expediente . materia , expediente = ordem_expediente ) . delete ( )
succ_url = reverse ( ' sapl.sessao:expedientemateria_list ' ,
kwargs = { ' pk ' : pk } )
else :
ordem_expediente = OrdemDia . objects . get ( id = oid )
RegistroLeitura . objects . filter ( materia = ordem_expediente . materia , ordem = ordem_expediente ) . delete ( )
succ_url = reverse ( ' sapl.sessao:ordemdia_list ' ,
kwargs = { ' pk ' : pk } )
ordem_expediente . resultado = " "
ordem_expediente . votacao_aberta = False
ordem_expediente . save ( )
return HttpResponseRedirect ( succ_url )