Browse Source

Adiciona a diretiva on_delete para proteger deleções em cascata em comissoes, materia, norma, parlamentares, sessao e protocoloadm. (#974)

pull/979/head
Edward 8 years ago
committed by GitHub
parent
commit
9c188cca6d
  1. 20
      sapl/comissoes/models.py
  2. 87
      sapl/materia/models.py
  3. 17
      sapl/norma/models.py
  4. 48
      sapl/parlamentares/models.py
  5. 30
      sapl/protocoloadm/models.py
  6. 83
      sapl/sessao/models.py

20
sapl/comissoes/models.py

@ -32,7 +32,9 @@ class TipoComissao(models.Model):
@reversion.register() @reversion.register()
class Comissao(models.Model): 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')) nome = models.CharField(max_length=60, verbose_name=_('Nome'))
sigla = models.CharField(max_length=10, verbose_name=_('Sigla')) sigla = models.CharField(max_length=10, verbose_name=_('Sigla'))
data_criacao = models.DateField(verbose_name=_('Data de Criação')) data_criacao = models.DateField(verbose_name=_('Data de Criação'))
@ -132,8 +134,12 @@ class CargoComissao(models.Model):
@reversion.register() @reversion.register()
class Composicao(models.Model): # IGNORE class Composicao(models.Model): # IGNORE
comissao = models.ForeignKey(Comissao, verbose_name=_('Comissão')) comissao = models.ForeignKey(Comissao,
periodo = models.ForeignKey(Periodo, verbose_name=_('Período')) on_delete=models.PROTECT,
verbose_name=_('Comissão'))
periodo = models.ForeignKey(Periodo,
on_delete=models.PROTECT,
verbose_name=_('Período'))
class Meta: class Meta:
verbose_name = _('Composição de Comissão') verbose_name = _('Composição de Comissão')
@ -145,9 +151,11 @@ class Composicao(models.Model): # IGNORE
@reversion.register() @reversion.register()
class Participacao(models.Model): # ComposicaoComissao class Participacao(models.Model): # ComposicaoComissao
composicao = models.ForeignKey(Composicao, related_name='participacao_set') composicao = models.ForeignKey(Composicao,
parlamentar = models.ForeignKey(Parlamentar) related_name='participacao_set',
cargo = models.ForeignKey(CargoComissao) on_delete=models.PROTECT)
parlamentar = models.ForeignKey(Parlamentar, on_delete=models.PROTECT)
cargo = models.ForeignKey(CargoComissao, on_delete=models.PROTECT)
titular = models.BooleanField( titular = models.BooleanField(
verbose_name=_('Titular'), verbose_name=_('Titular'),
default=False, default=False,

87
sapl/materia/models.py

@ -38,6 +38,7 @@ class TipoProposicao(models.Model):
# FIXME - para a rotina de migração - estes campos mudaram # FIXME - para a rotina de migração - estes campos mudaram
# retire o comentário quando resolver # retire o comentário quando resolver
content_type = models.ForeignKey(ContentType, default=None, content_type = models.ForeignKey(ContentType, default=None,
on_delete=models.PROTECT,
verbose_name=_('Definição de Tipo')) verbose_name=_('Definição de Tipo'))
object_id = models.PositiveIntegerField( object_id = models.PositiveIntegerField(
blank=True, null=True, default=None) blank=True, null=True, default=None)
@ -123,7 +124,9 @@ TIPO_APRESENTACAO_CHOICES = Choices(('O', 'oral', _('Oral')),
@reversion.register() @reversion.register()
class MateriaLegislativa(models.Model): 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')) numero = models.PositiveIntegerField(verbose_name=_('Número'))
ano = models.PositiveSmallIntegerField(verbose_name=_('Ano'), ano = models.PositiveSmallIntegerField(verbose_name=_('Ano'),
choices=RANGE_ANOS) choices=RANGE_ANOS)
@ -135,7 +138,9 @@ class MateriaLegislativa(models.Model):
verbose_name=_('Tipo de Apresentação'), verbose_name=_('Tipo de Apresentação'),
choices=TIPO_APRESENTACAO_CHOICES) choices=TIPO_APRESENTACAO_CHOICES)
regime_tramitacao = models.ForeignKey( regime_tramitacao = models.ForeignKey(
RegimeTramitacao, verbose_name=_('Regime Tramitação')) RegimeTramitacao,
on_delete=models.PROTECT,
verbose_name=_('Regime Tramitação'))
data_publicacao = models.DateField( data_publicacao = models.DateField(
blank=True, null=True, verbose_name=_('Data Publicação')) blank=True, null=True, verbose_name=_('Data Publicação'))
tipo_origem_externa = models.ForeignKey( tipo_origem_externa = models.ForeignKey(
@ -143,6 +148,7 @@ class MateriaLegislativa(models.Model):
blank=True, blank=True,
null=True, null=True,
related_name='tipo_origem_externa_set', related_name='tipo_origem_externa_set',
on_delete=models.PROTECT,
verbose_name=_('Tipo')) verbose_name=_('Tipo'))
numero_origem_externa = models.CharField( numero_origem_externa = models.CharField(
max_length=5, blank=True, verbose_name=_('Número')) max_length=5, blank=True, verbose_name=_('Número'))
@ -151,7 +157,8 @@ class MateriaLegislativa(models.Model):
data_origem_externa = models.DateField( data_origem_externa = models.DateField(
blank=True, null=True, verbose_name=_('Data')) blank=True, null=True, verbose_name=_('Data'))
local_origem_externa = models.ForeignKey( 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( apelido = models.CharField(
max_length=50, blank=True, verbose_name=_('Apelido')) max_length=50, blank=True, verbose_name=_('Apelido'))
dias_prazo = models.PositiveIntegerField( dias_prazo = models.PositiveIntegerField(
@ -236,9 +243,12 @@ class MateriaLegislativa(models.Model):
@reversion.register() @reversion.register()
class Autoria(models.Model): 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( 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'), primeiro_autor = models.BooleanField(verbose_name=_('Primeiro Autor'),
choices=YES_NO_CHOICES, choices=YES_NO_CHOICES,
default=False) default=False)
@ -255,7 +265,7 @@ class Autoria(models.Model):
@reversion.register() @reversion.register()
class AcompanhamentoMateria(models.Model): class AcompanhamentoMateria(models.Model):
usuario = models.CharField(max_length=50) usuario = models.CharField(max_length=50)
materia = models.ForeignKey(MateriaLegislativa) materia = models.ForeignKey(MateriaLegislativa, on_delete=models.PROTECT)
email = models.EmailField( email = models.EmailField(
max_length=100, verbose_name=_('E-mail')) max_length=100, verbose_name=_('E-mail'))
data_cadastro = models.DateField(auto_now_add=True) data_cadastro = models.DateField(auto_now_add=True)
@ -275,9 +285,11 @@ class AcompanhamentoMateria(models.Model):
@reversion.register() @reversion.register()
class Anexada(models.Model): class Anexada(models.Model):
materia_principal = models.ForeignKey( materia_principal = models.ForeignKey(
MateriaLegislativa, related_name='materia_principal_set') MateriaLegislativa, related_name='materia_principal_set',
on_delete=models.PROTECT)
materia_anexada = models.ForeignKey( 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_anexacao = models.DateField(verbose_name=_('Data Anexação'))
data_desanexacao = models.DateField( data_desanexacao = models.DateField(
blank=True, null=True, verbose_name=_('Data Desanexação')) blank=True, null=True, verbose_name=_('Data Desanexação'))
@ -311,8 +323,8 @@ class DespachoInicial(models.Model):
# TODO M2M? # TODO M2M?
# TODO Despachos não são necessáriamente comissoes, podem ser outros # TODO Despachos não são necessáriamente comissoes, podem ser outros
# órgãos, ex: procuradorias # órgãos, ex: procuradorias
materia = models.ForeignKey(MateriaLegislativa) materia = models.ForeignKey(MateriaLegislativa, on_delete=models.PROTECT)
comissao = models.ForeignKey(Comissao) comissao = models.ForeignKey(Comissao, on_delete=models.PROTECT)
class Meta: class Meta:
verbose_name = _('Despacho Inicial') verbose_name = _('Despacho Inicial')
@ -346,8 +358,10 @@ class TipoDocumento(models.Model):
@reversion.register() @reversion.register()
class DocumentoAcessorio(models.Model): class DocumentoAcessorio(models.Model):
materia = models.ForeignKey(MateriaLegislativa) materia = models.ForeignKey(MateriaLegislativa, on_delete=models.PROTECT)
tipo = models.ForeignKey(TipoDocumento, verbose_name=_('Tipo')) tipo = models.ForeignKey(TipoDocumento,
on_delete=models.PROTECT,
verbose_name=_('Tipo'))
nome = models.CharField(max_length=30, verbose_name=_('Nome')) nome = models.CharField(max_length=30, verbose_name=_('Nome'))
data = models.DateField(blank=True, null=True, verbose_name=_('Data')) data = models.DateField(blank=True, null=True, verbose_name=_('Data'))
autor = models.CharField( autor = models.CharField(
@ -400,8 +414,8 @@ class DocumentoAcessorio(models.Model):
@reversion.register() @reversion.register()
class MateriaAssunto(models.Model): class MateriaAssunto(models.Model):
# TODO M2M ?? # TODO M2M ??
assunto = models.ForeignKey(AssuntoMateria) assunto = models.ForeignKey(AssuntoMateria, on_delete=models.PROTECT)
materia = models.ForeignKey(MateriaLegislativa) materia = models.ForeignKey(MateriaLegislativa, on_delete=models.PROTECT)
class Meta: class Meta:
verbose_name = _('Relação Matéria - Assunto') verbose_name = _('Relação Matéria - Assunto')
@ -414,9 +428,11 @@ class MateriaAssunto(models.Model):
@reversion.register() @reversion.register()
class Numeracao(models.Model): class Numeracao(models.Model):
materia = models.ForeignKey(MateriaLegislativa) materia = models.ForeignKey(MateriaLegislativa, on_delete=models.PROTECT)
tipo_materia = models.ForeignKey( 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, numero_materia = models.CharField(max_length=5,
verbose_name=_('Número')) verbose_name=_('Número'))
ano_materia = models.PositiveSmallIntegerField(verbose_name=_('Ano'), ano_materia = models.PositiveSmallIntegerField(verbose_name=_('Ano'),
@ -481,15 +497,19 @@ class TipoFimRelatoria(models.Model):
@reversion.register() @reversion.register()
class Relatoria(models.Model): class Relatoria(models.Model):
materia = models.ForeignKey(MateriaLegislativa) materia = models.ForeignKey(MateriaLegislativa, on_delete=models.PROTECT)
parlamentar = models.ForeignKey(Parlamentar, verbose_name=_('Parlamentar')) parlamentar = models.ForeignKey(Parlamentar,
on_delete=models.PROTECT,
verbose_name=_('Parlamentar'))
tipo_fim_relatoria = models.ForeignKey( tipo_fim_relatoria = models.ForeignKey(
TipoFimRelatoria, TipoFimRelatoria,
blank=True, blank=True,
null=True, null=True,
on_delete=models.PROTECT,
verbose_name=_('Motivo Fim Relatoria')) verbose_name=_('Motivo Fim Relatoria'))
comissao = models.ForeignKey( 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( data_designacao_relator = models.DateField(
verbose_name=_('Data Designação')) verbose_name=_('Data Designação'))
data_destituicao_relator = models.DateField( data_destituicao_relator = models.DateField(
@ -508,8 +528,8 @@ class Relatoria(models.Model):
@reversion.register() @reversion.register()
class Parecer(models.Model): class Parecer(models.Model):
relatoria = models.ForeignKey(Relatoria) relatoria = models.ForeignKey(Relatoria, on_delete=models.PROTECT)
materia = models.ForeignKey(MateriaLegislativa) materia = models.ForeignKey(MateriaLegislativa, on_delete=models.PROTECT)
tipo_conclusao = models.CharField(max_length=3, blank=True) tipo_conclusao = models.CharField(max_length=3, blank=True)
tipo_apresentacao = models.CharField( tipo_apresentacao = models.CharField(
max_length=1, choices=TIPO_APRESENTACAO_CHOICES) max_length=1, choices=TIPO_APRESENTACAO_CHOICES)
@ -527,8 +547,12 @@ class Parecer(models.Model):
@reversion.register() @reversion.register()
class Proposicao(models.Model): class Proposicao(models.Model):
autor = models.ForeignKey(Autor, null=True, blank=True, on_delete=PROTECT) autor = models.ForeignKey(Autor,
tipo = models.ForeignKey(TipoProposicao, verbose_name=_('Tipo')) 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!!! # XXX data_envio was not null, but actual data said otherwise!!!
data_envio = models.DateTimeField( data_envio = models.DateTimeField(
@ -587,6 +611,7 @@ class Proposicao(models.Model):
# retire o comentário quando resolver # retire o comentário quando resolver
materia_de_vinculo = models.ForeignKey( materia_de_vinculo = models.ForeignKey(
MateriaLegislativa, blank=True, null=True, MateriaLegislativa, blank=True, null=True,
on_delete=models.PROTECT,
verbose_name=_('Matéria anexadora'), verbose_name=_('Matéria anexadora'),
related_name=_('proposicao_set')) related_name=_('proposicao_set'))
@ -687,11 +712,14 @@ class StatusTramitacao(models.Model):
@reversion.register() @reversion.register()
class UnidadeTramitacao(models.Model): class UnidadeTramitacao(models.Model):
comissao = models.ForeignKey( 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 = 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 = models.ForeignKey(
Parlamentar, blank=True, null=True, verbose_name=_('Parlamentar')) Parlamentar, blank=True, null=True,
on_delete=models.PROTECT, verbose_name=_('Parlamentar'))
class Meta: class Meta:
verbose_name = _('Unidade de Tramitação') verbose_name = _('Unidade de Tramitação')
@ -736,18 +764,21 @@ class Tramitacao(models.Model):
('C', 'segunda_terceira_votacao', _('2ª e 3ª Votação')), ('C', 'segunda_terceira_votacao', _('2ª e 3ª Votação')),
) )
status = models.ForeignKey(StatusTramitacao, verbose_name=_('Status')) status = models.ForeignKey(StatusTramitacao, on_delete=models.PROTECT,
materia = models.ForeignKey(MateriaLegislativa) verbose_name=_('Status'))
materia = models.ForeignKey(MateriaLegislativa, on_delete=models.PROTECT)
data_tramitacao = models.DateField(verbose_name=_('Data Tramitação')) data_tramitacao = models.DateField(verbose_name=_('Data Tramitação'))
unidade_tramitacao_local = models.ForeignKey( unidade_tramitacao_local = models.ForeignKey(
UnidadeTramitacao, UnidadeTramitacao,
related_name='tramitacoes_origem', related_name='tramitacoes_origem',
on_delete=models.PROTECT,
verbose_name=_('Unidade Local')) verbose_name=_('Unidade Local'))
data_encaminhamento = models.DateField( data_encaminhamento = models.DateField(
blank=True, null=True, verbose_name=_('Data Encaminhamento')) blank=True, null=True, verbose_name=_('Data Encaminhamento'))
unidade_tramitacao_destino = models.ForeignKey( unidade_tramitacao_destino = models.ForeignKey(
UnidadeTramitacao, UnidadeTramitacao,
related_name='tramitacoes_destino', related_name='tramitacoes_destino',
on_delete=models.PROTECT,
verbose_name=_('Unidade Destino')) verbose_name=_('Unidade Destino'))
urgente = models.BooleanField(verbose_name=_('Urgente ?'), urgente = models.BooleanField(verbose_name=_('Urgente ?'),
choices=YES_NO_CHOICES) choices=YES_NO_CHOICES)

17
sapl/norma/models.py

@ -72,9 +72,12 @@ class NormaJuridica(models.Model):
upload_to=texto_upload_path, upload_to=texto_upload_path,
verbose_name=_('Texto Integral')) verbose_name=_('Texto Integral'))
tipo = models.ForeignKey( tipo = models.ForeignKey(
TipoNormaJuridica, verbose_name=_('Tipo da Norma Juridica')) TipoNormaJuridica,
on_delete=models.PROTECT,
verbose_name=_('Tipo da Norma Juridica'))
materia = models.ForeignKey( 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( numero = models.CharField(
max_length=8, max_length=8,
verbose_name=_('Número')) verbose_name=_('Número'))
@ -158,8 +161,8 @@ class NormaJuridica(models.Model):
@reversion.register() @reversion.register()
class LegislacaoCitada(models.Model): class LegislacaoCitada(models.Model):
materia = models.ForeignKey(MateriaLegislativa) materia = models.ForeignKey(MateriaLegislativa, on_delete=models.PROTECT)
norma = models.ForeignKey(NormaJuridica) norma = models.ForeignKey(NormaJuridica, on_delete=models.PROTECT)
disposicoes = models.CharField( disposicoes = models.CharField(
max_length=15, blank=True, verbose_name=_('Disposição')) max_length=15, blank=True, verbose_name=_('Disposição'))
parte = models.CharField( parte = models.CharField(
@ -215,13 +218,17 @@ class NormaRelacionada(models.Model):
norma_principal = models.ForeignKey( norma_principal = models.ForeignKey(
NormaJuridica, NormaJuridica,
related_name='norma_principal', related_name='norma_principal',
on_delete=models.PROTECT,
verbose_name=_('Norma Principal')) verbose_name=_('Norma Principal'))
norma_relacionada = models.ForeignKey( norma_relacionada = models.ForeignKey(
NormaJuridica, NormaJuridica,
related_name='norma_relacionada', related_name='norma_relacionada',
on_delete=models.PROTECT,
verbose_name=_('Norma Relacionada')) verbose_name=_('Norma Relacionada'))
tipo_vinculo = models.ForeignKey( tipo_vinculo = models.ForeignKey(
TipoVinculoNormaJuridica, verbose_name=_('Tipo de Vínculo')) TipoVinculoNormaJuridica,
on_delete=models.PROTECT,
verbose_name=_('Tipo de Vínculo'))
class Meta: class Meta:
verbose_name = _('Norma Relacionada') verbose_name = _('Norma Relacionada')

48
sapl/parlamentares/models.py

@ -55,6 +55,7 @@ class SessaoLegislativa(models.Model):
legislatura = models.ForeignKey( legislatura = models.ForeignKey(
Legislatura, Legislatura,
on_delete=models.PROTECT,
verbose_name=Legislatura._meta.verbose_name) verbose_name=Legislatura._meta.verbose_name)
numero = models.PositiveIntegerField(verbose_name=_('Número')) numero = models.PositiveIntegerField(verbose_name=_('Número'))
tipo = models.CharField( tipo = models.CharField(
@ -80,7 +81,9 @@ class SessaoLegislativa(models.Model):
@reversion.register() @reversion.register()
class Coligacao(models.Model): 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')) nome = models.CharField(max_length=50, verbose_name=_('Nome'))
numero_votos = models.PositiveIntegerField( numero_votos = models.PositiveIntegerField(
blank=True, null=True, verbose_name=_('Nº Votos Recebidos')) blank=True, null=True, verbose_name=_('Nº Votos Recebidos'))
@ -130,8 +133,9 @@ class Partido(models.Model):
class ComposicaoColigacao(models.Model): class ComposicaoColigacao(models.Model):
# TODO M2M # TODO M2M
partido = models.ForeignKey(Partido, partido = models.ForeignKey(Partido,
on_delete=models.PROTECT,
verbose_name=_('Partidos da Coligação')) verbose_name=_('Partidos da Coligação'))
coligacao = models.ForeignKey(Coligacao) coligacao = models.ForeignKey(Coligacao, on_delete=models.PROTECT)
class Meta: class Meta:
verbose_name = (_('Composição Coligação')) verbose_name = (_('Composição Coligação'))
@ -213,11 +217,13 @@ class Parlamentar(models.Model):
NivelInstrucao, NivelInstrucao,
blank=True, blank=True,
null=True, null=True,
on_delete=models.PROTECT,
verbose_name=_('Nível Instrução')) verbose_name=_('Nível Instrução'))
situacao_militar = models.ForeignKey( situacao_militar = models.ForeignKey(
SituacaoMilitar, SituacaoMilitar,
blank=True, blank=True,
null=True, null=True,
on_delete=models.PROTECT,
verbose_name=_('Situação Militar')) verbose_name=_('Situação Militar'))
nome_completo = models.CharField( nome_completo = models.CharField(
max_length=50, verbose_name=_('Nome Completo')) max_length=50, verbose_name=_('Nome Completo'))
@ -247,7 +253,8 @@ class Parlamentar(models.Model):
blank=True, blank=True,
verbose_name=_('Endereço Residencial')) verbose_name=_('Endereço Residencial'))
municipio_residencia = models.ForeignKey( 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( cep_residencia = models.CharField(
max_length=9, blank=True, verbose_name=_('CEP')) max_length=9, blank=True, verbose_name=_('CEP'))
telefone_residencia = models.CharField( telefone_residencia = models.CharField(
@ -363,8 +370,9 @@ class Dependente(models.Model):
SEXO_CHOICE = ((FEMININO, _('Feminino')), SEXO_CHOICE = ((FEMININO, _('Feminino')),
(MASCULINO, _('Masculino'))) (MASCULINO, _('Masculino')))
tipo = models.ForeignKey(TipoDependente, verbose_name=_('Tipo')) tipo = models.ForeignKey(TipoDependente, on_delete=models.PROTECT,
parlamentar = models.ForeignKey(Parlamentar) verbose_name=_('Tipo'))
parlamentar = models.ForeignKey(Parlamentar, on_delete=models.PROTECT)
nome = models.CharField(max_length=50, verbose_name=_('Nome')) nome = models.CharField(max_length=50, verbose_name=_('Nome'))
sexo = models.CharField( sexo = models.CharField(
max_length=1, verbose_name=_('Sexo'), choices=SEXO_CHOICE) max_length=1, verbose_name=_('Sexo'), choices=SEXO_CHOICE)
@ -390,8 +398,10 @@ class Dependente(models.Model):
@reversion.register() @reversion.register()
class Filiacao(models.Model): class Filiacao(models.Model):
data = models.DateField(verbose_name=_('Data Filiação')) data = models.DateField(verbose_name=_('Data Filiação'))
parlamentar = models.ForeignKey(Parlamentar) parlamentar = models.ForeignKey(Parlamentar, on_delete=models.PROTECT)
partido = models.ForeignKey(Partido, verbose_name=_('Partido')) partido = models.ForeignKey(Partido,
on_delete=models.PROTECT,
verbose_name=_('Partido'))
data_desfiliacao = models.DateField( data_desfiliacao = models.DateField(
blank=True, null=True, verbose_name=_('Data Desfiliação')) blank=True, null=True, verbose_name=_('Data Desfiliação'))
@ -427,12 +437,14 @@ class TipoAfastamento(models.Model):
@reversion.register() @reversion.register()
class Mandato(models.Model): class Mandato(models.Model):
parlamentar = models.ForeignKey(Parlamentar) parlamentar = models.ForeignKey(Parlamentar, on_delete=models.PROTECT)
tipo_afastamento = models.ForeignKey( tipo_afastamento = models.ForeignKey(
TipoAfastamento, blank=True, null=True) TipoAfastamento, blank=True, null=True, on_delete=models.PROTECT)
legislatura = models.ForeignKey(Legislatura, verbose_name=_('Legislatura')) legislatura = models.ForeignKey(Legislatura, on_delete=models.PROTECT,
verbose_name=_('Legislatura'))
coligacao = models.ForeignKey( 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?????? # TODO what is this field??????
tipo_causa_fim_mandato = models.PositiveIntegerField(blank=True, null=True) tipo_causa_fim_mandato = models.PositiveIntegerField(blank=True, null=True)
data_fim_mandato = models.DateField(verbose_name=_('Fim do Mandato')) data_fim_mandato = models.DateField(verbose_name=_('Fim do Mandato'))
@ -445,7 +457,7 @@ class Mandato(models.Model):
default=True, default=True,
choices=YES_NO_CHOICES, choices=YES_NO_CHOICES,
verbose_name=_('Vereador Titular')) verbose_name=_('Vereador Titular'))
observacao = models.TextField( observacao = models.TextField(
blank=True, verbose_name=_('Observação')) blank=True, verbose_name=_('Observação'))
@ -489,9 +501,10 @@ class CargoMesa(models.Model):
@reversion.register() @reversion.register()
class ComposicaoMesa(models.Model): class ComposicaoMesa(models.Model):
# TODO M2M ???? Ternary????? # TODO M2M ???? Ternary?????
parlamentar = models.ForeignKey(Parlamentar) parlamentar = models.ForeignKey(Parlamentar, on_delete=models.PROTECT)
sessao_legislativa = models.ForeignKey(SessaoLegislativa) sessao_legislativa = models.ForeignKey(SessaoLegislativa,
cargo = models.ForeignKey(CargoMesa) on_delete=models.PROTECT)
cargo = models.ForeignKey(CargoMesa, on_delete=models.PROTECT)
class Meta: class Meta:
verbose_name = _('Ocupação de cargo na Mesa') verbose_name = _('Ocupação de cargo na Mesa')
@ -546,9 +559,10 @@ class Frente(models.Model):
class Votante(models.Model): class Votante(models.Model):
parlamentar = models.ForeignKey( parlamentar = models.ForeignKey(
Parlamentar, verbose_name=_('Parlamentar'), related_name='parlamentar') Parlamentar, verbose_name=_('Parlamentar'),
on_delete=models.PROTECT, related_name='parlamentar')
user = models.ForeignKey( user = models.ForeignKey(
get_settings_auth_user_model(), get_settings_auth_user_model(), on_delete=models.PROTECT,
verbose_name=_('User'), related_name='user') verbose_name=_('User'), related_name='user')
data = models.DateTimeField( data = models.DateTimeField(
verbose_name=_('Data'), auto_now_add=True, verbose_name=_('Data'), auto_now_add=True,

30
sapl/protocoloadm/models.py

@ -64,17 +64,22 @@ class Protocolo(models.Model):
tipo_processo = models.PositiveIntegerField() tipo_processo = models.PositiveIntegerField()
interessado = models.CharField( interessado = models.CharField(
max_length=60, blank=True, verbose_name=_('Interessado')) 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) assunto_ementa = models.TextField(blank=True)
tipo_documento = models.ForeignKey( tipo_documento = models.ForeignKey(
TipoDocumentoAdministrativo, TipoDocumentoAdministrativo,
blank=True, blank=True,
null=True, null=True,
on_delete=models.PROTECT,
verbose_name=_('Tipo de documento')) verbose_name=_('Tipo de documento'))
tipo_materia = models.ForeignKey( tipo_materia = models.ForeignKey(
TipoMateriaLegislativa, TipoMateriaLegislativa,
blank=True, blank=True,
null=True, null=True,
on_delete=models.PROTECT,
verbose_name=_('Tipo Matéria')) verbose_name=_('Tipo Matéria'))
numero_paginas = models.PositiveIntegerField( numero_paginas = models.PositiveIntegerField(
blank=True, null=True, verbose_name=_('Número de Páginas')) blank=True, null=True, verbose_name=_('Número de Páginas'))
@ -103,20 +108,24 @@ class Protocolo(models.Model):
@reversion.register() @reversion.register()
class DocumentoAdministrativo(models.Model): class DocumentoAdministrativo(models.Model):
tipo = models.ForeignKey( tipo = models.ForeignKey(
TipoDocumentoAdministrativo, verbose_name=_('Tipo Documento')) TipoDocumentoAdministrativo, on_delete=models.PROTECT,
verbose_name=_('Tipo Documento'))
numero = models.PositiveIntegerField(verbose_name=_('Número')) numero = models.PositiveIntegerField(verbose_name=_('Número'))
ano = models.PositiveSmallIntegerField(verbose_name=_('Ano'), ano = models.PositiveSmallIntegerField(verbose_name=_('Ano'),
choices=RANGE_ANOS) choices=RANGE_ANOS)
protocolo = models.ForeignKey( protocolo = models.ForeignKey(
Protocolo, Protocolo,
blank=True, blank=True,
null=True, verbose_name=_('Protocolo')) null=True,
on_delete=models.PROTECT,
verbose_name=_('Protocolo'))
data = models.DateField(verbose_name=_('Data')) data = models.DateField(verbose_name=_('Data'))
numero_protocolo = models.PositiveIntegerField( numero_protocolo = models.PositiveIntegerField(
blank=True, null=True, verbose_name=_('Núm. Protocolo')) blank=True, null=True, verbose_name=_('Núm. Protocolo'))
interessado = models.CharField( interessado = models.CharField(
max_length=50, blank=True, verbose_name=_('Interessado')) 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( dias_prazo = models.PositiveIntegerField(
blank=True, null=True, verbose_name=_('Dias Prazo')) blank=True, null=True, verbose_name=_('Dias Prazo'))
data_fim_prazo = models.DateField( data_fim_prazo = models.DateField(
@ -169,9 +178,12 @@ class DocumentoAdministrativo(models.Model):
@reversion.register() @reversion.register()
class DocumentoAcessorioAdministrativo(models.Model): class DocumentoAcessorioAdministrativo(models.Model):
documento = models.ForeignKey(DocumentoAdministrativo) documento = models.ForeignKey(DocumentoAdministrativo,
on_delete=models.PROTECT)
tipo = models.ForeignKey( tipo = models.ForeignKey(
TipoDocumentoAdministrativo, verbose_name=_('Tipo')) TipoDocumentoAdministrativo,
on_delete=models.PROTECT,
verbose_name=_('Tipo'))
nome = models.CharField(max_length=30, verbose_name=_('Nome')) nome = models.CharField(max_length=30, verbose_name=_('Nome'))
arquivo = models.FileField( arquivo = models.FileField(
blank=True, blank=True,
@ -244,19 +256,23 @@ class StatusTramitacaoAdministrativo(models.Model):
class TramitacaoAdministrativo(models.Model): class TramitacaoAdministrativo(models.Model):
status = models.ForeignKey( status = models.ForeignKey(
StatusTramitacaoAdministrativo, StatusTramitacaoAdministrativo,
on_delete=models.PROTECT,
verbose_name=_('Status')) verbose_name=_('Status'))
documento = models.ForeignKey(DocumentoAdministrativo) documento = models.ForeignKey(DocumentoAdministrativo,
on_delete=models.PROTECT)
data_tramitacao = models.DateField( data_tramitacao = models.DateField(
verbose_name=_('Data Tramitação')) verbose_name=_('Data Tramitação'))
unidade_tramitacao_local = models.ForeignKey( unidade_tramitacao_local = models.ForeignKey(
UnidadeTramitacao, UnidadeTramitacao,
related_name='adm_tramitacoes_origem', related_name='adm_tramitacoes_origem',
on_delete=models.PROTECT,
verbose_name=_('Unidade Local')) verbose_name=_('Unidade Local'))
data_encaminhamento = models.DateField( data_encaminhamento = models.DateField(
blank=True, null=True, verbose_name=_('Data Encaminhamento')) blank=True, null=True, verbose_name=_('Data Encaminhamento'))
unidade_tramitacao_destino = models.ForeignKey( unidade_tramitacao_destino = models.ForeignKey(
UnidadeTramitacao, UnidadeTramitacao,
related_name='adm_tramitacoes_destino', related_name='adm_tramitacoes_destino',
on_delete=models.PROTECT,
verbose_name=_('Unidade Destino')) verbose_name=_('Unidade Destino'))
texto = models.TextField( texto = models.TextField(
blank=True, verbose_name=_('Texto da Ação')) blank=True, verbose_name=_('Texto da Ação'))

83
sapl/sessao/models.py

@ -32,11 +32,16 @@ class CargoBancada(models.Model):
@reversion.register() @reversion.register()
class Bancada(models.Model): 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( nome = models.CharField(
max_length=80, max_length=80,
verbose_name=_('Nome da Bancada')) 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')) verbose_name=_('Partido'))
data_criacao = models.DateField(blank=True, null=True, data_criacao = models.DateField(blank=True, null=True,
verbose_name=_('Data Criação')) verbose_name=_('Data Criação'))
@ -104,10 +109,16 @@ class SessaoPlenaria(models.Model):
# TODO analyze querying all hosted databases ! # TODO analyze querying all hosted databases !
cod_andamento_sessao = models.PositiveIntegerField(blank=True, null=True) 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( sessao_legislativa = models.ForeignKey(
SessaoLegislativa, verbose_name=_('Sessão Legislativa')) SessaoLegislativa,
legislatura = models.ForeignKey(Legislatura, verbose_name=_('Legislatura')) 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 # XXX seems to be empty
data_inicio = models.DateField(verbose_name=_('Abertura')) data_inicio = models.DateField(verbose_name=_('Abertura'))
hora_inicio = models.CharField( hora_inicio = models.CharField(
@ -209,8 +220,10 @@ class AbstractOrdemDia(models.Model):
(3, 'secreta', (('Secreta'))), (3, 'secreta', (('Secreta'))),
) )
sessao_plenaria = models.ForeignKey(SessaoPlenaria) sessao_plenaria = models.ForeignKey(SessaoPlenaria,
on_delete=models.PROTECT)
materia = models.ForeignKey(MateriaLegislativa, materia = models.ForeignKey(MateriaLegislativa,
on_delete=models.PROTECT,
verbose_name=_('Matéria')) verbose_name=_('Matéria'))
data_ordem = models.DateField(verbose_name=_('Data da Sessão')) data_ordem = models.DateField(verbose_name=_('Data da Sessão'))
observacao = models.TextField( observacao = models.TextField(
@ -254,8 +267,9 @@ class TipoExpediente(models.Model):
@reversion.register() @reversion.register()
class ExpedienteSessao(models.Model): # ExpedienteSessaoPlenaria class ExpedienteSessao(models.Model): # ExpedienteSessaoPlenaria
sessao_plenaria = models.ForeignKey(SessaoPlenaria) sessao_plenaria = models.ForeignKey(SessaoPlenaria,
tipo = models.ForeignKey(TipoExpediente) on_delete=models.PROTECT)
tipo = models.ForeignKey(TipoExpediente, on_delete=models.PROTECT)
conteudo = models.TextField( conteudo = models.TextField(
blank=True, verbose_name=_('Conteúdo do expediente')) blank=True, verbose_name=_('Conteúdo do expediente'))
@ -269,9 +283,10 @@ class ExpedienteSessao(models.Model): # ExpedienteSessaoPlenaria
@reversion.register() @reversion.register()
class IntegranteMesa(models.Model): # MesaSessaoPlenaria class IntegranteMesa(models.Model): # MesaSessaoPlenaria
sessao_plenaria = models.ForeignKey(SessaoPlenaria) sessao_plenaria = models.ForeignKey(SessaoPlenaria,
cargo = models.ForeignKey(CargoMesa) on_delete=models.PROTECT)
parlamentar = models.ForeignKey(Parlamentar) cargo = models.ForeignKey(CargoMesa, on_delete=models.PROTECT)
parlamentar = models.ForeignKey(Parlamentar, on_delete=models.PROTECT)
class Meta: class Meta:
verbose_name = _('Participação em Mesa de Sessão Plenaria') verbose_name = _('Participação em Mesa de Sessão Plenaria')
@ -283,8 +298,11 @@ class IntegranteMesa(models.Model): # MesaSessaoPlenaria
@reversion.register() @reversion.register()
class AbstractOrador(models.Model): # Oradores class AbstractOrador(models.Model): # Oradores
sessao_plenaria = models.ForeignKey(SessaoPlenaria) sessao_plenaria = models.ForeignKey(SessaoPlenaria,
parlamentar = models.ForeignKey(Parlamentar, verbose_name=_('Parlamentar')) on_delete=models.PROTECT)
parlamentar = models.ForeignKey(Parlamentar,
on_delete=models.PROTECT,
verbose_name=_('Parlamentar'))
numero_ordem = models.PositiveIntegerField( numero_ordem = models.PositiveIntegerField(
verbose_name=_('Ordem de pronunciamento')) verbose_name=_('Ordem de pronunciamento'))
url_discurso = models.URLField( url_discurso = models.URLField(
@ -328,8 +346,9 @@ class OrdemDia(AbstractOrdemDia):
@reversion.register() @reversion.register()
class PresencaOrdemDia(models.Model): # OrdemDiaPresenca class PresencaOrdemDia(models.Model): # OrdemDiaPresenca
sessao_plenaria = models.ForeignKey(SessaoPlenaria) sessao_plenaria = models.ForeignKey(SessaoPlenaria,
parlamentar = models.ForeignKey(Parlamentar) on_delete=models.PROTECT)
parlamentar = models.ForeignKey(Parlamentar, on_delete=models.PROTECT)
class Meta: class Meta:
verbose_name = _('Presença da Ordem do Dia') verbose_name = _('Presença da Ordem do Dia')
@ -358,10 +377,18 @@ class TipoResultadoVotacao(models.Model):
@reversion.register() @reversion.register()
class RegistroVotacao(models.Model): class RegistroVotacao(models.Model):
tipo_resultado_votacao = models.ForeignKey( tipo_resultado_votacao = models.ForeignKey(
TipoResultadoVotacao, verbose_name=_('Resultado da Votação')) TipoResultadoVotacao,
materia = models.ForeignKey(MateriaLegislativa) on_delete=models.PROTECT,
ordem = models.ForeignKey(OrdemDia, blank=True, null=True) verbose_name=_('Resultado da Votação'))
expediente = models.ForeignKey(ExpedienteMateria, blank=True, null=True) 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_sim = models.PositiveIntegerField(verbose_name=_('Sim'))
numero_votos_nao = models.PositiveIntegerField(verbose_name=_('Não')) numero_votos_nao = models.PositiveIntegerField(verbose_name=_('Não'))
numero_abstencoes = models.PositiveIntegerField( numero_abstencoes = models.PositiveIntegerField(
@ -383,8 +410,8 @@ class RegistroVotacao(models.Model):
@reversion.register() @reversion.register()
class VotoParlamentar(models.Model): # RegistroVotacaoParlamentar class VotoParlamentar(models.Model): # RegistroVotacaoParlamentar
votacao = models.ForeignKey(RegistroVotacao) votacao = models.ForeignKey(RegistroVotacao, on_delete=models.PROTECT)
parlamentar = models.ForeignKey(Parlamentar) parlamentar = models.ForeignKey(Parlamentar, on_delete=models.PROTECT)
# XXX change to restricted choices # XXX change to restricted choices
voto = models.CharField(max_length=10) voto = models.CharField(max_length=10)
@ -399,13 +426,14 @@ class VotoParlamentar(models.Model): # RegistroVotacaoParlamentar
@reversion.register() @reversion.register()
class VotoNominal(models.Model): 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) voto = models.CharField(verbose_name=_('Voto'), max_length=10)
sessao = models.ForeignKey(SessaoPlenaria) sessao = models.ForeignKey(SessaoPlenaria, on_delete=models.PROTECT)
materia = models.ForeignKey(MateriaLegislativa) 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) ip = models.CharField(verbose_name=_('IP'), max_length=30)
data_hora = models.DateTimeField( data_hora = models.DateTimeField(
verbose_name=_('Data/Hora'), auto_now_add=True) verbose_name=_('Data/Hora'), auto_now_add=True)
@ -420,8 +448,9 @@ class VotoNominal(models.Model):
@reversion.register() @reversion.register()
class SessaoPlenariaPresenca(models.Model): class SessaoPlenariaPresenca(models.Model):
sessao_plenaria = models.ForeignKey(SessaoPlenaria) sessao_plenaria = models.ForeignKey(SessaoPlenaria,
parlamentar = models.ForeignKey(Parlamentar) on_delete=models.PROTECT)
parlamentar = models.ForeignKey(Parlamentar, on_delete=models.PROTECT)
data_sessao = models.DateField(blank=True, null=True) data_sessao = models.DateField(blank=True, null=True)
class Meta: class Meta:

Loading…
Cancel
Save