From 9c188cca6d1aea00f41017b07dabe83f54f1bd5d Mon Sep 17 00:00:00 2001 From: Edward Date: Thu, 23 Mar 2017 14:58:44 -0300 Subject: [PATCH] =?UTF-8?q?Adiciona=20a=20diretiva=20on=5Fdelete=20para=20?= =?UTF-8?q?proteger=20dele=C3=A7=C3=B5es=20em=20cascata=20em=20comissoes,?= =?UTF-8?q?=20materia,=20norma,=20parlamentares,=20sessao=20e=20protocoloa?= =?UTF-8?q?dm.=20(#974)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/comissoes/models.py | 20 ++++++--- sapl/materia/models.py | 87 ++++++++++++++++++++++++------------ sapl/norma/models.py | 17 ++++--- sapl/parlamentares/models.py | 48 +++++++++++++------- sapl/protocoloadm/models.py | 30 ++++++++++--- sapl/sessao/models.py | 83 +++++++++++++++++++++++----------- 6 files changed, 195 insertions(+), 90 deletions(-) diff --git a/sapl/comissoes/models.py b/sapl/comissoes/models.py index 4483dd07a..a21a20508 100644 --- a/sapl/comissoes/models.py +++ b/sapl/comissoes/models.py @@ -32,7 +32,9 @@ class TipoComissao(models.Model): @reversion.register() class Comissao(models.Model): - tipo = models.ForeignKey(TipoComissao, verbose_name=_('Tipo')) + tipo = models.ForeignKey(TipoComissao, + on_delete=models.PROTECT, + verbose_name=_('Tipo')) nome = models.CharField(max_length=60, verbose_name=_('Nome')) sigla = models.CharField(max_length=10, verbose_name=_('Sigla')) data_criacao = models.DateField(verbose_name=_('Data de Criação')) @@ -132,8 +134,12 @@ class CargoComissao(models.Model): @reversion.register() class Composicao(models.Model): # IGNORE - comissao = models.ForeignKey(Comissao, verbose_name=_('Comissão')) - periodo = models.ForeignKey(Periodo, verbose_name=_('Período')) + comissao = models.ForeignKey(Comissao, + on_delete=models.PROTECT, + verbose_name=_('Comissão')) + periodo = models.ForeignKey(Periodo, + on_delete=models.PROTECT, + verbose_name=_('Período')) class Meta: verbose_name = _('Composição de Comissão') @@ -145,9 +151,11 @@ class Composicao(models.Model): # IGNORE @reversion.register() class Participacao(models.Model): # ComposicaoComissao - composicao = models.ForeignKey(Composicao, related_name='participacao_set') - parlamentar = models.ForeignKey(Parlamentar) - cargo = models.ForeignKey(CargoComissao) + composicao = models.ForeignKey(Composicao, + related_name='participacao_set', + on_delete=models.PROTECT) + parlamentar = models.ForeignKey(Parlamentar, on_delete=models.PROTECT) + cargo = models.ForeignKey(CargoComissao, on_delete=models.PROTECT) titular = models.BooleanField( verbose_name=_('Titular'), default=False, diff --git a/sapl/materia/models.py b/sapl/materia/models.py index 488a4e555..bbffb6d45 100644 --- a/sapl/materia/models.py +++ b/sapl/materia/models.py @@ -38,6 +38,7 @@ class TipoProposicao(models.Model): # FIXME - para a rotina de migração - estes campos mudaram # retire o comentário quando resolver content_type = models.ForeignKey(ContentType, default=None, + on_delete=models.PROTECT, verbose_name=_('Definição de Tipo')) object_id = models.PositiveIntegerField( blank=True, null=True, default=None) @@ -123,7 +124,9 @@ TIPO_APRESENTACAO_CHOICES = Choices(('O', 'oral', _('Oral')), @reversion.register() class MateriaLegislativa(models.Model): - tipo = models.ForeignKey(TipoMateriaLegislativa, verbose_name=_('Tipo')) + tipo = models.ForeignKey(TipoMateriaLegislativa, + on_delete=models.PROTECT, + verbose_name=_('Tipo')) numero = models.PositiveIntegerField(verbose_name=_('Número')) ano = models.PositiveSmallIntegerField(verbose_name=_('Ano'), choices=RANGE_ANOS) @@ -135,7 +138,9 @@ class MateriaLegislativa(models.Model): verbose_name=_('Tipo de Apresentação'), choices=TIPO_APRESENTACAO_CHOICES) regime_tramitacao = models.ForeignKey( - RegimeTramitacao, verbose_name=_('Regime Tramitação')) + RegimeTramitacao, + on_delete=models.PROTECT, + verbose_name=_('Regime Tramitação')) data_publicacao = models.DateField( blank=True, null=True, verbose_name=_('Data Publicação')) tipo_origem_externa = models.ForeignKey( @@ -143,6 +148,7 @@ class MateriaLegislativa(models.Model): blank=True, null=True, related_name='tipo_origem_externa_set', + on_delete=models.PROTECT, verbose_name=_('Tipo')) numero_origem_externa = models.CharField( max_length=5, blank=True, verbose_name=_('Número')) @@ -151,7 +157,8 @@ class MateriaLegislativa(models.Model): data_origem_externa = models.DateField( blank=True, null=True, verbose_name=_('Data')) local_origem_externa = models.ForeignKey( - Origem, blank=True, null=True, verbose_name=_('Local Origem')) + Origem, blank=True, null=True, + on_delete=models.PROTECT, verbose_name=_('Local Origem')) apelido = models.CharField( max_length=50, blank=True, verbose_name=_('Apelido')) dias_prazo = models.PositiveIntegerField( @@ -236,9 +243,12 @@ class MateriaLegislativa(models.Model): @reversion.register() class Autoria(models.Model): - autor = models.ForeignKey(Autor, verbose_name=_('Autor')) + autor = models.ForeignKey(Autor, + verbose_name=_('Autor'), + on_delete=models.PROTECT) materia = models.ForeignKey( - MateriaLegislativa, verbose_name=_('Matéria Legislativa')) + MateriaLegislativa, on_delete=models.PROTECT, + verbose_name=_('Matéria Legislativa')) primeiro_autor = models.BooleanField(verbose_name=_('Primeiro Autor'), choices=YES_NO_CHOICES, default=False) @@ -255,7 +265,7 @@ class Autoria(models.Model): @reversion.register() class AcompanhamentoMateria(models.Model): usuario = models.CharField(max_length=50) - materia = models.ForeignKey(MateriaLegislativa) + materia = models.ForeignKey(MateriaLegislativa, on_delete=models.PROTECT) email = models.EmailField( max_length=100, verbose_name=_('E-mail')) data_cadastro = models.DateField(auto_now_add=True) @@ -275,9 +285,11 @@ class AcompanhamentoMateria(models.Model): @reversion.register() class Anexada(models.Model): materia_principal = models.ForeignKey( - MateriaLegislativa, related_name='materia_principal_set') + MateriaLegislativa, related_name='materia_principal_set', + on_delete=models.PROTECT) materia_anexada = models.ForeignKey( - MateriaLegislativa, related_name='materia_anexada_set') + MateriaLegislativa, related_name='materia_anexada_set', + on_delete=models.PROTECT) data_anexacao = models.DateField(verbose_name=_('Data Anexação')) data_desanexacao = models.DateField( blank=True, null=True, verbose_name=_('Data Desanexação')) @@ -311,8 +323,8 @@ class DespachoInicial(models.Model): # TODO M2M? # TODO Despachos não são necessáriamente comissoes, podem ser outros # órgãos, ex: procuradorias - materia = models.ForeignKey(MateriaLegislativa) - comissao = models.ForeignKey(Comissao) + materia = models.ForeignKey(MateriaLegislativa, on_delete=models.PROTECT) + comissao = models.ForeignKey(Comissao, on_delete=models.PROTECT) class Meta: verbose_name = _('Despacho Inicial') @@ -346,8 +358,10 @@ class TipoDocumento(models.Model): @reversion.register() class DocumentoAcessorio(models.Model): - materia = models.ForeignKey(MateriaLegislativa) - tipo = models.ForeignKey(TipoDocumento, verbose_name=_('Tipo')) + materia = models.ForeignKey(MateriaLegislativa, on_delete=models.PROTECT) + tipo = models.ForeignKey(TipoDocumento, + on_delete=models.PROTECT, + verbose_name=_('Tipo')) nome = models.CharField(max_length=30, verbose_name=_('Nome')) data = models.DateField(blank=True, null=True, verbose_name=_('Data')) autor = models.CharField( @@ -400,8 +414,8 @@ class DocumentoAcessorio(models.Model): @reversion.register() class MateriaAssunto(models.Model): # TODO M2M ?? - assunto = models.ForeignKey(AssuntoMateria) - materia = models.ForeignKey(MateriaLegislativa) + assunto = models.ForeignKey(AssuntoMateria, on_delete=models.PROTECT) + materia = models.ForeignKey(MateriaLegislativa, on_delete=models.PROTECT) class Meta: verbose_name = _('Relação Matéria - Assunto') @@ -414,9 +428,11 @@ class MateriaAssunto(models.Model): @reversion.register() class Numeracao(models.Model): - materia = models.ForeignKey(MateriaLegislativa) + materia = models.ForeignKey(MateriaLegislativa, on_delete=models.PROTECT) tipo_materia = models.ForeignKey( - TipoMateriaLegislativa, verbose_name=_('Tipo de Matéria')) + TipoMateriaLegislativa, + on_delete=models.PROTECT, + verbose_name=_('Tipo de Matéria')) numero_materia = models.CharField(max_length=5, verbose_name=_('Número')) ano_materia = models.PositiveSmallIntegerField(verbose_name=_('Ano'), @@ -481,15 +497,19 @@ class TipoFimRelatoria(models.Model): @reversion.register() class Relatoria(models.Model): - materia = models.ForeignKey(MateriaLegislativa) - parlamentar = models.ForeignKey(Parlamentar, verbose_name=_('Parlamentar')) + materia = models.ForeignKey(MateriaLegislativa, on_delete=models.PROTECT) + parlamentar = models.ForeignKey(Parlamentar, + on_delete=models.PROTECT, + verbose_name=_('Parlamentar')) tipo_fim_relatoria = models.ForeignKey( TipoFimRelatoria, blank=True, null=True, + on_delete=models.PROTECT, verbose_name=_('Motivo Fim Relatoria')) comissao = models.ForeignKey( - Comissao, blank=True, null=True, verbose_name=_('Comissão')) + Comissao, blank=True, null=True, + on_delete=models.PROTECT, verbose_name=_('Comissão')) data_designacao_relator = models.DateField( verbose_name=_('Data Designação')) data_destituicao_relator = models.DateField( @@ -508,8 +528,8 @@ class Relatoria(models.Model): @reversion.register() class Parecer(models.Model): - relatoria = models.ForeignKey(Relatoria) - materia = models.ForeignKey(MateriaLegislativa) + relatoria = models.ForeignKey(Relatoria, on_delete=models.PROTECT) + materia = models.ForeignKey(MateriaLegislativa, on_delete=models.PROTECT) tipo_conclusao = models.CharField(max_length=3, blank=True) tipo_apresentacao = models.CharField( max_length=1, choices=TIPO_APRESENTACAO_CHOICES) @@ -527,8 +547,12 @@ class Parecer(models.Model): @reversion.register() class Proposicao(models.Model): - autor = models.ForeignKey(Autor, null=True, blank=True, on_delete=PROTECT) - tipo = models.ForeignKey(TipoProposicao, verbose_name=_('Tipo')) + autor = models.ForeignKey(Autor, + null=True, + blank=True, + on_delete=models.PROTECT) + tipo = models.ForeignKey(TipoProposicao, on_delete=models.PROTECT, + verbose_name=_('Tipo')) # XXX data_envio was not null, but actual data said otherwise!!! data_envio = models.DateTimeField( @@ -587,6 +611,7 @@ class Proposicao(models.Model): # retire o comentário quando resolver materia_de_vinculo = models.ForeignKey( MateriaLegislativa, blank=True, null=True, + on_delete=models.PROTECT, verbose_name=_('Matéria anexadora'), related_name=_('proposicao_set')) @@ -687,11 +712,14 @@ class StatusTramitacao(models.Model): @reversion.register() class UnidadeTramitacao(models.Model): comissao = models.ForeignKey( - Comissao, blank=True, null=True, verbose_name=_('Comissão')) + Comissao, blank=True, null=True, + on_delete=models.PROTECT, verbose_name=_('Comissão')) orgao = models.ForeignKey( - Orgao, blank=True, null=True, verbose_name=_('Órgão')) + Orgao, blank=True, null=True, + on_delete=models.PROTECT, verbose_name=_('Órgão')) parlamentar = models.ForeignKey( - Parlamentar, blank=True, null=True, verbose_name=_('Parlamentar')) + Parlamentar, blank=True, null=True, + on_delete=models.PROTECT, verbose_name=_('Parlamentar')) class Meta: verbose_name = _('Unidade de Tramitação') @@ -736,18 +764,21 @@ class Tramitacao(models.Model): ('C', 'segunda_terceira_votacao', _('2ª e 3ª Votação')), ) - status = models.ForeignKey(StatusTramitacao, verbose_name=_('Status')) - materia = models.ForeignKey(MateriaLegislativa) + status = models.ForeignKey(StatusTramitacao, on_delete=models.PROTECT, + verbose_name=_('Status')) + materia = models.ForeignKey(MateriaLegislativa, on_delete=models.PROTECT) data_tramitacao = models.DateField(verbose_name=_('Data Tramitação')) unidade_tramitacao_local = models.ForeignKey( UnidadeTramitacao, related_name='tramitacoes_origem', + on_delete=models.PROTECT, verbose_name=_('Unidade Local')) data_encaminhamento = models.DateField( blank=True, null=True, verbose_name=_('Data Encaminhamento')) unidade_tramitacao_destino = models.ForeignKey( UnidadeTramitacao, related_name='tramitacoes_destino', + on_delete=models.PROTECT, verbose_name=_('Unidade Destino')) urgente = models.BooleanField(verbose_name=_('Urgente ?'), choices=YES_NO_CHOICES) diff --git a/sapl/norma/models.py b/sapl/norma/models.py index 8a412be1c..24e56dcb9 100644 --- a/sapl/norma/models.py +++ b/sapl/norma/models.py @@ -72,9 +72,12 @@ class NormaJuridica(models.Model): upload_to=texto_upload_path, verbose_name=_('Texto Integral')) tipo = models.ForeignKey( - TipoNormaJuridica, verbose_name=_('Tipo da Norma Juridica')) + TipoNormaJuridica, + on_delete=models.PROTECT, + verbose_name=_('Tipo da Norma Juridica')) materia = models.ForeignKey( - MateriaLegislativa, blank=True, null=True, verbose_name=_('Matéria')) + MateriaLegislativa, blank=True, null=True, + on_delete=models.PROTECT, verbose_name=_('Matéria')) numero = models.CharField( max_length=8, verbose_name=_('Número')) @@ -158,8 +161,8 @@ class NormaJuridica(models.Model): @reversion.register() class LegislacaoCitada(models.Model): - materia = models.ForeignKey(MateriaLegislativa) - norma = models.ForeignKey(NormaJuridica) + materia = models.ForeignKey(MateriaLegislativa, on_delete=models.PROTECT) + norma = models.ForeignKey(NormaJuridica, on_delete=models.PROTECT) disposicoes = models.CharField( max_length=15, blank=True, verbose_name=_('Disposição')) parte = models.CharField( @@ -215,13 +218,17 @@ class NormaRelacionada(models.Model): norma_principal = models.ForeignKey( NormaJuridica, related_name='norma_principal', + on_delete=models.PROTECT, verbose_name=_('Norma Principal')) norma_relacionada = models.ForeignKey( NormaJuridica, related_name='norma_relacionada', + on_delete=models.PROTECT, verbose_name=_('Norma Relacionada')) tipo_vinculo = models.ForeignKey( - TipoVinculoNormaJuridica, verbose_name=_('Tipo de Vínculo')) + TipoVinculoNormaJuridica, + on_delete=models.PROTECT, + verbose_name=_('Tipo de Vínculo')) class Meta: verbose_name = _('Norma Relacionada') diff --git a/sapl/parlamentares/models.py b/sapl/parlamentares/models.py index e134cad8a..1152b94df 100644 --- a/sapl/parlamentares/models.py +++ b/sapl/parlamentares/models.py @@ -55,6 +55,7 @@ class SessaoLegislativa(models.Model): legislatura = models.ForeignKey( Legislatura, + on_delete=models.PROTECT, verbose_name=Legislatura._meta.verbose_name) numero = models.PositiveIntegerField(verbose_name=_('Número')) tipo = models.CharField( @@ -80,7 +81,9 @@ class SessaoLegislativa(models.Model): @reversion.register() class Coligacao(models.Model): - legislatura = models.ForeignKey(Legislatura, verbose_name=_('Legislatura')) + legislatura = models.ForeignKey(Legislatura, + on_delete=models.PROTECT, + verbose_name=_('Legislatura')) nome = models.CharField(max_length=50, verbose_name=_('Nome')) numero_votos = models.PositiveIntegerField( blank=True, null=True, verbose_name=_('Nº Votos Recebidos')) @@ -130,8 +133,9 @@ class Partido(models.Model): class ComposicaoColigacao(models.Model): # TODO M2M partido = models.ForeignKey(Partido, + on_delete=models.PROTECT, verbose_name=_('Partidos da Coligação')) - coligacao = models.ForeignKey(Coligacao) + coligacao = models.ForeignKey(Coligacao, on_delete=models.PROTECT) class Meta: verbose_name = (_('Composição Coligação')) @@ -213,11 +217,13 @@ class Parlamentar(models.Model): NivelInstrucao, blank=True, null=True, + on_delete=models.PROTECT, verbose_name=_('Nível Instrução')) situacao_militar = models.ForeignKey( SituacaoMilitar, blank=True, null=True, + on_delete=models.PROTECT, verbose_name=_('Situação Militar')) nome_completo = models.CharField( max_length=50, verbose_name=_('Nome Completo')) @@ -247,7 +253,8 @@ class Parlamentar(models.Model): blank=True, verbose_name=_('Endereço Residencial')) municipio_residencia = models.ForeignKey( - Municipio, blank=True, null=True, verbose_name=_('Município')) + Municipio, blank=True, null=True, + on_delete=models.PROTECT, verbose_name=_('Município')) cep_residencia = models.CharField( max_length=9, blank=True, verbose_name=_('CEP')) telefone_residencia = models.CharField( @@ -363,8 +370,9 @@ class Dependente(models.Model): SEXO_CHOICE = ((FEMININO, _('Feminino')), (MASCULINO, _('Masculino'))) - tipo = models.ForeignKey(TipoDependente, verbose_name=_('Tipo')) - parlamentar = models.ForeignKey(Parlamentar) + tipo = models.ForeignKey(TipoDependente, on_delete=models.PROTECT, + verbose_name=_('Tipo')) + parlamentar = models.ForeignKey(Parlamentar, on_delete=models.PROTECT) nome = models.CharField(max_length=50, verbose_name=_('Nome')) sexo = models.CharField( max_length=1, verbose_name=_('Sexo'), choices=SEXO_CHOICE) @@ -390,8 +398,10 @@ class Dependente(models.Model): @reversion.register() class Filiacao(models.Model): data = models.DateField(verbose_name=_('Data Filiação')) - parlamentar = models.ForeignKey(Parlamentar) - partido = models.ForeignKey(Partido, verbose_name=_('Partido')) + parlamentar = models.ForeignKey(Parlamentar, on_delete=models.PROTECT) + partido = models.ForeignKey(Partido, + on_delete=models.PROTECT, + verbose_name=_('Partido')) data_desfiliacao = models.DateField( blank=True, null=True, verbose_name=_('Data Desfiliação')) @@ -427,12 +437,14 @@ class TipoAfastamento(models.Model): @reversion.register() class Mandato(models.Model): - parlamentar = models.ForeignKey(Parlamentar) + parlamentar = models.ForeignKey(Parlamentar, on_delete=models.PROTECT) tipo_afastamento = models.ForeignKey( - TipoAfastamento, blank=True, null=True) - legislatura = models.ForeignKey(Legislatura, verbose_name=_('Legislatura')) + TipoAfastamento, blank=True, null=True, on_delete=models.PROTECT) + legislatura = models.ForeignKey(Legislatura, on_delete=models.PROTECT, + verbose_name=_('Legislatura')) coligacao = models.ForeignKey( - Coligacao, blank=True, null=True, verbose_name=_('Coligação')) + Coligacao, blank=True, null=True, + on_delete=models.PROTECT, verbose_name=_('Coligação')) # TODO what is this field?????? tipo_causa_fim_mandato = models.PositiveIntegerField(blank=True, null=True) data_fim_mandato = models.DateField(verbose_name=_('Fim do Mandato')) @@ -445,7 +457,7 @@ class Mandato(models.Model): default=True, choices=YES_NO_CHOICES, verbose_name=_('Vereador Titular')) - + observacao = models.TextField( blank=True, verbose_name=_('Observação')) @@ -489,9 +501,10 @@ class CargoMesa(models.Model): @reversion.register() class ComposicaoMesa(models.Model): # TODO M2M ???? Ternary????? - parlamentar = models.ForeignKey(Parlamentar) - sessao_legislativa = models.ForeignKey(SessaoLegislativa) - cargo = models.ForeignKey(CargoMesa) + parlamentar = models.ForeignKey(Parlamentar, on_delete=models.PROTECT) + sessao_legislativa = models.ForeignKey(SessaoLegislativa, + on_delete=models.PROTECT) + cargo = models.ForeignKey(CargoMesa, on_delete=models.PROTECT) class Meta: verbose_name = _('Ocupação de cargo na Mesa') @@ -546,9 +559,10 @@ class Frente(models.Model): class Votante(models.Model): parlamentar = models.ForeignKey( - Parlamentar, verbose_name=_('Parlamentar'), related_name='parlamentar') + Parlamentar, verbose_name=_('Parlamentar'), + on_delete=models.PROTECT, related_name='parlamentar') user = models.ForeignKey( - get_settings_auth_user_model(), + get_settings_auth_user_model(), on_delete=models.PROTECT, verbose_name=_('User'), related_name='user') data = models.DateTimeField( verbose_name=_('Data'), auto_now_add=True, diff --git a/sapl/protocoloadm/models.py b/sapl/protocoloadm/models.py index 551fdcc19..6294399f8 100644 --- a/sapl/protocoloadm/models.py +++ b/sapl/protocoloadm/models.py @@ -64,17 +64,22 @@ class Protocolo(models.Model): tipo_processo = models.PositiveIntegerField() interessado = models.CharField( max_length=60, blank=True, verbose_name=_('Interessado')) - autor = models.ForeignKey(Autor, blank=True, null=True) + autor = models.ForeignKey(Autor, + blank=True, + null=True, + on_delete=models.PROTECT) assunto_ementa = models.TextField(blank=True) tipo_documento = models.ForeignKey( TipoDocumentoAdministrativo, blank=True, null=True, + on_delete=models.PROTECT, verbose_name=_('Tipo de documento')) tipo_materia = models.ForeignKey( TipoMateriaLegislativa, blank=True, null=True, + on_delete=models.PROTECT, verbose_name=_('Tipo Matéria')) numero_paginas = models.PositiveIntegerField( blank=True, null=True, verbose_name=_('Número de Páginas')) @@ -103,20 +108,24 @@ class Protocolo(models.Model): @reversion.register() class DocumentoAdministrativo(models.Model): tipo = models.ForeignKey( - TipoDocumentoAdministrativo, verbose_name=_('Tipo Documento')) + TipoDocumentoAdministrativo, on_delete=models.PROTECT, + verbose_name=_('Tipo Documento')) numero = models.PositiveIntegerField(verbose_name=_('Número')) ano = models.PositiveSmallIntegerField(verbose_name=_('Ano'), choices=RANGE_ANOS) protocolo = models.ForeignKey( Protocolo, blank=True, - null=True, verbose_name=_('Protocolo')) + null=True, + on_delete=models.PROTECT, + verbose_name=_('Protocolo')) data = models.DateField(verbose_name=_('Data')) numero_protocolo = models.PositiveIntegerField( blank=True, null=True, verbose_name=_('Núm. Protocolo')) interessado = models.CharField( max_length=50, blank=True, verbose_name=_('Interessado')) - autor = models.ForeignKey(Autor, blank=True, null=True) + autor = models.ForeignKey(Autor, blank=True, null=True, + on_delete=models.PROTECT) dias_prazo = models.PositiveIntegerField( blank=True, null=True, verbose_name=_('Dias Prazo')) data_fim_prazo = models.DateField( @@ -169,9 +178,12 @@ class DocumentoAdministrativo(models.Model): @reversion.register() class DocumentoAcessorioAdministrativo(models.Model): - documento = models.ForeignKey(DocumentoAdministrativo) + documento = models.ForeignKey(DocumentoAdministrativo, + on_delete=models.PROTECT) tipo = models.ForeignKey( - TipoDocumentoAdministrativo, verbose_name=_('Tipo')) + TipoDocumentoAdministrativo, + on_delete=models.PROTECT, + verbose_name=_('Tipo')) nome = models.CharField(max_length=30, verbose_name=_('Nome')) arquivo = models.FileField( blank=True, @@ -244,19 +256,23 @@ class StatusTramitacaoAdministrativo(models.Model): class TramitacaoAdministrativo(models.Model): status = models.ForeignKey( StatusTramitacaoAdministrativo, + on_delete=models.PROTECT, verbose_name=_('Status')) - documento = models.ForeignKey(DocumentoAdministrativo) + documento = models.ForeignKey(DocumentoAdministrativo, + on_delete=models.PROTECT) data_tramitacao = models.DateField( verbose_name=_('Data Tramitação')) unidade_tramitacao_local = models.ForeignKey( UnidadeTramitacao, related_name='adm_tramitacoes_origem', + on_delete=models.PROTECT, verbose_name=_('Unidade Local')) data_encaminhamento = models.DateField( blank=True, null=True, verbose_name=_('Data Encaminhamento')) unidade_tramitacao_destino = models.ForeignKey( UnidadeTramitacao, related_name='adm_tramitacoes_destino', + on_delete=models.PROTECT, verbose_name=_('Unidade Destino')) texto = models.TextField( blank=True, verbose_name=_('Texto da Ação')) diff --git a/sapl/sessao/models.py b/sapl/sessao/models.py index ffbb4d753..33b2c73ad 100644 --- a/sapl/sessao/models.py +++ b/sapl/sessao/models.py @@ -32,11 +32,16 @@ class CargoBancada(models.Model): @reversion.register() class Bancada(models.Model): - legislatura = models.ForeignKey(Legislatura, verbose_name=_('Legislatura')) + legislatura = models.ForeignKey(Legislatura, + on_delete=models.PROTECT, + verbose_name=_('Legislatura')) nome = models.CharField( max_length=80, verbose_name=_('Nome da Bancada')) - partido = models.ForeignKey(Partido, blank=True, null=True, + partido = models.ForeignKey(Partido, + blank=True, + null=True, + on_delete=models.PROTECT, verbose_name=_('Partido')) data_criacao = models.DateField(blank=True, null=True, verbose_name=_('Data Criação')) @@ -104,10 +109,16 @@ class SessaoPlenaria(models.Model): # TODO analyze querying all hosted databases ! cod_andamento_sessao = models.PositiveIntegerField(blank=True, null=True) - tipo = models.ForeignKey(TipoSessaoPlenaria, verbose_name=_('Tipo')) + tipo = models.ForeignKey(TipoSessaoPlenaria, + on_delete=models.PROTECT, + verbose_name=_('Tipo')) sessao_legislativa = models.ForeignKey( - SessaoLegislativa, verbose_name=_('Sessão Legislativa')) - legislatura = models.ForeignKey(Legislatura, verbose_name=_('Legislatura')) + SessaoLegislativa, + on_delete=models.PROTECT, + verbose_name=_('Sessão Legislativa')) + legislatura = models.ForeignKey(Legislatura, + on_delete=models.PROTECT, + verbose_name=_('Legislatura')) # XXX seems to be empty data_inicio = models.DateField(verbose_name=_('Abertura')) hora_inicio = models.CharField( @@ -209,8 +220,10 @@ class AbstractOrdemDia(models.Model): (3, 'secreta', (('Secreta'))), ) - sessao_plenaria = models.ForeignKey(SessaoPlenaria) + sessao_plenaria = models.ForeignKey(SessaoPlenaria, + on_delete=models.PROTECT) materia = models.ForeignKey(MateriaLegislativa, + on_delete=models.PROTECT, verbose_name=_('Matéria')) data_ordem = models.DateField(verbose_name=_('Data da Sessão')) observacao = models.TextField( @@ -254,8 +267,9 @@ class TipoExpediente(models.Model): @reversion.register() class ExpedienteSessao(models.Model): # ExpedienteSessaoPlenaria - sessao_plenaria = models.ForeignKey(SessaoPlenaria) - tipo = models.ForeignKey(TipoExpediente) + sessao_plenaria = models.ForeignKey(SessaoPlenaria, + on_delete=models.PROTECT) + tipo = models.ForeignKey(TipoExpediente, on_delete=models.PROTECT) conteudo = models.TextField( blank=True, verbose_name=_('Conteúdo do expediente')) @@ -269,9 +283,10 @@ class ExpedienteSessao(models.Model): # ExpedienteSessaoPlenaria @reversion.register() class IntegranteMesa(models.Model): # MesaSessaoPlenaria - sessao_plenaria = models.ForeignKey(SessaoPlenaria) - cargo = models.ForeignKey(CargoMesa) - parlamentar = models.ForeignKey(Parlamentar) + sessao_plenaria = models.ForeignKey(SessaoPlenaria, + on_delete=models.PROTECT) + cargo = models.ForeignKey(CargoMesa, on_delete=models.PROTECT) + parlamentar = models.ForeignKey(Parlamentar, on_delete=models.PROTECT) class Meta: verbose_name = _('Participação em Mesa de Sessão Plenaria') @@ -283,8 +298,11 @@ class IntegranteMesa(models.Model): # MesaSessaoPlenaria @reversion.register() class AbstractOrador(models.Model): # Oradores - sessao_plenaria = models.ForeignKey(SessaoPlenaria) - parlamentar = models.ForeignKey(Parlamentar, verbose_name=_('Parlamentar')) + sessao_plenaria = models.ForeignKey(SessaoPlenaria, + on_delete=models.PROTECT) + parlamentar = models.ForeignKey(Parlamentar, + on_delete=models.PROTECT, + verbose_name=_('Parlamentar')) numero_ordem = models.PositiveIntegerField( verbose_name=_('Ordem de pronunciamento')) url_discurso = models.URLField( @@ -328,8 +346,9 @@ class OrdemDia(AbstractOrdemDia): @reversion.register() class PresencaOrdemDia(models.Model): # OrdemDiaPresenca - sessao_plenaria = models.ForeignKey(SessaoPlenaria) - parlamentar = models.ForeignKey(Parlamentar) + sessao_plenaria = models.ForeignKey(SessaoPlenaria, + on_delete=models.PROTECT) + parlamentar = models.ForeignKey(Parlamentar, on_delete=models.PROTECT) class Meta: verbose_name = _('Presença da Ordem do Dia') @@ -358,10 +377,18 @@ class TipoResultadoVotacao(models.Model): @reversion.register() class RegistroVotacao(models.Model): tipo_resultado_votacao = models.ForeignKey( - TipoResultadoVotacao, verbose_name=_('Resultado da Votação')) - materia = models.ForeignKey(MateriaLegislativa) - ordem = models.ForeignKey(OrdemDia, blank=True, null=True) - expediente = models.ForeignKey(ExpedienteMateria, blank=True, null=True) + TipoResultadoVotacao, + on_delete=models.PROTECT, + verbose_name=_('Resultado da Votação')) + materia = models.ForeignKey(MateriaLegislativa, on_delete=models.PROTECT) + ordem = models.ForeignKey(OrdemDia, + blank=True, + null=True, + on_delete=models.PROTECT) + expediente = models.ForeignKey(ExpedienteMateria, + blank=True, + null=True, + on_delete=models.PROTECT) numero_votos_sim = models.PositiveIntegerField(verbose_name=_('Sim')) numero_votos_nao = models.PositiveIntegerField(verbose_name=_('Não')) numero_abstencoes = models.PositiveIntegerField( @@ -383,8 +410,8 @@ class RegistroVotacao(models.Model): @reversion.register() class VotoParlamentar(models.Model): # RegistroVotacaoParlamentar - votacao = models.ForeignKey(RegistroVotacao) - parlamentar = models.ForeignKey(Parlamentar) + votacao = models.ForeignKey(RegistroVotacao, on_delete=models.PROTECT) + parlamentar = models.ForeignKey(Parlamentar, on_delete=models.PROTECT) # XXX change to restricted choices voto = models.CharField(max_length=10) @@ -399,13 +426,14 @@ class VotoParlamentar(models.Model): # RegistroVotacaoParlamentar @reversion.register() class VotoNominal(models.Model): - parlamentar = models.ForeignKey(Parlamentar) + parlamentar = models.ForeignKey(Parlamentar, on_delete=models.PROTECT) voto = models.CharField(verbose_name=_('Voto'), max_length=10) - sessao = models.ForeignKey(SessaoPlenaria) - materia = models.ForeignKey(MateriaLegislativa) + sessao = models.ForeignKey(SessaoPlenaria, on_delete=models.PROTECT) + materia = models.ForeignKey(MateriaLegislativa, on_delete=models.PROTECT) - user = models.ForeignKey(get_settings_auth_user_model()) + user = models.ForeignKey(get_settings_auth_user_model(), + on_delete=models.PROTECT) ip = models.CharField(verbose_name=_('IP'), max_length=30) data_hora = models.DateTimeField( verbose_name=_('Data/Hora'), auto_now_add=True) @@ -420,8 +448,9 @@ class VotoNominal(models.Model): @reversion.register() class SessaoPlenariaPresenca(models.Model): - sessao_plenaria = models.ForeignKey(SessaoPlenaria) - parlamentar = models.ForeignKey(Parlamentar) + sessao_plenaria = models.ForeignKey(SessaoPlenaria, + on_delete=models.PROTECT) + parlamentar = models.ForeignKey(Parlamentar, on_delete=models.PROTECT) data_sessao = models.DateField(blank=True, null=True) class Meta: