@ -3,6 +3,8 @@ from datetime import datetime 
			
		
	
		
			
				
					from  random  import  choice  
			
		
	
		
			
				
					from  string  import  ascii_letters ,  digits  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					from  crispy_forms . helper  import  FormHelper  
			
		
	
		
			
				
					from  crispy_forms . layout  import  HTML ,  Button  
			
		
	
		
			
				
					from  django . contrib  import  messages  
			
		
	
		
			
				
					from  django . core . exceptions  import  ObjectDoesNotExist  
			
		
	
		
			
				
					from  django . core . mail  import  send_mail  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -11,14 +13,16 @@ from django.http.response import HttpResponseRedirect 
			
		
	
		
			
				
					from  django . shortcuts  import  redirect  
			
		
	
		
			
				
					from  django . template  import  Context ,  loader  
			
		
	
		
			
				
					from  django . utils . translation  import  ugettext_lazy  as  _  
			
		
	
		
			
				
					from  django . views . generic  import  CreateView ,  FormView ,  ListView ,  TemplateView  
			
		
	
		
			
				
					from  django . views . generic  import  CreateView ,  ListView ,  TemplateView ,  UpdateView  
			
		
	
		
			
				
					from  django_filters . views  import  FilterView  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					import  crispy_layout_mixin  
			
		
	
		
			
				
					import  crud . base  
			
		
	
		
			
				
					import  crud . masterdetail  
			
		
	
		
			
				
					import  sapl  
			
		
	
		
			
				
					from  base . models  import  CasaLegislativa  
			
		
	
		
			
				
					from  comissoes . models  import  Comissao ,  Composicao  
			
		
	
		
			
				
					from  compilacao . views  import  IntegracaoTaView  
			
		
	
		
			
				
					from  crispy_layout_mixin  import  form_actions  
			
		
	
		
			
				
					from  crud . base  import  Crud ,  make_pagination  
			
		
	
		
			
				
					from  crud . masterdetail  import  MasterDetailCrud  
			
		
	
		
			
				
					from  norma . models  import  LegislacaoCitada  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -47,14 +51,43 @@ TipoFimRelatoriaCrud = Crud.build(TipoFimRelatoria, 'fim_relatoria') 
			
		
	
		
			
				
					AnexadaCrud  =  Crud . build ( Anexada ,  ' ' )  
			
		
	
		
			
				
					TipoAutorCrud  =  Crud . build ( TipoAutor ,  ' tipo_autor ' )  
			
		
	
		
			
				
					AutorCrud  =  Crud . build ( Autor ,  ' autor ' )  
			
		
	
		
			
				
					DocumentoAcessorioCrud  =  Crud . build ( DocumentoAcessorio ,  ' ' )  
			
		
	
		
			
				
					OrgaoCrud  =  Crud . build ( Orgao ,  ' orgao ' )  
			
		
	
		
			
				
					RelatoriaCrud  =  Crud . build ( Relatoria ,  ' ' )  
			
		
	
		
			
				
					TipoProposicaoCrud  =  Crud . build ( TipoProposicao ,  ' tipo_proposicao ' )  
			
		
	
		
			
				
					ProposicaoCrud  =  Crud . build ( Proposicao ,  ' ' )  
			
		
	
		
			
				
					StatusTramitacaoCrud  =  Crud . build ( StatusTramitacao ,  ' status_tramitacao ' )  
			
		
	
		
			
				
					UnidadeTramitacaoCrud  =  Crud . build ( UnidadeTramitacao ,  ' unidade_tramitacao ' )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					RelatoriaCrud  =  MasterDetailCrud . build ( Relatoria ,  ' materia ' ,  ' ' )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					class  RelatoriaCrud ( MasterDetailCrud ) :  
			
		
	
		
			
				
					    model  =  Relatoria  
			
		
	
		
			
				
					    parent_field  =  ' materia '  
			
		
	
		
			
				
					    help_path  =  ' '  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    class  CreateView ( MasterDetailCrud . CreateView ) :  
			
		
	
		
			
				
					        form_class  =  RelatoriaForm  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        def  get_initial ( self ) :  
			
		
	
		
			
				
					            materia  =  MateriaLegislativa . objects . get ( id = self . kwargs [ ' pk ' ] )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					            loc_atual  =  Tramitacao . objects . filter (  
			
		
	
		
			
				
					                materia = materia ) . last ( )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					            if  loc_atual  is  None :  
			
		
	
		
			
				
					                localizacao  =  0  
			
		
	
		
			
				
					            else :  
			
		
	
		
			
				
					                comissao  =  loc_atual . unidade_tramitacao_destino . comissao  
			
		
	
		
			
				
					                if  comissao :  
			
		
	
		
			
				
					                    localizacao  =  comissao . pk  
			
		
	
		
			
				
					                else :  
			
		
	
		
			
				
					                    localizacao  =  0  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					            return  { ' comissao ' :  localizacao }  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    class  UpdateView ( MasterDetailCrud . UpdateView ) :  
			
		
	
		
			
				
					        form_class  =  RelatoriaForm  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					class  TramitacaoCrud ( MasterDetailCrud ) :  
			
		
	
		
			
				
					    model  =  Tramitacao  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -95,6 +128,89 @@ class TramitacaoCrud(MasterDetailCrud): 
			
		
	
		
			
				
					                return  HttpResponseRedirect ( url )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					class  DocumentoAcessorioCrud ( MasterDetailCrud ) :  
			
		
	
		
			
				
					    model  =  DocumentoAcessorio  
			
		
	
		
			
				
					    parent_field  =  ' materia '  
			
		
	
		
			
				
					    help_path  =  ' '  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    class  BaseMixin ( MasterDetailCrud . BaseMixin ) :  
			
		
	
		
			
				
					        list_field_names  =  [ ' nome ' ,  ' tipo ' ,  ' data ' ,  ' autor ' ,  ' arquivo ' ]  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    class  CreateView ( MasterDetailCrud . CreateView ) :  
			
		
	
		
			
				
					        form_class  =  DocumentoAcessorioForm  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        def  __init__ ( self ,  * args ,  * * kwargs ) :  
			
		
	
		
			
				
					            autor_row  =  crispy_layout_mixin . to_row (  
			
		
	
		
			
				
					                [ ( ' autor ' ,  0 ) ,  
			
		
	
		
			
				
					                 ( Button ( ' pesquisar ' ,  
			
		
	
		
			
				
					                         ' Pesquisar Autor ' ,  
			
		
	
		
			
				
					                         css_class = ' btn btn-primary btn-sm ' ) ,  2 ) ,  
			
		
	
		
			
				
					                 ( Button ( ' limpar ' ,  
			
		
	
		
			
				
					                         ' Limpar Autor ' ,  
			
		
	
		
			
				
					                         css_class = ' btn btn-primary btn-sm ' ) ,  10 ) ] )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					            self . helper  =  FormHelper ( )  
			
		
	
		
			
				
					            self . helper . layout  =  crispy_layout_mixin . SaplFormLayout (  
			
		
	
		
			
				
					                * self . get_layout ( ) )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					            # Adiciona o novo campo 'autor' e mecanismo de busca  
			
		
	
		
			
				
					            self . helper . layout [ 0 ] [ 0 ] . append ( HTML ( sapl . utils . autor_label ) )  
			
		
	
		
			
				
					            self . helper . layout [ 0 ] [ 0 ] . append ( HTML ( sapl . utils . autor_modal ) )  
			
		
	
		
			
				
					            self . helper . layout [ 0 ] [ 1 ]  =  autor_row  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					            # Remove botões que estão fora do form  
			
		
	
		
			
				
					            self . helper . layout [ 1 ] . pop ( )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					            # Adiciona novos botões dentro do form  
			
		
	
		
			
				
					            self . helper . layout [ 0 ] [ 3 ] [ 0 ] . insert ( 1 ,  form_actions ( more = [  
			
		
	
		
			
				
					                HTML ( ' <a href= " {{  view.cancel_url }} " '  
			
		
	
		
			
				
					                     '  class= " btn btn-inverse " >Cancelar</a> ' ) ] ) )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					            super ( CreateView ,  self ) . __init__ ( * args ,  * * kwargs )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        def  get_context_data ( self ,  * * kwargs ) :  
			
		
	
		
			
				
					            context  =  super ( CreateView ,  self ) . get_context_data ( * * kwargs )  
			
		
	
		
			
				
					            context [ ' helper ' ]  =  self . helper  
			
		
	
		
			
				
					            return  context  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    class  UpdateView ( MasterDetailCrud . UpdateView ) :  
			
		
	
		
			
				
					        form_class  =  DocumentoAcessorioForm  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        def  __init__ ( self ,  * args ,  * * kwargs ) :  
			
		
	
		
			
				
					            autor_row  =  crispy_layout_mixin . to_row (  
			
		
	
		
			
				
					                [ ( ' autor ' ,  0 ) ,  
			
		
	
		
			
				
					                 ( Button ( ' pesquisar ' ,  
			
		
	
		
			
				
					                         ' Pesquisar Autor ' ,  
			
		
	
		
			
				
					                         css_class = ' btn btn-primary btn-sm ' ) ,  2 ) ,  
			
		
	
		
			
				
					                 ( Button ( ' limpar ' ,  
			
		
	
		
			
				
					                         ' Limpar Autor ' ,  
			
		
	
		
			
				
					                         css_class = ' btn btn-primary btn-sm ' ) ,  10 ) ] )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					            self . helper  =  FormHelper ( )  
			
		
	
		
			
				
					            self . helper . layout  =  crispy_layout_mixin . SaplFormLayout (  
			
		
	
		
			
				
					                * self . get_layout ( ) )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					            # Adiciona o novo campo 'autor' e mecanismo de busca  
			
		
	
		
			
				
					            self . helper . layout [ 0 ] [ 0 ] . append ( HTML ( sapl . utils . autor_label ) )  
			
		
	
		
			
				
					            self . helper . layout [ 0 ] [ 0 ] . append ( HTML ( sapl . utils . autor_modal ) )  
			
		
	
		
			
				
					            self . helper . layout [ 0 ] [ 1 ]  =  autor_row  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					            # Remove botões que estão fora do form  
			
		
	
		
			
				
					            self . helper . layout [ 1 ] . pop ( )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					            # Adiciona novos botões dentro do form  
			
		
	
		
			
				
					            self . helper . layout [ 0 ] [ 3 ] [ 0 ] . insert ( 1 ,  form_actions ( more = [  
			
		
	
		
			
				
					                HTML ( ' <a href= " {{  view.cancel_url }} " '  
			
		
	
		
			
				
					                     '  class= " btn btn-inverse " >Cancelar</a> ' ) ] ) )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					            super ( UpdateView ,  self ) . __init__ ( * args ,  * * kwargs )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        def  get_context_data ( self ,  * * kwargs ) :  
			
		
	
		
			
				
					            context  =  super ( UpdateView ,  self ) . get_context_data ( * * kwargs )  
			
		
	
		
			
				
					            context [ ' helper ' ]  =  self . helper  
			
		
	
		
			
				
					            return  context  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					class  AutoriaCrud ( MasterDetailCrud ) :  
			
		
	
		
			
				
					    model  =  Autoria  
			
		
	
		
			
				
					    parent_field  =  ' materia '  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -142,33 +258,6 @@ class LegislacaoCitadaCrud(MasterDetailCrud): 
			
		
	
		
			
				
					            self . initial [ ' tipo ' ]  =  self . object . norma . tipo . id  
			
		
	
		
			
				
					            self . initial [ ' numero ' ]  =  self . object . norma . numero  
			
		
	
		
			
				
					            self . initial [ ' ano ' ]  =  self . object . norma . ano  
			
		
	
		
			
				
					            return  self . initial  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    class  DetailView ( MasterDetailCrud . DetailView ) :  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        @property  
			
		
	
		
			
				
					        def  layout_key ( self ) :  
			
		
	
		
			
				
					            return  ' LegislacaoCitadaDetail '  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					class  LegislacaoCitadaCrud ( MasterDetailCrud ) :  
			
		
	
		
			
				
					    model  =  LegislacaoCitada  
			
		
	
		
			
				
					    parent_field  =  ' materia '  
			
		
	
		
			
				
					    help_path  =  ' '  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    class  BaseMixin ( MasterDetailCrud . BaseMixin ) :  
			
		
	
		
			
				
					        list_field_names  =  [ ' norma ' ,  ' disposicoes ' ]  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    class  CreateView ( MasterDetailCrud . CreateView ) :  
			
		
	
		
			
				
					        form_class  =  LegislacaoCitadaForm  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    class  UpdateView ( MasterDetailCrud . UpdateView ) :  
			
		
	
		
			
				
					        form_class  =  LegislacaoCitadaForm  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        def  get_initial ( self ) :  
			
		
	
		
			
				
					            self . initial [ ' tipo_norma ' ]  =  self . object . norma . tipo . id  
			
		
	
		
			
				
					            self . initial [ ' numero_norma ' ]  =  self . object . norma . numero  
			
		
	
		
			
				
					            self . initial [ ' ano_norma ' ]  =  self . object . norma . ano  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					            return  self . initial  
			
		
	
		
			
				
					
 
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -298,219 +387,6 @@ class AcompanhamentoExcluirView(TemplateView): 
			
		
	
		
			
				
					        return  HttpResponseRedirect ( self . get_redirect_url ( ) )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					class  DocumentoAcessorioEditView ( CreateView ) :  
			
		
	
		
			
				
					    template_name  =  " materia/documento_acessorio_edit.html "  
			
		
	
		
			
				
					    form_class  =  DocumentoAcessorioForm  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    def  get ( self ,  request ,  * args ,  * * kwargs ) :  
			
		
	
		
			
				
					        materia  =  MateriaLegislativa . objects . get ( id = kwargs [ ' pk ' ] )  
			
		
	
		
			
				
					        documento  =  DocumentoAcessorio . objects . get ( id = kwargs [ ' id ' ] )  
			
		
	
		
			
				
					        form  =  DocumentoAcessorioForm ( instance = documento ,  excluir = True )  
			
		
	
		
			
				
					        return  self . render_to_response ( { ' object ' :  materia ,  ' form ' :  form } )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    def  post ( self ,  request ,  * args ,  * * kwargs ) :  
			
		
	
		
			
				
					        form  =  self . get_form ( )  
			
		
	
		
			
				
					        materia  =  MateriaLegislativa . objects . get ( id = kwargs [ ' pk ' ] )  
			
		
	
		
			
				
					        documento  =  DocumentoAcessorio . objects . get ( id = kwargs [ ' id ' ] )  
			
		
	
		
			
				
					        if  form . is_valid ( ) :  
			
		
	
		
			
				
					            if  ' Excluir '  in  request . POST :  
			
		
	
		
			
				
					                documento . delete ( )  
			
		
	
		
			
				
					            elif  ' salvar '  in  request . POST :  
			
		
	
		
			
				
					                documento . materia  =  materia  
			
		
	
		
			
				
					                documento . tipo  =  form . cleaned_data [ ' tipo ' ]  
			
		
	
		
			
				
					                documento . data  =  form . cleaned_data [ ' data ' ]  
			
		
	
		
			
				
					                documento . nome  =  form . cleaned_data [ ' nome ' ]  
			
		
	
		
			
				
					                documento . autor  =  form . cleaned_data [ ' autor ' ]  
			
		
	
		
			
				
					                documento . ementa  =  form . cleaned_data [ ' ementa ' ]  
			
		
	
		
			
				
					                documento . save ( )  
			
		
	
		
			
				
					            return  redirect ( self . get_success_url ( ) )  
			
		
	
		
			
				
					        else :  
			
		
	
		
			
				
					            return  self . render_to_response ( { ' form ' :  form ,  
			
		
	
		
			
				
					                                            ' object ' :  materia ,  
			
		
	
		
			
				
					                                            ' doc ' :  documento } )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    def  get_success_url ( self ) :  
			
		
	
		
			
				
					        pk  =  self . kwargs [ ' pk ' ]  
			
		
	
		
			
				
					        return  reverse ( ' materia:documento_acessorio ' ,  kwargs = { ' pk ' :  pk } )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					class  RelatoriaEditView ( FormView ) :  
			
		
	
		
			
				
					    template_name  =  " materia/relatoria_edit.html "  
			
		
	
		
			
				
					    form_class  =  RelatoriaForm  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    def  get_success_url ( self ) :  
			
		
	
		
			
				
					        pk  =  self . kwargs [ ' pk ' ]  
			
		
	
		
			
				
					        return  reverse ( ' materia:relatoria ' ,  kwargs = { ' pk ' :  pk } )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    def  get ( self ,  request ,  * args ,  * * kwargs ) :  
			
		
	
		
			
				
					        form  =  RelatoriaForm ( )  
			
		
	
		
			
				
					        materia  =  MateriaLegislativa . objects . get ( id = kwargs [ ' pk ' ] )  
			
		
	
		
			
				
					        relatoria  =  Relatoria . objects . get (  
			
		
	
		
			
				
					            id = kwargs [ ' id ' ] )  
			
		
	
		
			
				
					        composicao  =  Composicao . objects . filter (  
			
		
	
		
			
				
					            comissao = relatoria . comissao ) . last ( )  
			
		
	
		
			
				
					        parlamentares  =  composicao . participacao_set . all ( )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        return  self . render_to_response (  
			
		
	
		
			
				
					            { ' object ' :  materia ,  
			
		
	
		
			
				
					             ' form ' :  form ,  
			
		
	
		
			
				
					             ' relatoria ' :  relatoria ,  
			
		
	
		
			
				
					             ' tipo_fim_relatorias ' :  TipoFimRelatoria . objects . all ( ) ,  
			
		
	
		
			
				
					             ' parlamentares ' :  parlamentares } )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    def  post ( self ,  request ,  * args ,  * * kwargs ) :  
			
		
	
		
			
				
					        form  =  RelatoriaForm ( request . POST )  
			
		
	
		
			
				
					        materia  =  MateriaLegislativa . objects . get ( id = kwargs [ ' pk ' ] )  
			
		
	
		
			
				
					        relatoria  =  Relatoria . objects . get ( id = kwargs [ ' id ' ] )  
			
		
	
		
			
				
					        composicao  =  Composicao . objects . filter (  
			
		
	
		
			
				
					            comissao = relatoria . comissao ) . last ( )  
			
		
	
		
			
				
					        parlamentares  =  composicao . participacao_set . all ( )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        if  form . is_valid ( ) :  
			
		
	
		
			
				
					            if  ' excluir '  in  request . POST :  
			
		
	
		
			
				
					                relatoria . delete ( )  
			
		
	
		
			
				
					                return  self . form_valid ( form )  
			
		
	
		
			
				
					            elif  ' salvar '  in  request . POST :  
			
		
	
		
			
				
					                relatoria . materia  =  materia  
			
		
	
		
			
				
					                relatoria . comissao  =  relatoria . comissao  
			
		
	
		
			
				
					                relatoria . data_designacao_relator  =  form . cleaned_data [  
			
		
	
		
			
				
					                    ' data_designacao_relator ' ]  
			
		
	
		
			
				
					                relatoria . data_destituicao_relator  =  form . cleaned_data [  
			
		
	
		
			
				
					                    ' data_destituicao_relator ' ]  
			
		
	
		
			
				
					                relatoria . parlamentar  =  form . cleaned_data [ ' parlamentar ' ]  
			
		
	
		
			
				
					                relatoria . tipo_fim_relatoria  =  form . cleaned_data [  
			
		
	
		
			
				
					                    ' tipo_fim_relatoria ' ]  
			
		
	
		
			
				
					                relatoria . save ( )  
			
		
	
		
			
				
					                return  self . form_valid ( form )  
			
		
	
		
			
				
					        else :  
			
		
	
		
			
				
					            return  self . render_to_response (  
			
		
	
		
			
				
					                { ' object ' :  materia ,  
			
		
	
		
			
				
					                 ' form ' :  form ,  
			
		
	
		
			
				
					                 ' relatoria ' :  relatoria ,  
			
		
	
		
			
				
					                 ' tipo_fim_relatorias ' :  TipoFimRelatoria . objects . all ( ) ,  
			
		
	
		
			
				
					                 ' parlamentares ' :  parlamentares } )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					class  RelatoriaView ( FormView ) :  
			
		
	
		
			
				
					    template_name  =  " materia/relatoria.html "  
			
		
	
		
			
				
					    form_class  =  RelatoriaForm  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    def  get_success_url ( self ) :  
			
		
	
		
			
				
					        pk  =  self . kwargs [ ' pk ' ]  
			
		
	
		
			
				
					        return  reverse ( ' materia:relatoria ' ,  kwargs = { ' pk ' :  pk } )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    def  post ( self ,  request ,  * args ,  * * kwargs ) :  
			
		
	
		
			
				
					        form  =  RelatoriaForm ( request . POST )  
			
		
	
		
			
				
					        materia  =  MateriaLegislativa . objects . get ( id = kwargs [ ' pk ' ] )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        if  not  materia . tramitacao_set . all ( ) :  
			
		
	
		
			
				
					            msg  =  _ (  
			
		
	
		
			
				
					                ' Adicione alguma Tramitação antes de adicionar uma Comissão! ' )  
			
		
	
		
			
				
					            messages . add_message ( request ,  messages . INFO ,  msg )  
			
		
	
		
			
				
					            return  self . render_to_response (  
			
		
	
		
			
				
					                { ' object ' :  materia ,  
			
		
	
		
			
				
					                 ' form ' :  form ,  
			
		
	
		
			
				
					                 ' tipo_fim_relatoria ' :  TipoFimRelatoria . objects . all ( )  
			
		
	
		
			
				
					                 } )  
			
		
	
		
			
				
					        else :  
			
		
	
		
			
				
					            relatorias  =  Relatoria . objects . filter (  
			
		
	
		
			
				
					                materia_id = kwargs [ ' pk ' ] ) . order_by (  
			
		
	
		
			
				
					                    ' -data_designacao_relator ' )  
			
		
	
		
			
				
					            localizacao  =  Tramitacao . objects . filter (  
			
		
	
		
			
				
					                materia = materia ) . last ( )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					            comissao  =  Comissao . objects . get (  
			
		
	
		
			
				
					                id = localizacao . unidade_tramitacao_destino . comissao . id )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					            if  form . is_valid ( ) :  
			
		
	
		
			
				
					                relatoria  =  form . save ( commit = False )  
			
		
	
		
			
				
					                relatoria . materia  =  materia  
			
		
	
		
			
				
					                relatoria . comissao  =  comissao  
			
		
	
		
			
				
					                relatoria . save ( )  
			
		
	
		
			
				
					                return  self . form_valid ( form )  
			
		
	
		
			
				
					            else :  
			
		
	
		
			
				
					                try :  
			
		
	
		
			
				
					                    composicao  =  Composicao . objects . get ( comissao = comissao )  
			
		
	
		
			
				
					                except  ObjectDoesNotExist :  
			
		
	
		
			
				
					                    msg  =  _ ( ' Não há composição nesta Comissão! ' )  
			
		
	
		
			
				
					                    messages . add_message ( request ,  messages . INFO ,  msg )  
			
		
	
		
			
				
					                    return  self . render_to_response (  
			
		
	
		
			
				
					                        { ' object ' :  materia ,  
			
		
	
		
			
				
					                         ' form ' :  form ,  
			
		
	
		
			
				
					                         ' relatorias ' :  relatorias ,  
			
		
	
		
			
				
					                         ' comissao ' :  comissao } )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					                parlamentares  =  composicao . participacao_set . all ( )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					                return  self . render_to_response (  
			
		
	
		
			
				
					                    { ' object ' :  materia ,  
			
		
	
		
			
				
					                     ' form ' :  form ,  
			
		
	
		
			
				
					                     ' relatorias ' :  relatorias ,  
			
		
	
		
			
				
					                     ' comissao ' :  comissao ,  
			
		
	
		
			
				
					                     ' tipo_fim_relatoria ' :  TipoFimRelatoria . objects . all ( ) ,  
			
		
	
		
			
				
					                     ' parlamentares ' :  parlamentares } )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    def  get ( self ,  request ,  * args ,  * * kwargs ) :  
			
		
	
		
			
				
					        materia  =  MateriaLegislativa . objects . get ( id = kwargs [ ' pk ' ] )  
			
		
	
		
			
				
					        relatorias  =  Relatoria . objects . filter (  
			
		
	
		
			
				
					            materia_id = kwargs [ ' pk ' ] ) . order_by ( ' -data_designacao_relator ' )  
			
		
	
		
			
				
					        form  =  RelatoriaForm ( )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        localizacao  =  Tramitacao . objects . filter (  
			
		
	
		
			
				
					            materia = materia ) . last ( )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        if  not  materia . tramitacao_set . all ( ) :  
			
		
	
		
			
				
					            msg  =  _ (  
			
		
	
		
			
				
					                ' Adicione alguma Tramitação antes de adicionar uma Comissão! ' )  
			
		
	
		
			
				
					            messages . add_message ( request ,  messages . INFO ,  msg )  
			
		
	
		
			
				
					            return  self . render_to_response (  
			
		
	
		
			
				
					                { ' object ' :  materia ,  
			
		
	
		
			
				
					                 ' form ' :  form ,  
			
		
	
		
			
				
					                 ' relatorias ' :  relatorias ,  
			
		
	
		
			
				
					                 ' tipo_fim_relatoria ' :  TipoFimRelatoria . objects . all ( )  
			
		
	
		
			
				
					                 } )  
			
		
	
		
			
				
					        elif  not  localizacao . unidade_tramitacao_destino . comissao :  
			
		
	
		
			
				
					            msg  =  _ ( ' O local atual deve  ser uma Comissão! ' )  
			
		
	
		
			
				
					            messages . add_message ( request ,  messages . INFO ,  msg )  
			
		
	
		
			
				
					            return  self . render_to_response (  
			
		
	
		
			
				
					                { ' object ' :  materia ,  
			
		
	
		
			
				
					                 ' form ' :  form ,  
			
		
	
		
			
				
					                 ' relatorias ' :  relatorias } )  
			
		
	
		
			
				
					        else :  
			
		
	
		
			
				
					            try :  
			
		
	
		
			
				
					                comissao  =  Comissao . objects . get (  
			
		
	
		
			
				
					                    id = localizacao . unidade_tramitacao_destino . comissao . id )  
			
		
	
		
			
				
					                composicao  =  Composicao . objects . filter (  
			
		
	
		
			
				
					                    comissao = comissao ) . last ( )  
			
		
	
		
			
				
					                if  not  composicao :  
			
		
	
		
			
				
					                    msg  =  _ ( ' Não há composição nesta Comissão! ' )  
			
		
	
		
			
				
					                    messages . add_message ( request ,  messages . INFO ,  msg )  
			
		
	
		
			
				
					                    return  self . render_to_response (  
			
		
	
		
			
				
					                        { ' object ' :  materia ,  
			
		
	
		
			
				
					                         ' form ' :  form ,  
			
		
	
		
			
				
					                         ' relatorias ' :  relatorias ,  
			
		
	
		
			
				
					                         ' comissao ' :  comissao } )  
			
		
	
		
			
				
					                parlamentares  =  composicao . participacao_set . all ( )  
			
		
	
		
			
				
					            except  ObjectDoesNotExist :  
			
		
	
		
			
				
					                msg  =  _ ( ' O local atual deve  ser uma Comissão! ' )  
			
		
	
		
			
				
					                messages . add_message ( request ,  messages . INFO ,  msg )  
			
		
	
		
			
				
					                return  self . render_to_response (  
			
		
	
		
			
				
					                    { ' object ' :  materia ,  
			
		
	
		
			
				
					                     ' form ' :  form ,  
			
		
	
		
			
				
					                     ' relatorias ' :  relatorias } )  
			
		
	
		
			
				
					            else :  
			
		
	
		
			
				
					                composicao  =  Composicao . objects . filter (  
			
		
	
		
			
				
					                    comissao = comissao ) . last ( )  
			
		
	
		
			
				
					                parlamentares  =  composicao . participacao_set . all ( )  
			
		
	
		
			
				
					                return  self . render_to_response (  
			
		
	
		
			
				
					                    { ' object ' :  materia ,  
			
		
	
		
			
				
					                     ' form ' :  form ,  
			
		
	
		
			
				
					                     ' relatorias ' :  relatorias ,  
			
		
	
		
			
				
					                     ' comissao ' :  comissao ,  
			
		
	
		
			
				
					                     ' tipo_fim_relatoria ' :  TipoFimRelatoria . objects . all ( ) ,  
			
		
	
		
			
				
					                     ' parlamentares ' :  parlamentares } )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					def  load_email_templates ( templates ,  context = { } ) :  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    emails  =  [ ]