@ -1,9 +1,11 @@
from datetime import datetime
from datetime import datetime
import logging
from random import choice
from random import choice
from string import ascii_letters , digits
from string import ascii_letters , digits
from crispy_forms . helper import FormHelper
from crispy_forms . helper import FormHelper
from crispy_forms . layout import HTML
from crispy_forms . layout import HTML
from django . conf import settings
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 . contrib . auth . mixins import PermissionRequiredMixin
from django . contrib . auth . mixins import PermissionRequiredMixin
@ -21,10 +23,11 @@ from django.views.generic.base import RedirectView
from django . views . generic . edit import FormView
from django . views . generic . edit import FormView
from django_filters . views import FilterView
from django_filters . views import FilterView
import weasyprint
import weasyprint
import logging
import sapl
import sapl
from sapl . base . email_utils import do_envia_email_confirmacao
from sapl . base . models import Autor , CasaLegislativa
from sapl . base . models import Autor , CasaLegislativa
from sapl . base . signals import tramitacao_signal
from sapl . comissoes . models import Comissao , Participacao
from sapl . comissoes . models import Comissao , Participacao
from sapl . compilacao . models import ( STATUS_TA_IMMUTABLE_RESTRICT ,
from sapl . compilacao . models import ( STATUS_TA_IMMUTABLE_RESTRICT ,
STATUS_TA_PRIVATE )
STATUS_TA_PRIVATE )
@ -45,9 +48,8 @@ from sapl.protocoloadm.models import Protocolo
from sapl . utils import ( YES_NO_CHOICES , autor_label , autor_modal , SEPARADOR_HASH_PROPOSICAO ,
from sapl . utils import ( YES_NO_CHOICES , autor_label , autor_modal , SEPARADOR_HASH_PROPOSICAO ,
gerar_hash_arquivo , get_base_url ,
gerar_hash_arquivo , get_base_url ,
get_mime_type_from_file_extension , montar_row_autor ,
get_mime_type_from_file_extension , montar_row_autor ,
show_results_filter_set )
show_results_filter_set , mail_service_configured )
from sapl . base . email_utils import do_envia_email_confirmacao
from . forms import ( AcessorioEmLoteFilterSet , AcompanhamentoMateriaForm ,
from . forms import ( AcessorioEmLoteFilterSet , AcompanhamentoMateriaForm ,
AdicionarVariasAutoriasFilterSet , DespachoInicialForm ,
AdicionarVariasAutoriasFilterSet , DespachoInicialForm ,
DocumentoAcessorioForm , EtiquetaPesquisaForm ,
DocumentoAcessorioForm , EtiquetaPesquisaForm ,
@ -66,7 +68,6 @@ from .models import (AcompanhamentoMateria, Anexada, AssuntoMateria, Autoria,
RegimeTramitacao , Relatoria , StatusTramitacao ,
RegimeTramitacao , Relatoria , StatusTramitacao ,
TipoDocumento , TipoFimRelatoria , TipoMateriaLegislativa ,
TipoDocumento , TipoFimRelatoria , TipoMateriaLegislativa ,
TipoProposicao , Tramitacao , UnidadeTramitacao )
TipoProposicao , Tramitacao , UnidadeTramitacao )
from sapl . base . signals import tramitacao_signal
AssuntoMateriaCrud = CrudAux . build ( AssuntoMateria , ' assunto_materia ' )
AssuntoMateriaCrud = CrudAux . build ( AssuntoMateria , ' assunto_materia ' )
@ -94,8 +95,9 @@ def autores_ja_adicionados(materia_pk):
def proposicao_texto ( request , pk ) :
def proposicao_texto ( request , pk ) :
logger = logging . getLogger ( __name__ )
logger = logging . getLogger ( __name__ )
username = request . user . username . replace ( " ' " , " " )
username = request . user . username . replace ( " ' " , " " )
logger . debug ( ' user= ' + username + ' . Tentando obter objeto Proposicao com pk = {} . ' . format ( pk ) )
logger . debug ( ' user= ' + username +
' . Tentando obter objeto Proposicao com pk = {} . ' . format ( pk ) )
proposicao = Proposicao . objects . get ( pk = pk )
proposicao = Proposicao . objects . get ( pk = pk )
if proposicao . texto_original :
if proposicao . texto_original :
@ -119,7 +121,8 @@ def proposicao_texto(request, pk):
response [ ' Content-Disposition ' ] = (
response [ ' Content-Disposition ' ] = (
' inline; filename= " %s " ' % arquivo . name . split ( ' / ' ) [ - 1 ] )
' inline; filename= " %s " ' % arquivo . name . split ( ' / ' ) [ - 1 ] )
return response
return response
logger . error ( ' user= ' + username + ' . Objeto Proposicao com pk= {} não encontrado. ' . format ( pk ) )
logger . error ( ' user= ' + username +
' . Objeto Proposicao com pk= {} não encontrado. ' . format ( pk ) )
raise Http404
raise Http404
@ -181,18 +184,21 @@ class CriarProtocoloMateriaView(CreateView):
def get_context_data ( self , * * kwargs ) :
def get_context_data ( self , * * kwargs ) :
context = super (
context = super (
CriarProtocoloMateriaView , self ) . get_context_data ( * * kwargs )
CriarProtocoloMateriaView , self ) . get_context_data ( * * kwargs )
username = self . request . user . username . replace ( " ' " , " " )
username = self . request . user . username . replace ( " ' " , " " )
try :
try :
self . logger . debug ( " user= " + username + " . Tentando obter objeto Protocolo. " )
self . logger . debug ( " user= " + username +
" . Tentando obter objeto Protocolo. " )
protocolo = Protocolo . objects . get ( pk = self . kwargs [ ' pk ' ] )
protocolo = Protocolo . objects . get ( pk = self . kwargs [ ' pk ' ] )
except ObjectDoesNotExist as e :
except ObjectDoesNotExist as e :
self . logger . error ( " user= " + username + " . Objeto Protocolo com pk= {} não encontrado. " . format ( self . kwargs [ ' pk ' ] ) + str ( e ) )
self . logger . error (
" user= " + username + " . Objeto Protocolo com pk= {} não encontrado. " . format ( self . kwargs [ ' pk ' ] ) + str ( e ) )
raise Http404 ( )
raise Http404 ( )
numero = 1
numero = 1
try :
try :
self . logger . debug ( " user= " + username + " . Tentando obter materias do último ano. " )
self . logger . debug ( " user= " + username +
" . Tentando obter materias do último ano. " )
materias_ano = MateriaLegislativa . objects . filter (
materias_ano = MateriaLegislativa . objects . filter (
ano = protocolo . ano ,
ano = protocolo . ano ,
tipo = protocolo . tipo_materia ) . latest ( ' numero ' )
tipo = protocolo . tipo_materia ) . latest ( ' numero ' )
@ -213,13 +219,15 @@ class CriarProtocoloMateriaView(CreateView):
def form_valid ( self , form ) :
def form_valid ( self , form ) :
materia = form . save ( )
materia = form . save ( )
username = self . request . user . username . replace ( " ' " , " " )
username = self . request . user . username . replace ( " ' " , " " )
try :
try :
self . logger . info ( " user= " + username + " . Tentando obter objeto Procolo com pk= {} . " . format ( self . kwargs [ ' pk ' ] ) )
self . logger . info (
" user= " + username + " . Tentando obter objeto Procolo com pk= {} . " . format ( self . kwargs [ ' pk ' ] ) )
protocolo = Protocolo . objects . get ( pk = self . kwargs [ ' pk ' ] )
protocolo = Protocolo . objects . get ( pk = self . kwargs [ ' pk ' ] )
except ObjectDoesNotExist :
except ObjectDoesNotExist :
self . logger . error ( ' user= ' + username + ' . Objeto Protocolo com pk= {} não encontrado. ' . format ( self . kwargs [ ' pk ' ] ) )
self . logger . error (
' user= ' + username + ' . Objeto Protocolo com pk= {} não encontrado. ' . format ( self . kwargs [ ' pk ' ] ) )
raise Http404 ( )
raise Http404 ( )
if protocolo . autor :
if protocolo . autor :
@ -304,17 +312,19 @@ class ProposicaoTaView(IntegracaoTaView):
@permission_required ( ' materia.detail_materialegislativa ' )
@permission_required ( ' materia.detail_materialegislativa ' )
def recuperar_materia ( request ) :
def recuperar_materia ( request ) :
logger = logging . getLogger ( __name__ )
logger = logging . getLogger ( __name__ )
username = request . user . username . replace ( " ' " , " " )
username = request . user . username . replace ( " ' " , " " )
tipo = TipoMateriaLegislativa . objects . get ( pk = request . GET [ ' tipo ' ] )
tipo = TipoMateriaLegislativa . objects . get ( pk = request . GET [ ' tipo ' ] )
ano = request . GET . get ( ' ano ' , ' ' )
ano = request . GET . get ( ' ano ' , ' ' )
numeracao = None
numeracao = None
try :
try :
logger . debug ( " user= " + username + " . Tentando obter numeração da matéria. " )
logger . debug ( " user= " + username +
" . Tentando obter numeração da matéria. " )
numeracao = sapl . base . models . AppConfig . objects . last (
numeracao = sapl . base . models . AppConfig . objects . last (
) . sequencia_numeracao
) . sequencia_numeracao
except AttributeError as e :
except AttributeError as e :
logger . error ( " user= " + username + " . " + str ( e ) + " Numeracao da matéria definida como None. " )
logger . error ( " user= " + username + " . " + str ( e ) +
" Numeracao da matéria definida como None. " )
pass
pass
if tipo . sequencia_numeracao :
if tipo . sequencia_numeracao :
@ -531,7 +541,8 @@ class ReceberProposicao(PermissionRequiredForAppCrudMixin, FormView):
except IndexError :
except IndexError :
messages . error ( request , _ ( ' Código de recibo mal formado! ' ) )
messages . error ( request , _ ( ' Código de recibo mal formado! ' ) )
except IOError :
except IOError :
messages . error ( request , _ ( ' Erro abrindo texto original de proposição ' ) )
messages . error ( request , _ (
' Erro abrindo texto original de proposição ' ) )
return self . form_invalid ( form )
return self . form_invalid ( form )
def get_success_url ( self ) :
def get_success_url ( self ) :
@ -547,21 +558,24 @@ class RetornarProposicao(UpdateView):
app_label = sapl . protocoloadm . apps . AppConfig . label
app_label = sapl . protocoloadm . apps . AppConfig . label
template_name = " materia/proposicao_confirm_return.html "
template_name = " materia/proposicao_confirm_return.html "
model = Proposicao
model = Proposicao
fields = [ ' data_envio ' , ' descricao ' ]
fields = [ ' data_envio ' , ' descricao ' ]
permission_required = ( ' materia.detail_proposicao_enviada ' , )
permission_required = ( ' materia.detail_proposicao_enviada ' , )
logger = logging . getLogger ( __name__ )
logger = logging . getLogger ( __name__ )
def dispatch ( self , request , * args , * * kwargs ) :
def dispatch ( self , request , * args , * * kwargs ) :
username = request . user . username . replace ( " ' " , " " )
username = request . user . username . replace ( " ' " , " " )
try :
try :
self . logger . info ( " user= " + username + " . Tentando obter objeto Proposicao com id= {} . " . format ( kwargs [ ' pk ' ] ) )
self . logger . info (
" user= " + username + " . Tentando obter objeto Proposicao com id= {} . " . format ( kwargs [ ' pk ' ] ) )
p = Proposicao . objects . get ( id = kwargs [ ' pk ' ] )
p = Proposicao . objects . get ( id = kwargs [ ' pk ' ] )
except :
except :
self . logger . error ( " user= " + username + " . Objeto Proposicao com id= {} não encontrado. " . format ( kwargs [ ' pk ' ] ) )
self . logger . error (
" user= " + username + " . Objeto Proposicao com id= {} não encontrado. " . format ( kwargs [ ' pk ' ] ) )
raise Http404 ( )
raise Http404 ( )
if p . autor . user != request . user :
if p . autor . user != request . user :
self . logger . error ( " user= " + username + " . Usuário ( {} ) sem acesso a esta opção. " . format ( request . user ) )
self . logger . error (
" user= " + username + " . Usuário ( {} ) sem acesso a esta opção. " . format ( request . user ) )
messages . error (
messages . error (
request ,
request ,
' Usuário sem acesso a esta opção. ' %
' Usuário sem acesso a esta opção. ' %
@ -589,7 +603,7 @@ class ConfirmarProposicao(PermissionRequiredForAppCrudMixin, UpdateView):
return self . object . results [ ' url ' ]
return self . object . results [ ' url ' ]
def get_object ( self , queryset = None ) :
def get_object ( self , queryset = None ) :
username = self . request . user . username . replace ( " ' " , " " )
username = self . request . user . username . replace ( " ' " , " " )
try :
try :
"""
"""
@ -597,7 +611,8 @@ class ConfirmarProposicao(PermissionRequiredForAppCrudMixin, UpdateView):
já recebidas - > data_recebimento != None
já recebidas - > data_recebimento != None
não enviadas - > data_envio == None
não enviadas - > data_envio == None
"""
"""
self . logger . debug ( " user= " + username + " . Tentando obter objeto Proposicao. " )
self . logger . debug ( " user= " + username +
" . Tentando obter objeto Proposicao. " )
proposicao = Proposicao . objects . get ( pk = self . kwargs [ ' pk ' ] ,
proposicao = Proposicao . objects . get ( pk = self . kwargs [ ' pk ' ] ,
data_envio__isnull = False ,
data_envio__isnull = False ,
data_recebimento__isnull = True )
data_recebimento__isnull = True )
@ -736,6 +751,7 @@ class ProposicaoCrud(Crud):
' materia.detail_proposicao_incorporada ' )
' materia.detail_proposicao_incorporada ' )
logger = logging . getLogger ( __name__ )
logger = logging . getLogger ( __name__ )
def get_context_data ( self , * * kwargs ) :
def get_context_data ( self , * * kwargs ) :
context = super ( ) . get_context_data ( * * kwargs )
context = super ( ) . get_context_data ( * * kwargs )
context [ ' subnav_template_name ' ] = ' '
context [ ' subnav_template_name ' ] = ' '
@ -748,7 +764,7 @@ class ProposicaoCrud(Crud):
def get ( self , request , * args , * * kwargs ) :
def get ( self , request , * args , * * kwargs ) :
action = request . GET . get ( ' action ' , ' ' )
action = request . GET . get ( ' action ' , ' ' )
username = request . user . username . replace ( " ' " , " " )
username = request . user . username . replace ( " ' " , " " )
if not action :
if not action :
return Crud . DetailView . get ( self , request , * args , * * kwargs )
return Crud . DetailView . get ( self , request , * args , * * kwargs )
@ -790,18 +806,22 @@ class ProposicaoCrud(Crud):
' número que pode não corresponder com a realidade '
' número que pode não corresponder com a realidade '
% ( p . tipo , numero , p . ano ) ) )
% ( p . tipo , numero , p . ano ) ) )
except ValueError as e :
except ValueError as e :
self . logger . error ( " user= " + username + " . " + str ( e ) )
self . logger . error (
" user= " + username + " . " + str ( e ) )
pass
pass
except AttributeError as e :
except AttributeError as e :
self . logger . error ( " user= " + username + " . " + str ( e ) )
self . logger . error (
" user= " + username + " . " + str ( e ) )
pass
pass
except TypeError as e :
except TypeError as e :
self . logger . error ( " user= " + username + " . " + str ( e ) )
self . logger . error (
" user= " + username + " . " + str ( e ) )
pass
pass
elif action == ' return ' :
elif action == ' return ' :
if not p . data_envio :
if not p . data_envio :
self . logger . error ( " user= " + username + " . Proposição (numero= {} ) ainda não foi enviada. " . format ( p . numero_proposicao ) )
self . logger . error (
" user= " + username + " . Proposição (numero= {} ) ainda não foi enviada. " . format ( p . numero_proposicao ) )
msg_error = _ ( ' Proposição ainda não foi enviada. ' )
msg_error = _ ( ' Proposição ainda não foi enviada. ' )
elif p . data_recebimento :
elif p . data_recebimento :
self . logger . error ( " user= " + username + " . Proposição (numero= {} ) já foi recebida, não é "
self . logger . error ( " user= " + username + " . Proposição (numero= {} ) já foi recebida, não é "
@ -816,7 +836,8 @@ class ProposicaoCrud(Crud):
ta . privacidade = STATUS_TA_PRIVATE
ta . privacidade = STATUS_TA_PRIVATE
ta . editing_locked = False
ta . editing_locked = False
ta . save ( )
ta . save ( )
self . logger . info ( " user= " + username + " . Proposição (numero= {} ) Retornada com sucesso. " . format ( p . numero_proposicao ) )
self . logger . info (
" user= " + username + " . Proposição (numero= {} ) Retornada com sucesso. " . format ( p . numero_proposicao ) )
messages . success ( request , _ (
messages . success ( request , _ (
' Proposição Retornada com sucesso. ' ) )
' Proposição Retornada com sucesso. ' ) )
@ -828,12 +849,14 @@ class ProposicaoCrud(Crud):
kwargs = { ' pk ' : kwargs [ ' pk ' ] } ) )
kwargs = { ' pk ' : kwargs [ ' pk ' ] } ) )
def dispatch ( self , request , * args , * * kwargs ) :
def dispatch ( self , request , * args , * * kwargs ) :
username = request . user . username . replace ( " ' " , " " )
username = request . user . username . replace ( " ' " , " " )
try :
try :
self . logger . debug ( " user= " + username + " . Tentando obter objeto Proposicao com pk= {} " . format ( kwargs [ ' pk ' ] ) )
self . logger . debug (
" user= " + username + " . Tentando obter objeto Proposicao com pk= {} " . format ( kwargs [ ' pk ' ] ) )
p = Proposicao . objects . get ( id = kwargs [ ' pk ' ] )
p = Proposicao . objects . get ( id = kwargs [ ' pk ' ] )
except Exception as e :
except Exception as e :
self . logger . error ( " user= " + username + " . Erro ao obter proposicao com pk= {} . Retornando 404. " . format ( kwargs [ ' pk ' ] ) + str ( e ) )
self . logger . error (
" user= " + username + " . Erro ao obter proposicao com pk= {} . Retornando 404. " . format ( kwargs [ ' pk ' ] ) + str ( e ) )
raise Http404 ( )
raise Http404 ( )
if not self . has_permission ( ) :
if not self . has_permission ( ) :
@ -869,7 +892,7 @@ class ProposicaoCrud(Crud):
id = kwargs [ ' pk ' ] ) . values_list (
id = kwargs [ ' pk ' ] ) . values_list (
' data_envio ' , ' data_recebimento ' )
' data_envio ' , ' data_recebimento ' )
username = request . user . username . replace ( " ' " , " " )
username = request . user . username . replace ( " ' " , " " )
if proposicao :
if proposicao :
if proposicao [ 0 ] [ 0 ] and proposicao [ 0 ] [ 1 ] :
if proposicao [ 0 ] [ 0 ] and proposicao [ 0 ] [ 1 ] :
@ -900,7 +923,7 @@ class ProposicaoCrud(Crud):
id = kwargs [ ' pk ' ] ) . values_list (
id = kwargs [ ' pk ' ] ) . values_list (
' data_envio ' , ' data_recebimento ' )
' data_envio ' , ' data_recebimento ' )
username = request . user . username . replace ( " ' " , " " )
username = request . user . username . replace ( " ' " , " " )
if proposicao :
if proposicao :
if proposicao [ 0 ] [ 0 ] and proposicao [ 0 ] [ 1 ] :
if proposicao [ 0 ] [ 0 ] and proposicao [ 0 ] [ 1 ] :
@ -924,7 +947,7 @@ class ProposicaoCrud(Crud):
def get_success_url ( self ) :
def get_success_url ( self ) :
tipo_texto = self . request . POST . get ( ' tipo_texto ' , ' ' )
tipo_texto = self . request . POST . get ( ' tipo_texto ' , ' ' )
username = self . request . user . username . replace ( " ' " , " " )
username = self . request . user . username . replace ( " ' " , " " )
if tipo_texto == ' T ' :
if tipo_texto == ' T ' :
messages . info ( self . request ,
messages . info ( self . request ,
@ -954,7 +977,7 @@ class ProposicaoCrud(Crud):
def get_success_url ( self ) :
def get_success_url ( self ) :
tipo_texto = self . request . POST . get ( ' tipo_texto ' , ' ' )
tipo_texto = self . request . POST . get ( ' tipo_texto ' , ' ' )
username = self . request . user . username . replace ( " ' " , " " )
username = self . request . user . username . replace ( " ' " , " " )
if tipo_texto == ' T ' :
if tipo_texto == ' T ' :
messages . info ( self . request ,
messages . info ( self . request ,
@ -1037,7 +1060,7 @@ class ReciboProposicaoView(TemplateView):
def get ( self , request , * args , * * kwargs ) :
def get ( self , request , * args , * * kwargs ) :
proposicao = Proposicao . objects . get ( pk = self . kwargs [ ' pk ' ] )
proposicao = Proposicao . objects . get ( pk = self . kwargs [ ' pk ' ] )
username = request . user . username . replace ( " ' " , " " )
username = request . user . username . replace ( " ' " , " " )
if proposicao . data_envio :
if proposicao . data_envio :
return TemplateView . get ( self , request , * args , * * kwargs )
return TemplateView . get ( self , request , * args , * * kwargs )
@ -1048,7 +1071,8 @@ class ReciboProposicaoView(TemplateView):
messages . error ( request , _ ( ' Não é possível gerar recibo para uma '
messages . error ( request , _ ( ' Não é possível gerar recibo para uma '
' Proposição ainda não enviada. ' ) )
' Proposição ainda não enviada. ' ) )
elif proposicao . data_devolucao :
elif proposicao . data_devolucao :
self . logger . error ( " user= " + username + " . Não é possível gerar recibo para proposicao de pk= {} . " . format ( self . kwargs [ ' pk ' ] ) )
self . logger . error (
" user= " + username + " . Não é possível gerar recibo para proposicao de pk= {} . " . format ( self . kwargs [ ' pk ' ] ) )
messages . error ( request , _ ( ' Não é possível gerar recibo. ' ) )
messages . error ( request , _ ( ' Não é possível gerar recibo. ' ) )
return redirect ( reverse ( ' sapl.materia:proposicao_detail ' ,
return redirect ( reverse ( ' sapl.materia:proposicao_detail ' ,
@ -1067,18 +1091,21 @@ class RelatoriaCrud(MasterDetailCrud):
def get_context_data ( self , * * kwargs ) :
def get_context_data ( self , * * kwargs ) :
context = super ( ) . get_context_data ( * * kwargs )
context = super ( ) . get_context_data ( * * kwargs )
username = self . request . user . username . replace ( " ' " , " " )
username = self . request . user . username . replace ( " ' " , " " )
try :
try :
self . logger . debug ( " user= " + username + " . Tentando obter objeto Comissao de pk= {} . " . format ( context [ ' form ' ] . initial [ ' comissao ' ] ) )
self . logger . debug ( " user= " + username + " . Tentando obter objeto Comissao de pk= {} . " . format (
context [ ' form ' ] . initial [ ' comissao ' ] ) )
comissao = Comissao . objects . get (
comissao = Comissao . objects . get (
pk = context [ ' form ' ] . initial [ ' comissao ' ] )
pk = context [ ' form ' ] . initial [ ' comissao ' ] )
except :
except :
self . logger . error ( " user= " + username + " . Objeto Comissão de pk= {} não encontrado. " . format ( context [ ' form ' ] . initial [ ' comissao ' ] ) )
self . logger . error ( " user= " + username + " . Objeto Comissão de pk= {} não encontrado. " . format (
context [ ' form ' ] . initial [ ' comissao ' ] ) )
pass
pass
else :
else :
self . logger . info ( " user= " + username + " . Objeto Comissao de pk= {} obtido com sucesso. " . format ( context [ ' form ' ] . initial [ ' comissao ' ] ) )
self . logger . info ( " user= " + username + " . Objeto Comissao de pk= {} obtido com sucesso. " . format (
context [ ' form ' ] . initial [ ' comissao ' ] ) )
composicao = comissao . composicao_set . order_by (
composicao = comissao . composicao_set . order_by (
' -periodo__data_inicio ' ) . first ( )
' -periodo__data_inicio ' ) . first ( )
participacao = Participacao . objects . filter (
participacao = Participacao . objects . filter (
@ -1119,17 +1146,20 @@ class RelatoriaCrud(MasterDetailCrud):
def get_context_data ( self , * * kwargs ) :
def get_context_data ( self , * * kwargs ) :
context = super ( ) . get_context_data ( * * kwargs )
context = super ( ) . get_context_data ( * * kwargs )
username = self . request . user . username . replace ( " ' " , " " )
username = self . request . user . username . replace ( " ' " , " " )
try :
try :
self . logger . debug ( " user= " + username + " . Tentando obter objeto Comissao de pk= {} . " . format ( context [ ' form ' ] . initial [ ' comissao ' ] ) )
self . logger . debug ( " user= " + username + " . Tentando obter objeto Comissao de pk= {} . " . format (
context [ ' form ' ] . initial [ ' comissao ' ] ) )
comissao = Comissao . objects . get (
comissao = Comissao . objects . get (
pk = context [ ' form ' ] . initial [ ' comissao ' ] )
pk = context [ ' form ' ] . initial [ ' comissao ' ] )
except ObjectDoesNotExist :
except ObjectDoesNotExist :
self . logger . error ( " user= " + username + " . Objeto Comissão de pk= {} não encontrado. " . format ( context [ ' form ' ] . initial [ ' comissao ' ] ) )
self . logger . error ( " user= " + username + " . Objeto Comissão de pk= {} não encontrado. " . format (
context [ ' form ' ] . initial [ ' comissao ' ] ) )
pass
pass
else :
else :
self . logger . info ( " user= " + username + " . Objeto Comissao de pk= {} obtido com sucesso. " . format ( context [ ' form ' ] . initial [ ' comissao ' ] ) )
self . logger . info ( " user= " + username + " . Objeto Comissao de pk= {} obtido com sucesso. " . format (
context [ ' form ' ] . initial [ ' comissao ' ] ) )
composicao = comissao . composicao_set . order_by (
composicao = comissao . composicao_set . order_by (
' -periodo__data_inicio ' ) . first ( )
' -periodo__data_inicio ' ) . first ( )
participacao = Participacao . objects . filter (
participacao = Participacao . objects . filter (
@ -1180,7 +1210,7 @@ class TramitacaoCrud(MasterDetailCrud):
def get_context_data ( self , * * kwargs ) :
def get_context_data ( self , * * kwargs ) :
context = super ( ) . get_context_data ( * * kwargs )
context = super ( ) . get_context_data ( * * kwargs )
username = self . request . user . username . replace ( " ' " , " " )
username = self . request . user . username . replace ( " ' " , " " )
ultima_tramitacao = Tramitacao . objects . filter (
ultima_tramitacao = Tramitacao . objects . filter (
materia_id = self . kwargs [ ' pk ' ] ) . order_by (
materia_id = self . kwargs [ ' pk ' ] ) . order_by (
@ -1206,7 +1236,7 @@ class TramitacaoCrud(MasterDetailCrud):
def form_valid ( self , form ) :
def form_valid ( self , form ) :
self . object = form . save ( )
self . object = form . save ( )
username = self . request . user . username . replace ( " ' " , " " )
username = self . request . user . username . replace ( " ' " , " " )
if form . instance . status . indicador == ' F ' :
if form . instance . status . indicador == ' F ' :
form . instance . materia . em_tramitacao = False
form . instance . materia . em_tramitacao = False
@ -1240,7 +1270,7 @@ class TramitacaoCrud(MasterDetailCrud):
def form_valid ( self , form ) :
def form_valid ( self , form ) :
self . object = form . save ( )
self . object = form . save ( )
username = self . request . user . username . replace ( " ' " , " " )
username = self . request . user . username . replace ( " ' " , " " )
if form . instance . status . indicador == ' F ' :
if form . instance . status . indicador == ' F ' :
form . instance . materia . em_tramitacao = False
form . instance . materia . em_tramitacao = False
@ -1290,7 +1320,7 @@ class TramitacaoCrud(MasterDetailCrud):
' -timestamp ' ,
' -timestamp ' ,
' -id ' ) . first ( )
' -id ' ) . first ( )
username = request . user . username . replace ( " ' " , " " )
username = request . user . username . replace ( " ' " , " " )
if tramitacao . pk != ultima_tramitacao . pk :
if tramitacao . pk != ultima_tramitacao . pk :
self . logger . error ( " user= " + username + " . Não é possível deletar a tramitação de pk= {} . "
self . logger . error ( " user= " + username + " . Não é possível deletar a tramitação de pk= {} . "
@ -1639,8 +1669,9 @@ class AcompanhamentoConfirmarView(TemplateView):
logger = logging . getLogger ( __name__ )
logger = logging . getLogger ( __name__ )
def get_redirect_url ( self , email ) :
def get_redirect_url ( self , email ) :
username = self . request . user . username . replace ( " ' " , " " )
username = self . request . user . username . replace ( " ' " , " " )
self . logger . debug ( ' user= ' + username + ' . Esta matéria está sendo acompanhada pelo e-mail: %s ' % ( email ) )
self . logger . debug (
' user= ' + username + ' . Esta matéria está sendo acompanhada pelo e-mail: %s ' % ( email ) )
msg = _ ( ' Esta matéria está sendo acompanhada pelo e-mail: %s ' ) % (
msg = _ ( ' Esta matéria está sendo acompanhada pelo e-mail: %s ' ) % (
email )
email )
messages . add_message ( self . request , messages . SUCCESS , msg )
messages . add_message ( self . request , messages . SUCCESS , msg )
@ -1650,7 +1681,7 @@ class AcompanhamentoConfirmarView(TemplateView):
def get ( self , request , * args , * * kwargs ) :
def get ( self , request , * args , * * kwargs ) :
materia_id = kwargs [ ' pk ' ]
materia_id = kwargs [ ' pk ' ]
hash_txt = request . GET . get ( ' hash_txt ' , ' ' )
hash_txt = request . GET . get ( ' hash_txt ' , ' ' )
username = self . request . user . username . replace ( " ' " , " " )
username = self . request . user . username . replace ( " ' " , " " )
try :
try :
self . logger . info ( " user= " + username + " . Tentando obter objeto AcompanhamentoMateria (materia_id= {} , hash= {} ). "
self . logger . info ( " user= " + username + " . Tentando obter objeto AcompanhamentoMateria (materia_id= {} , hash= {} ). "
@ -1679,8 +1710,9 @@ class AcompanhamentoExcluirView(TemplateView):
logger = logging . getLogger ( __name__ )
logger = logging . getLogger ( __name__ )
def get_success_url ( self ) :
def get_success_url ( self ) :
username = self . request . user . username . replace ( " ' " , " " )
username = self . request . user . username . replace ( " ' " , " " )
self . logger . debug ( " user= " + username + " . Você parou de acompanhar esta matéria. " )
self . logger . debug ( " user= " + username +
" . Você parou de acompanhar esta matéria. " )
msg = _ ( ' Você parou de acompanhar esta matéria. ' )
msg = _ ( ' Você parou de acompanhar esta matéria. ' )
messages . add_message ( self . request , messages . INFO , msg )
messages . add_message ( self . request , messages . INFO , msg )
return reverse ( ' sapl.materia:materialegislativa_detail ' ,
return reverse ( ' sapl.materia:materialegislativa_detail ' ,
@ -1689,7 +1721,7 @@ class AcompanhamentoExcluirView(TemplateView):
def get ( self , request , * args , * * kwargs ) :
def get ( self , request , * args , * * kwargs ) :
materia_id = kwargs [ ' pk ' ]
materia_id = kwargs [ ' pk ' ]
hash_txt = request . GET . get ( ' hash_txt ' , ' ' )
hash_txt = request . GET . get ( ' hash_txt ' , ' ' )
username = self . request . user . username . replace ( " ' " , " " )
username = self . request . user . username . replace ( " ' " , " " )
try :
try :
self . logger . info ( " user= " + username + " . Tentando deletar objeto AcompanhamentoMateria (materia_id= {} , hash= {} ). "
self . logger . info ( " user= " + username + " . Tentando deletar objeto AcompanhamentoMateria (materia_id= {} , hash= {} ). "
@ -1790,6 +1822,12 @@ class AcompanhamentoMateriaView(CreateView):
return ' ' . join ( choice ( s ) for i in range ( choice ( [ 6 , 7 ] ) ) )
return ' ' . join ( choice ( s ) for i in range ( choice ( [ 6 , 7 ] ) ) )
def get ( self , request , * args , * * kwargs ) :
def get ( self , request , * args , * * kwargs ) :
if not mail_service_configured ( ) :
self . logger . warning ( _ ( ' Servidor de email não configurado. ' ) )
messages . error ( request , _ ( ' Serviço de Acompanhamento de '
' Matérias não foi configurado ' ) )
return redirect ( ' / ' )
pk = self . kwargs [ ' pk ' ]
pk = self . kwargs [ ' pk ' ]
materia = MateriaLegislativa . objects . get ( id = pk )
materia = MateriaLegislativa . objects . get ( id = pk )
@ -1798,6 +1836,13 @@ class AcompanhamentoMateriaView(CreateView):
' materia ' : materia } )
' materia ' : materia } )
def post ( self , request , * args , * * kwargs ) :
def post ( self , request , * args , * * kwargs ) :
if not settings . EMAIL_HOST :
self . logger . warning ( _ ( ' Servidor de email não configurado. ' ) )
messages . error ( request , _ ( ' Serviço de Acompanhamento de '
' Matérias não foi configurado ' ) )
return redirect ( ' / ' )
form = AcompanhamentoMateriaForm ( request . POST )
form = AcompanhamentoMateriaForm ( request . POST )
pk = self . kwargs [ ' pk ' ]
pk = self . kwargs [ ' pk ' ]
materia = MateriaLegislativa . objects . get ( id = pk )
materia = MateriaLegislativa . objects . get ( id = pk )
@ -1845,7 +1890,8 @@ class AcompanhamentoMateriaView(CreateView):
# Caso esse Acompanhamento já exista
# Caso esse Acompanhamento já exista
# avisa ao usuário que essa matéria já está sendo acompanhada
# avisa ao usuário que essa matéria já está sendo acompanhada
else :
else :
self . logger . debug ( " user= " + usuario . username + " . Este e-mail já está acompanhando essa matéria. " )
self . logger . debug ( " user= " + usuario . username +
" . Este e-mail já está acompanhando essa matéria. " )
msg = _ ( ' Este e-mail já está acompanhando essa matéria. ' )
msg = _ ( ' Este e-mail já está acompanhando essa matéria. ' )
messages . add_message ( request , messages . INFO , msg )
messages . add_message ( request , messages . INFO , msg )
@ -1966,32 +2012,30 @@ class PrimeiraTramitacaoEmLoteView(PermissionRequiredMixin, FilterView):
return context
return context
def post ( self , request , * args , * * kwargs ) :
def post ( self , request , * args , * * kwargs ) :
marcadas = request . POST . getlist ( ' materia_id ' )
marcadas = request . POST . getlist ( ' materia_id ' )
tz = timezone . get_current_timezone ( )
tz = timezone . get_current_timezone ( )
username = request . user . username . replace ( " ' " , " " )
username = request . user . username . replace ( " ' " , " " )
if len ( marcadas ) == 0 :
if len ( marcadas ) == 0 :
msg = _ ( ' Nenhuma máteria foi selecionada. ' )
msg = _ ( ' Nenhuma máteria foi selecionada. ' )
messages . add_message ( request , messages . ERROR , msg )
messages . add_message ( request , messages . ERROR , msg )
return self . get ( request , self . kwargs )
return self . get ( request , self . kwargs )
obrigatorios = { ' data_tramitacao ' : ' Data da Tramitação ' ,
obrigatorios = { ' data_tramitacao ' : ' Data da Tramitação ' ,
' unidade_tramitacao_local ' : ' Unidade Local ' ,
' unidade_tramitacao_local ' : ' Unidade Local ' ,
' unidade_tramitacao_destino ' : ' Unidade Destino ' ,
' unidade_tramitacao_destino ' : ' Unidade Destino ' ,
' status ' : ' Status ' ,
' status ' : ' Status ' ,
' urgente ' : ' Urgente ' ,
' urgente ' : ' Urgente ' ,
' texto ' : ' Texto da Ação ' }
' texto ' : ' Texto da Ação ' }
for field , nome in obrigatorios . items ( ) :
for field , nome in obrigatorios . items ( ) :
if not request . POST [ field ] :
if not request . POST [ field ] :
msg = _ ( ' Campo {} deve ser preenchido. ' . format ( nome ) )
msg = _ ( ' Campo {} deve ser preenchido. ' . format ( nome ) )
messages . add_message ( request , messages . ERROR , msg )
messages . add_message ( request , messages . ERROR , msg )
return self . get ( request , self . kwargs )
return self . get ( request , self . kwargs )
if not request . POST [ ' data_encaminhamento ' ] :
if not request . POST [ ' data_encaminhamento ' ] :
data_encaminhamento = None
data_encaminhamento = None
else :
else :
@ -2026,7 +2070,8 @@ class PrimeiraTramitacaoEmLoteView(PermissionRequiredMixin, FilterView):
)
)
t . save ( )
t . save ( )
try :
try :
self . logger . debug ( " user= " + username + " . Tentando enviar tramitação. " )
self . logger . debug ( " user= " + username +
" . Tentando enviar tramitação. " )
tramitacao_signal . send ( sender = Tramitacao ,
tramitacao_signal . send ( sender = Tramitacao ,
post = t ,
post = t ,
request = self . request )
request = self . request )
@ -2188,7 +2233,7 @@ class FichaSelecionaView(PermissionRequiredMixin, FormView):
context [ ' form ' ] . fields [ ' materia ' ] . choices = [
context [ ' form ' ] . fields [ ' materia ' ] . choices = [
( m . id , str ( m ) ) for m in materia_list ]
( m . id , str ( m ) ) for m in materia_list ]
username = self . request . user . username . replace ( " ' " , " " )
username = self . request . user . username . replace ( " ' " , " " )
if context [ ' quantidade ' ] > 100 :
if context [ ' quantidade ' ] > 100 :
self . logger . info ( ' user= ' + username + ' . Sua pesquisa (tipo= {} , data_inicial= {} , data_final= {} ) retornou mais do que '
self . logger . info ( ' user= ' + username + ' . Sua pesquisa (tipo= {} , data_inicial= {} , data_final= {} ) retornou mais do que '
@ -2208,14 +2253,16 @@ class FichaSelecionaView(PermissionRequiredMixin, FormView):
def form_valid ( self , form ) :
def form_valid ( self , form ) :
context = { }
context = { }
username = self . request . user . username . replace ( " ' " , " " )
username = self . request . user . username . replace ( " ' " , " " )
try :
try :
self . logger . debug ( " user= " + username + " . Tentando obter objeto MateriaLegislativa com id= {} " . format ( form . data [ ' materia ' ] ) )
self . logger . debug (
" user= " + username + " . Tentando obter objeto MateriaLegislativa com id= {} " . format ( form . data [ ' materia ' ] ) )
materia = MateriaLegislativa . objects . get (
materia = MateriaLegislativa . objects . get (
id = form . data [ ' materia ' ] )
id = form . data [ ' materia ' ] )
except ObjectDoesNotExist :
except ObjectDoesNotExist :
self . logger . error ( " user= " + username + " . Esta MáteriaLegislativa não existe (id= {} ). " . format ( form . data [ ' materia ' ] ) )
self . logger . error (
" user= " + username + " . Esta MáteriaLegislativa não existe (id= {} ). " . format ( form . data [ ' materia ' ] ) )
mensagem = _ ( ' Esta Máteria não existe! ' )
mensagem = _ ( ' Esta Máteria não existe! ' )
self . messages . add_message ( self . request , messages . INFO , mensagem )
self . messages . add_message ( self . request , messages . INFO , mensagem )