Browse Source

alter models compilacao and norma

pull/6/head
LeandroRoberto 9 years ago
parent
commit
0b7c679c62
  1. 45
      compilacao/insert_inicial_TipoDispositivo.sql
  2. 207
      compilacao/migrations/0001_initial.py
  3. 75
      compilacao/models.py
  4. 35
      norma/migrations/0003_auto_20150906_0239.py
  5. 9
      norma/models.py

45
compilacao/insert_inicial_TipoDispositivo.sql

@ -0,0 +1,45 @@

INSERT INTO compilacao_tipodispositivo
(id,
nome,
class_css,
rotulo_prefixo_html,
rotulo_prefixo_texto,
rotulo_ordinal,
rotulo_separadores_variacao,
rotulo_sufixo_texto,
rotulo_sufixo_html,
texto_prefixo_html,
texto_sufixo_html,
nota_automatica_prefixo_html,
nota_automatica_sufixo_html,
contagem_continua,
formato_variacao0,
formato_variacao1,
formato_variacao2,
formato_variacao3,
formato_variacao4,
formato_variacao5) VALUES
(11, 'Anexo', 'anexo', '', 'Anexo', 0, '-----', '', '<br>', '', '<br>', '', '', False, 'I', '1', '1', '1', '1', '1'),
(12, 'Parte', 'parte', '', 'Parte', 0, '-----', '', '<br>', '', '<br>', '', '', False, 'I', '1', '1', '1', '1', '1'),
(13, 'Livro', 'livro', '', 'Livro', 0, '-----', '', '<br>', '', '<br>', '', '', False, 'I', '1', '1', '1', '1', '1'),
(15, 'Capítulo', 'capitulo', '', 'Capítulo', 0, '-----', '', '<br>', '', '<br>', '', '', False, 'I', '1', '1', '1', '1', '1'),
(16, 'Seção', 'secao', '', 'Seção', 0, '-----', '', '<br>', '', '<br>', '', '', False, 'I', '1', '1', '1', '1', '1'),
(17, 'SubSeção', 'subsecao', '', 'SubSeção', 0, '-----', '', '<br>', '', '<br>', '', '', False, '1', '1', '1', '1', '1', '1'),
(18, 'Item de Seção', 'itemsecao', '', 'Item', 0, '-----', '', '<br>', '', '<br>', '', '', False, '1', '1', '1', '1', '1', '1'),
(19, 'Artigo', 'artigo', '', 'Art.', 9, '-----', '', '&nbsp;&ndash;&nbsp;', '', '', '', '', True, '1', '1', '1', '1', '1', '1'),
(21, 'Parágrafo', 'paragrafo', '', '§;Parágrafo Único', 9, '-----', '', '&nbsp;&ndash;&nbsp;', '', '', '', '', False, '1', '1', '1', '1', '1', '1'),
(22, 'Inciso', 'inciso', '', '', 0, '.....', '', '&nbsp;&ndash;&nbsp;', '', '', '', '', False, 'I', '1', '1', '1', '1', '1'),
(23, 'Alinea', 'alinea', '', '', 0, '.....', '', '&nbsp;&ndash;&nbsp;', '', '', '', '', False, 'a', '1', '1', '1', '1', '1'),
(24, 'Item', 'item', '', '', 0, '.....', '', '&nbsp;&ndash;&nbsp;', '', '', '', '', False, '1', '1', '1', '1', '1', '1'),
(25, 'Disposições Preliminares', 'disp_preliminares', '', 'Disposições Preliminares', 0, '-----', '', '<br>', '', '<br>', '', '', False, 'N', '1', '1', '1', '1', '1'),
(26, 'Disposições Gerais', 'disp_gerais', '', 'Disposições Gerais', 0, '-----', '', '<br>', '', '<br>', '', '', False, 'N', '1', '1', '1', '1', '1'),
(27, 'Disposições Transitórias', 'disp_transitorias', '', 'Disposições Transitórias', 0, '-----', '', '<br>', '', '<br>', '', '', False, 'N', '1', '1', '1', '1', '1'),
(28, 'Disposições Finais', 'disp_finais', '', 'Disposições Finais', 0, '-----', '', '<br>', '', '<br>', '', '', False, 'N', '1', '1', '1', '1', '1'),
(14, 'Título', 'titulo', '', 'Título', 0, '-----', '', '<br>', '', '<br>', '', '', False, 'I', '1', '1', '1', '1', '1'),
(1, 'Articulação', 'articulacao', '', '', 0, '.....', '', '', '', '', '', '', True, '1', '1', '1', '1', '1', '1'),
(4, 'Bloco Alteração', 'bloco_alteracao', '', '', 0, '.....', '', '', '', '', '', '', True, '1', '1', '1', '1', '1', '1'),
(5, 'Omissis', 'omissis', '', '', 0, '.....', '', '', '', '', '', '', False, '1', '1', '1', '1', '1', '1'),
(6, 'Texto Não Estruturado', 'texto_n_estruturado', '', '', 0, '.....', '', '', '', '', '', '',False, '1', '1', '1', '1', '1', '1'),
(2, 'Ementa', 'ementa', '', '', 0, '.....', '', '', '', '', '', '', False, 'N', '1', '1', '1', '1', '1'),
(20, 'Caput', 'caput', '', '', 0, '', '', '', '', '', '', '', False, 'N', 'N', 'N', 'N', 'N', 'N');

207
compilacao/migrations/0001_initial.py

@ -0,0 +1,207 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
from django.conf import settings
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('norma', '0003_auto_20150906_0239'),
]
operations = [
migrations.CreateModel(
name='Dispositivo',
fields=[
('id', models.AutoField(auto_created=True, verbose_name='ID', primary_key=True, serialize=False)),
('ordem', models.PositiveIntegerField(verbose_name='Ordem de Renderização', default=0)),
('ordem_bloco_atualizador', models.PositiveIntegerField(verbose_name='Ordem de Renderização no Bloco Atualizador', default=0)),
('nivel', models.PositiveIntegerField(blank=True, null=True, verbose_name='Nível Estrutural', default=0)),
('dispositivo0', models.PositiveIntegerField(verbose_name='Número do Dispositivo', default=0)),
('dispositivo1', models.PositiveIntegerField(blank=True, null=True, verbose_name='Primeiro Nível de Variação', default=0)),
('dispositivo2', models.PositiveIntegerField(blank=True, null=True, verbose_name='Segundo Nível de Variação', default=0)),
('dispositivo3', models.PositiveIntegerField(blank=True, null=True, verbose_name='Terceiro Nível de Variação', default=0)),
('dispositivo4', models.PositiveIntegerField(blank=True, null=True, verbose_name='Quarto Nível de Variação', default=0)),
('dispositivo5', models.PositiveIntegerField(blank=True, null=True, verbose_name='Quinto Nível de Variação', default=0)),
('rotulo', models.CharField(blank=True, max_length=50, verbose_name='Rótulo', default='')),
('texto', models.TextField(blank=True, verbose_name='Texto', default='')),
('texto_atualizador', models.TextField(blank=True, verbose_name='Texto no Dispositivo Atualizador', default='')),
('inicio_vigencia', models.DateField(verbose_name='Início de Vigência')),
('fim_vigencia', models.DateField(blank=True, null=True, verbose_name='Fim de Vigência')),
('inicio_eficacia', models.DateField(verbose_name='Início de Eficácia')),
('fim_eficacia', models.DateField(blank=True, null=True, verbose_name='Fim de Eficácia')),
('inconstitucionalidade', models.BooleanField(verbose_name='Inconstitucionalidade', default=False, choices=[(True, 'Sim'), (False, 'Não')])),
('visibilidade', models.BooleanField(verbose_name='Visibilidade na Norma Publicada', default=False, choices=[(True, 'Sim'), (False, 'Não')])),
('timestamp', models.DateTimeField()),
('dispositivo_atualizador', models.ForeignKey(blank=True, null=True, to='compilacao.Dispositivo', verbose_name='Dispositivo Atualizador', default=None, related_name='dispositivo_dispositivo_atualizador')),
('dispositivo_pai', models.ForeignKey(blank=True, null=True, to='compilacao.Dispositivo', verbose_name='Dispositivo Pai', default=None, related_name='dispositivo_dispositivo_pai')),
('dispositivo_subsequente', models.ForeignKey(blank=True, null=True, to='compilacao.Dispositivo', verbose_name='Dispositivo Subsequente', default=None, related_name='dispositivo_dispositivo_subsequente')),
('dispositivo_substituido', models.ForeignKey(blank=True, null=True, to='compilacao.Dispositivo', verbose_name='Dispositivo Substituido', default=None, related_name='dispositivo_dispositivo_substituido')),
('dispositivo_vigencia', models.ForeignKey(blank=True, null=True, to='compilacao.Dispositivo', verbose_name='Dispositivo de Vigência', default=None, related_name='dispositivo_dispositivo_vigencia')),
('norma', models.ForeignKey(to='norma.NormaJuridica', verbose_name='Norma Jurídica')),
('norma_publicada', models.ForeignKey(blank=True, null=True, to='norma.NormaJuridica', verbose_name='Norma Jurídica Publicada', default=None, related_name='dispositivo_norma_publicada')),
],
options={
'verbose_name': 'Dispositivo',
'verbose_name_plural': 'Dispositivos',
},
),
migrations.CreateModel(
name='Nota',
fields=[
('id', models.AutoField(auto_created=True, verbose_name='ID', primary_key=True, serialize=False)),
('texto', models.TextField(verbose_name='Texto da Nota')),
('url_externa', models.CharField(blank=True, max_length=1024, verbose_name='Url externa')),
('data_criacao', models.DateTimeField(verbose_name='Data de Criação')),
('publicacao', models.DateTimeField(verbose_name='Data de Publicação')),
('efetifidade', models.DateTimeField(verbose_name='Data de Efeito')),
('publicidade', models.PositiveSmallIntegerField(verbose_name='Nível de Publicidade', choices=[(1, 'Nota Privada'), (2, 'Nota Setorial'), (3, 'Nota Institucional'), (4, 'Nota Pública')])),
('dispositivo', models.ForeignKey(to='compilacao.Dispositivo', verbose_name='Dispositivo da Nota')),
('owner', models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name='Dono da Nota')),
],
options={
'verbose_name': 'Nota',
'verbose_name_plural': 'Notas',
},
),
migrations.CreateModel(
name='Publicacao',
fields=[
('id', models.AutoField(auto_created=True, verbose_name='ID', primary_key=True, serialize=False)),
('publicacao', models.DateTimeField(verbose_name='Data de Publicação')),
('pagina_inicio', models.PositiveIntegerField(blank=True, null=True, verbose_name='Pg. Início')),
('pagina_fim', models.PositiveIntegerField(blank=True, null=True, verbose_name='Pg. Fim')),
('timestamp', models.DateTimeField()),
('norma', models.ForeignKey(to='norma.NormaJuridica', verbose_name='Norma Jurídica')),
],
options={
'verbose_name': 'Publicação',
'verbose_name_plural': 'Publicações',
},
),
migrations.CreateModel(
name='TipoDispositivo',
fields=[
('id', models.AutoField(auto_created=True, verbose_name='ID', primary_key=True, serialize=False)),
('nome', models.CharField(max_length=50, verbose_name='Nome', unique=True)),
('class_css', models.CharField(max_length=20, verbose_name='Classe CSS')),
('rotulo_prefixo_html', models.CharField(blank=True, max_length=100, verbose_name='Prefixo html do rótulo')),
('rotulo_prefixo_texto', models.CharField(blank=True, max_length=30, verbose_name='Prefixo de construção do rótulo')),
('rotulo_ordinal', models.IntegerField(verbose_name='Tipo de número do rótulo')),
('rotulo_separadores_variacao', models.CharField(blank=True, max_length=5, verbose_name='Separadores das Variações')),
('rotulo_sufixo_texto', models.CharField(blank=True, max_length=30, verbose_name='Sufixo de construção do rótulo')),
('rotulo_sufixo_html', models.CharField(blank=True, max_length=100, verbose_name='Sufixo html do rótulo')),
('texto_prefixo_html', models.CharField(blank=True, max_length=100, verbose_name='Prefixo html do texto')),
('texto_sufixo_html', models.CharField(blank=True, max_length=100, verbose_name='Sufixo html do texto')),
('nota_automatica_prefixo_html', models.CharField(blank=True, max_length=100, verbose_name='Prefixo html da nota automática')),
('nota_automatica_sufixo_html', models.CharField(blank=True, max_length=100, verbose_name='Sufixo html da nota automática')),
('contagem_continua', models.BooleanField(verbose_name='Contagem contínua', choices=[(True, 'Sim'), (False, 'Não')])),
('formato_variacao0', models.CharField(max_length=1, verbose_name='Formato da Numeração', default='1', choices=[('1', '(1) Numérico'), ('I', '(I) Romano Maiúsculo'), ('i', '(i) Romano Minúsculo'), ('A', '(A) Alfabético Maiúsculo'), ('a', '(a) Alfabético Minúsculo'), ('*', 'Tópico - Sem contagem'), ('N', 'Sem renderização')])),
('formato_variacao1', models.CharField(max_length=1, verbose_name='Formato da Variação 1', default='1', choices=[('1', '(1) Numérico'), ('I', '(I) Romano Maiúsculo'), ('i', '(i) Romano Minúsculo'), ('A', '(A) Alfabético Maiúsculo'), ('a', '(a) Alfabético Minúsculo'), ('*', 'Tópico - Sem contagem'), ('N', 'Sem renderização')])),
('formato_variacao2', models.CharField(max_length=1, verbose_name='Formato da Variação 2', default='1', choices=[('1', '(1) Numérico'), ('I', '(I) Romano Maiúsculo'), ('i', '(i) Romano Minúsculo'), ('A', '(A) Alfabético Maiúsculo'), ('a', '(a) Alfabético Minúsculo'), ('*', 'Tópico - Sem contagem'), ('N', 'Sem renderização')])),
('formato_variacao3', models.CharField(max_length=1, verbose_name='Formato da Variação 3', default='1', choices=[('1', '(1) Numérico'), ('I', '(I) Romano Maiúsculo'), ('i', '(i) Romano Minúsculo'), ('A', '(A) Alfabético Maiúsculo'), ('a', '(a) Alfabético Minúsculo'), ('*', 'Tópico - Sem contagem'), ('N', 'Sem renderização')])),
('formato_variacao4', models.CharField(max_length=1, verbose_name='Formato da Variação 4', default='1', choices=[('1', '(1) Numérico'), ('I', '(I) Romano Maiúsculo'), ('i', '(i) Romano Minúsculo'), ('A', '(A) Alfabético Maiúsculo'), ('a', '(a) Alfabético Minúsculo'), ('*', 'Tópico - Sem contagem'), ('N', 'Sem renderização')])),
('formato_variacao5', models.CharField(max_length=1, verbose_name='Formato da Variação 5', default='1', choices=[('1', '(1) Numérico'), ('I', '(I) Romano Maiúsculo'), ('i', '(i) Romano Minúsculo'), ('A', '(A) Alfabético Maiúsculo'), ('a', '(a) Alfabético Minúsculo'), ('*', 'Tópico - Sem contagem'), ('N', 'Sem renderização')])),
],
options={
'verbose_name': 'Tipo de Dispositivo',
'verbose_name_plural': 'Tipos de Dispositivo',
},
),
migrations.CreateModel(
name='TipoNota',
fields=[
('id', models.AutoField(auto_created=True, verbose_name='ID', primary_key=True, serialize=False)),
('sigla', models.CharField(max_length=10, verbose_name='Sigla', unique=True)),
('nome', models.CharField(max_length=50, verbose_name='Nome')),
('modelo', models.TextField(blank=True, verbose_name='Modelo')),
],
options={
'verbose_name': 'Tipo de Nota',
'verbose_name_plural': 'Tipos de Nota',
},
),
migrations.CreateModel(
name='TipoPublicacao',
fields=[
('id', models.AutoField(auto_created=True, verbose_name='ID', primary_key=True, serialize=False)),
('sigla', models.CharField(max_length=10, verbose_name='Sigla', unique=True)),
('nome', models.CharField(max_length=50, verbose_name='Nome')),
],
options={
'verbose_name': 'Tipo de Publicação',
'verbose_name_plural': 'Tipos de Publicação',
},
),
migrations.CreateModel(
name='TipoVide',
fields=[
('id', models.AutoField(auto_created=True, verbose_name='ID', primary_key=True, serialize=False)),
('sigla', models.CharField(max_length=10, verbose_name='Sigla', unique=True)),
('nome', models.CharField(max_length=50, verbose_name='Nome')),
],
options={
'verbose_name': 'Tipo de Vide',
'verbose_name_plural': 'Tipos de Vide',
},
),
migrations.CreateModel(
name='VeiculoPublicacao',
fields=[
('id', models.AutoField(auto_created=True, verbose_name='ID', primary_key=True, serialize=False)),
('sigla', models.CharField(max_length=10, verbose_name='Sigla', unique=True)),
('nome', models.CharField(max_length=60, verbose_name='Nome')),
],
options={
'verbose_name': 'Veículo de Publicação',
'verbose_name_plural': 'Veículos de Publicação',
},
),
migrations.CreateModel(
name='Vide',
fields=[
('id', models.AutoField(auto_created=True, verbose_name='ID', primary_key=True, serialize=False)),
('data_criacao', models.DateTimeField(verbose_name='Data de Criação')),
('texto', models.TextField(verbose_name='Texto do Vide')),
('dispositivo_base', models.ForeignKey(to='compilacao.Dispositivo', verbose_name='Dispositivo Base', related_name='vide_dispositivo_base')),
('dispositivo_ref', models.ForeignKey(to='compilacao.Dispositivo', verbose_name='Dispositivo Referido', related_name='vide_dispositivo_ref')),
('tipo', models.ForeignKey(to='compilacao.TipoVide', verbose_name='Tipo do Vide')),
],
options={
'verbose_name': 'Vide',
'verbose_name_plural': 'Vides',
},
),
migrations.AddField(
model_name='publicacao',
name='tipo_publicacao',
field=models.ForeignKey(to='compilacao.TipoPublicacao', verbose_name='Tipo de Publicação'),
),
migrations.AddField(
model_name='publicacao',
name='veiculo_publicacao',
field=models.ForeignKey(to='compilacao.VeiculoPublicacao', verbose_name='Veículo de Publicação'),
),
migrations.AddField(
model_name='nota',
name='tipo',
field=models.ForeignKey(to='compilacao.TipoNota', verbose_name='Tipo da Nota'),
),
migrations.AddField(
model_name='dispositivo',
name='publicacao',
field=models.ForeignKey(blank=True, null=True, to='compilacao.Publicacao', verbose_name='Publicação', default=None),
),
migrations.AddField(
model_name='dispositivo',
name='tipo_dispositivo',
field=models.ForeignKey(to='compilacao.TipoDispositivo', verbose_name='Tipo do Dispositivo'),
),
migrations.AlterUniqueTogether(
name='dispositivo',
unique_together=set([('norma', 'dispositivo0', 'dispositivo1', 'dispositivo2', 'dispositivo3', 'dispositivo4', 'dispositivo5', 'tipo_dispositivo', 'dispositivo_pai', 'publicacao'), ('norma', 'ordem')]),
),
]

75
compilacao/models.py

@ -18,7 +18,7 @@ class TipoNota(models.Model):
verbose_name_plural = _('Tipos de Nota')
def __str__(self):
return self.sigla + ' - ' + self.nome
return '%s: %s' % (self.sigla, self.nome)
class TipoVide(models.Model):
@ -31,7 +31,7 @@ class TipoVide(models.Model):
verbose_name_plural = _('Tipos de Vide')
def __str__(self):
return self.sigla + ' - ' + self.nome
return '%s: %s' % (self.sigla, self.nome)
class TipoDispositivo(models.Model):
@ -43,41 +43,58 @@ class TipoDispositivo(models.Model):
FNC8 = '*'
FNCN = 'N'
FORMATO_NUMERACAO_CHOICES = (
(FNC1, _('Numérico')),
(FNCI, _('Romano Maiúsculo')),
(FNCi, _('Romano Minúsculo')),
(FNCA, _('Alfabético Maiúsculo')),
(FNCa, _('Alfabético Minúsculo')),
(FNC8, _('Tópico sem contagem')),
(FNCN, _('Sem renderização de Contagem')),
(FNC1, _('(1) Numérico')),
(FNCI, _('(I) Romano Maiúsculo')),
(FNCi, _('(i) Romano Minúsculo')),
(FNCA, _('(A) Alfabético Maiúsculo')),
(FNCa, _('(a) Alfabético Minúsculo')),
(FNC8, _('Tópico - Sem contagem')),
(FNCN, _('Sem renderização')),
)
nome = models.CharField(
max_length=50, unique=True, verbose_name=_('Nome'))
class_css = models.CharField(
max_length=20, verbose_name=_('Classe CSS'))
max_length=20,
verbose_name=_('Classe CSS'))
rotulo_prefixo_html = models.CharField(
max_length=100, verbose_name=_('Prefixo html do rótulo'))
blank=True,
max_length=100,
verbose_name=_('Prefixo html do rótulo'))
rotulo_prefixo_texto = models.CharField(
blank=True,
max_length=30,
verbose_name=_('Prefixo de construção do rótulo'))
rotulo_ordinal = models.IntegerField(
verbose_name=_('Tipo de número do rótulo'))
rotulo_separadores_variacao = models.CharField(
max_length=5, verbose_name=_('Separadores das Variações'))
blank=True,
max_length=5,
verbose_name=_('Separadores das Variações'))
rotulo_sufixo_texto = models.CharField(
blank=True,
max_length=30,
verbose_name=_('Sufixo de construção do rótulo'))
rotulo_sufixo_html = models.CharField(
max_length=100, verbose_name=_('Sufixo html do rótulo'))
blank=True,
max_length=100,
verbose_name=_('Sufixo html do rótulo'))
texto_prefixo_html = models.CharField(
max_length=100, verbose_name=_('Prefixo html do texto'))
blank=True,
max_length=100,
verbose_name=_('Prefixo html do texto'))
texto_sufixo_html = models.CharField(
max_length=100, verbose_name=_('Sufixo html do texto'))
blank=True,
max_length=100,
verbose_name=_('Sufixo html do texto'))
nota_automatica_prefixo_html = models.CharField(
max_length=100, verbose_name=_('Prefixo html da nota automática'))
blank=True,
max_length=100,
verbose_name=_('Prefixo html da nota automática'))
nota_automatica_sufixo_html = models.CharField(
max_length=100, verbose_name=_('Sufixo html da nota automática'))
blank=True,
max_length=100,
verbose_name=_('Sufixo html da nota automática'))
contagem_continua = models.BooleanField(
choices=YES_NO_CHOICES, verbose_name=_('Contagem contínua'))
formato_variacao0 = models.CharField(
@ -142,7 +159,7 @@ class VeiculoPublicacao(models.Model):
verbose_name_plural = _('Veículos de Publicação')
def __str__(self):
return self.sigla + ' - ' + self.nome
return '%s: %s' % (self.sigla, self.nome)
class Publicacao(models.Model):
@ -164,7 +181,7 @@ class Publicacao(models.Model):
verbose_name_plural = _('Publicações')
def __str__(self):
return self.veiculo_publicacao.nome + ": " + str(self.publicacao)
return '%s: %s' % (self.veiculo_publicacao, self.publicacao)
class Dispositivo(models.Model):
@ -304,6 +321,11 @@ class Dispositivo(models.Model):
'publicacao',),
)
def __str__(self):
return '%(rotulo)s - %(norma)s' % {
'rotulo': self.rotulo,
'norma': self.norma}
class Vide(models.Model):
data_criacao = models.DateTimeField(verbose_name=_('Data de Criação'))
@ -324,6 +346,9 @@ class Vide(models.Model):
verbose_name = _('Vide')
verbose_name_plural = _('Vides')
def __str__(self):
return _('Vide %s') % self.texto
class Nota(models.Model):
NPRIV = 1
@ -358,5 +383,15 @@ class Nota(models.Model):
owner = models.ForeignKey(User, verbose_name=_('Dono da Nota'))
publicidade = models.PositiveSmallIntegerField(
choice=PUBLICIDADE_CHOICES,
choices=PUBLICIDADE_CHOICES,
verbose_name=_('Nível de Publicidade'))
class Meta:
verbose_name = _('Nota')
verbose_name_plural = _('Notas')
def __str__(self):
return '%s: %s' % (
self.tipo,
self.PUBLICIDADE_CHOICES[self.publicidade][1]
)

35
norma/migrations/0003_auto_20150906_0239.py

@ -0,0 +1,35 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('norma', '0002_auto_20150729_1717'),
]
operations = [
migrations.CreateModel(
name='AssuntoNormaRelationship',
fields=[
('id', models.AutoField(auto_created=True, verbose_name='ID', primary_key=True, serialize=False)),
('assunto', models.ForeignKey(to='norma.AssuntoNorma')),
],
),
migrations.RemoveField(
model_name='normajuridica',
name='assunto',
),
migrations.AddField(
model_name='assuntonormarelationship',
name='norma',
field=models.ForeignKey(to='norma.NormaJuridica'),
),
migrations.AddField(
model_name='normajuridica',
name='assuntos',
field=models.ManyToManyField(to='norma.AssuntoNorma', through='norma.AssuntoNormaRelationship'),
),
]

9
norma/models.py

@ -87,7 +87,9 @@ class NormaJuridica(models.Model):
complemento = models.NullBooleanField(
blank=True, verbose_name=_('Complementar ?'))
# XXX was a CharField (attention on migrate)
assunto = models.ForeignKey(AssuntoNorma)
assuntos = models.ManyToManyField(
AssuntoNorma,
through='AssuntoNormaRelationship')
data_vigencia = models.DateField(blank=True, null=True)
timestamp = models.DateTimeField()
@ -103,6 +105,11 @@ class NormaJuridica(models.Model):
'ano': self.ano}
class AssuntoNormaRelationship(models.Model):
assunto = models.ForeignKey(AssuntoNorma)
norma = models.ForeignKey(NormaJuridica)
class LegislacaoCitada(models.Model):
materia = models.ForeignKey(MateriaLegislativa)
norma = models.ForeignKey(NormaJuridica)

Loading…
Cancel
Save