diff --git a/compilacao/insert_inicial_TipoDispositivo.sql b/compilacao/insert_inicial_TipoDispositivo.sql
index d3444ffa6..987e0c81f 100644
--- a/compilacao/insert_inicial_TipoDispositivo.sql
+++ b/compilacao/insert_inicial_TipoDispositivo.sql
@@ -1,45 +1,27 @@
-
-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, '-----', '', '
', '', '
', '', '', False, 'I', '1', '1', '1', '1', '1'),
-(12, 'Parte', 'parte', '', 'Parte', 0, '-----', '', '
', '', '
', '', '', False, 'I', '1', '1', '1', '1', '1'),
-(13, 'Livro', 'livro', '', 'Livro', 0, '-----', '', '
', '', '
', '', '', False, 'I', '1', '1', '1', '1', '1'),
-(15, 'Capítulo', 'capitulo', '', 'Capítulo', 0, '-----', '', '
', '', '
', '', '', False, 'I', '1', '1', '1', '1', '1'),
-(16, 'Seção', 'secao', '', 'Seção', 0, '-----', '', '
', '', '
', '', '', False, 'I', '1', '1', '1', '1', '1'),
-(17, 'SubSeção', 'subsecao', '', 'SubSeção', 0, '-----', '', '
', '', '
', '', '', False, '1', '1', '1', '1', '1', '1'),
-(18, 'Item de Seção', 'itemsecao', '', 'Item', 0, '-----', '', '
', '', '
', '', '', False, '1', '1', '1', '1', '1', '1'),
-(19, 'Artigo', 'artigo', '', 'Art.', 9, '-----', '', ' – ', '', '', '', '', True, '1', '1', '1', '1', '1', '1'),
-(21, 'Parágrafo', 'paragrafo', '', '§;Parágrafo Único', 9, '-----', '', ' – ', '', '', '', '', False, '1', '1', '1', '1', '1', '1'),
-(22, 'Inciso', 'inciso', '', '', 0, '.....', '', ' – ', '', '', '', '', False, 'I', '1', '1', '1', '1', '1'),
-(23, 'Alinea', 'alinea', '', '', 0, '.....', '', ' – ', '', '', '', '', False, 'a', '1', '1', '1', '1', '1'),
-(24, 'Item', 'item', '', '', 0, '.....', '', ' – ', '', '', '', '', False, '1', '1', '1', '1', '1', '1'),
-(25, 'Disposições Preliminares', 'disp_preliminares', '', 'Disposições Preliminares', 0, '-----', '', '
', '', '
', '', '', False, 'N', '1', '1', '1', '1', '1'),
-(26, 'Disposições Gerais', 'disp_gerais', '', 'Disposições Gerais', 0, '-----', '', '
', '', '
', '', '', False, 'N', '1', '1', '1', '1', '1'),
-(27, 'Disposições Transitórias', 'disp_transitorias', '', 'Disposições Transitórias', 0, '-----', '', '
', '', '
', '', '', False, 'N', '1', '1', '1', '1', '1'),
-(28, 'Disposições Finais', 'disp_finais', '', 'Disposições Finais', 0, '-----', '', '
', '', '
', '', '', False, 'N', '1', '1', '1', '1', '1'),
-(14, 'Título', 'titulo', '', 'Título', 0, '-----', '', '
', '', '
', '', '', 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');
+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 (1, 'Articulação', 'articulacao', '', '', 0, '.....', '', '', '', '', '', '', True, '1', '1', '1', '1', '1', '1');
+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 (2, 'Ementa', 'ementa', '', '', 0, '.....', '', '', '', '', '', '', False, 'N', '1', '1', '1', '1', '1');
+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 (3, 'Bloco Alteração', 'bloco_alteracao', '', '', 0, '.....', '', '', '', '', '', '', True, '1', '1', '1', '1', '1', '1');
+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 (4, 'Omissis', 'omissis', '', '', 0, '.....', '', '', '', '', '', '', False, '1', '1', '1', '1', '1', '1');
+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, '-----', '', '
', '', '
', '', '', False, 'I', '1', '1', '1', '1', '1');
+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 (12, 'Parte', 'parte', '', 'Parte', 0, '-----', '', '
', '', '
', '', '', False, 'I', '1', '1', '1', '1', '1');
+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 (13, 'Livro', 'livro', '', 'Livro', 0, '-----', '', '
', '', '
', '', '', False, 'I', '1', '1', '1', '1', '1');
+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 (14, 'Título', 'titulo', '', 'Título', 0, '-----', '', '
', '', '
', '', '', False, 'I', '1', '1', '1', '1', '1');
+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 (15, 'Capítulo', 'capitulo', '', 'Capítulo', 0, '-----', '', '
', '', '
', '', '', False, 'I', '1', '1', '1', '1', '1');
+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 (16, 'Seção', 'secao', '', 'Seção', 0, '-----', '', '
', '', '
', '', '', False, 'I', '1', '1', '1', '1', '1');
+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 (17, 'SubSeção', 'subsecao', '', 'SubSeção', 0, '-----', '', '
', '', '
', '', '', False, '1', '1', '1', '1', '1', '1');
+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 (18, 'Item de Seção', 'itemsecao', '', 'Item', 0, '-----', '', '
', '', '
', '', '', False, '1', '1', '1', '1', '1', '1');
+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 (19, 'Artigo', 'artigo', '', 'Art.', 9, '-----', '', ' – ', '', '', '', '', True, '1', '1', '1', '1', '1', '1');
+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 (20, 'Caput', 'caput', '', '', 0, '', '', '', '', '', '', '', False, 'N', 'N', 'N', 'N', 'N', 'N');
+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 (21, 'Parágrafo', 'paragrafo', '', '§;Parágrafo Único', 9, '-----', '', ' – ', '', '', '', '', False, '1', '1', '1', '1', '1', '1');
+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 (22, 'Inciso', 'inciso', '', '', 0, '.....', '', ' – ', '', '', '', '', False, 'I', '1', '1', '1', '1', '1');
+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 (23, 'Alinea', 'alinea', '', '', 0, '.....', '', ' – ', '', '', '', '', False, 'a', '1', '1', '1', '1', '1');
+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 (24, 'Item', 'item', '', '', 0, '.....', '', ' – ', '', '', '', '', False, '1', '1', '1', '1', '1', '1');
+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 (25, 'Disposições Preliminares', 'disp_preliminares', '', 'Disposições Preliminares', 0, '-----', '', '
', '', '
', '', '', False, 'N', '1', '1', '1', '1', '1');
+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 (26, 'Disposições Gerais', 'disp_gerais', '', 'Disposições Gerais', 0, '-----', '', '
', '', '
', '', '', False, 'N', '1', '1', '1', '1', '1');
+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 (27, 'Disposições Transitórias', 'disp_transitorias', '', 'Disposições Transitórias', 0, '-----', '', '
', '', '
', '', '', False, 'N', '1', '1', '1', '1', '1');
+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 (28, 'Disposições Finais', 'disp_finais', '', 'Disposições Finais', 0, '-----', '', '
', '', '
', '', '', False, 'N', '1', '1', '1', '1', '1');
+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 (29, 'Texto Não Estruturado', 'texto_n_estruturado', '', '', 0, '.....', '', '', '', '', '', '',False, '1', '1', '1', '1', '1', '1');
+
+
+
+select setval('compilacao_tipodispositivo_id_seq'::regclass, (select max(id) from compilacao_tipodispositivo));
\ No newline at end of file
diff --git a/compilacao/migrations/0002_auto_20150907_2334.py b/compilacao/migrations/0002_auto_20150907_2334.py
new file mode 100644
index 000000000..f92031d91
--- /dev/null
+++ b/compilacao/migrations/0002_auto_20150907_2334.py
@@ -0,0 +1,48 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import models, migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('compilacao', '0001_initial'),
+ ]
+
+ operations = [
+ migrations.AlterModelOptions(
+ name='dispositivo',
+ options={'ordering': ['norma', 'ordem'], 'verbose_name_plural': 'Dispositivos', 'verbose_name': 'Dispositivo'},
+ ),
+ migrations.AlterField(
+ model_name='dispositivo',
+ name='dispositivo_atualizador',
+ field=models.ForeignKey(related_name='dispositivos_alterados_set', to='compilacao.Dispositivo', null=True, verbose_name='Dispositivo Atualizador', default=None, blank=True),
+ ),
+ migrations.AlterField(
+ model_name='dispositivo',
+ name='dispositivo_pai',
+ field=models.ForeignKey(related_name='+', to='compilacao.Dispositivo', null=True, verbose_name='Dispositivo Pai', default=None, blank=True),
+ ),
+ migrations.AlterField(
+ model_name='dispositivo',
+ name='dispositivo_subsequente',
+ field=models.ForeignKey(related_name='+', to='compilacao.Dispositivo', null=True, verbose_name='Dispositivo Subsequente', default=None, blank=True),
+ ),
+ migrations.AlterField(
+ model_name='dispositivo',
+ name='dispositivo_substituido',
+ field=models.ForeignKey(related_name='+', to='compilacao.Dispositivo', null=True, verbose_name='Dispositivo Substituido', default=None, blank=True),
+ ),
+ migrations.AlterField(
+ model_name='dispositivo',
+ name='dispositivo_vigencia',
+ field=models.ForeignKey(related_name='+', to='compilacao.Dispositivo', null=True, verbose_name='Dispositivo de Vigência', default=None, blank=True),
+ ),
+ migrations.AlterField(
+ model_name='dispositivo',
+ name='norma_publicada',
+ field=models.ForeignKey(related_name='dispositivos_alterados_set', to='norma.NormaJuridica', null=True, verbose_name='Norma Jurídica Publicada', default=None, blank=True),
+ ),
+ ]
diff --git a/compilacao/models.py b/compilacao/models.py
index d0dac962e..99104bd81 100644
--- a/compilacao/models.py
+++ b/compilacao/models.py
@@ -254,6 +254,7 @@ class Dispositivo(models.Model):
default=False,
choices=YES_NO_CHOICES,
verbose_name=_('Inconstitucionalidade'))
+ # Relevant attribute only in altering norms
visibilidade = models.BooleanField(
default=False,
choices=YES_NO_CHOICES,
@@ -275,38 +276,39 @@ class Dispositivo(models.Model):
norma_publicada = models.ForeignKey(
NormaJuridica,
blank=True, null=True, default=None,
- related_name='%(class)s_norma_publicada',
+ related_name='dispositivos_alterados_set',
verbose_name=_('Norma Jurídica Publicada'))
dispositivo_subsequente = models.ForeignKey(
'self',
blank=True, null=True, default=None,
- related_name='%(class)s_dispositivo_subsequente',
+ related_name='+',
verbose_name=_('Dispositivo Subsequente'))
dispositivo_substituido = models.ForeignKey(
'self',
blank=True, null=True, default=None,
- related_name='%(class)s_dispositivo_substituido',
+ related_name='+',
verbose_name=_('Dispositivo Substituido'))
dispositivo_pai = models.ForeignKey(
'self',
blank=True, null=True, default=None,
- related_name='%(class)s_dispositivo_pai',
+ related_name='+',
verbose_name=_('Dispositivo Pai'))
dispositivo_vigencia = models.ForeignKey(
'self',
blank=True, null=True, default=None,
- related_name='%(class)s_dispositivo_vigencia',
+ related_name='+',
verbose_name=_('Dispositivo de Vigência'))
dispositivo_atualizador = models.ForeignKey(
'self',
blank=True, null=True, default=None,
- related_name='%(class)s_dispositivo_atualizador',
+ related_name='dispositivos_alterados_set',
verbose_name=_('Dispositivo Atualizador'))
class Meta:
verbose_name = _('Dispositivo')
verbose_name_plural = _('Dispositivos')
+ ordering = ['norma', 'ordem']
unique_together = (
('norma', 'ordem',),
('norma',
@@ -323,7 +325,7 @@ class Dispositivo(models.Model):
def __str__(self):
return '%(rotulo)s - %(norma)s' % {
- 'rotulo': self.rotulo,
+ 'rotulo': (self.rotulo if self.rotulo else self.tipo_dispositivo),
'norma': self.norma}
@@ -356,13 +358,13 @@ class Nota(models.Model):
NINST = 3
NPUBL = 4
PUBLICIDADE_CHOICES = (
- # Apenas o dono da nota tem visibilidade.
+ # Only the owner of the note has visibility.
(NPRIV, _('Nota Privada')),
- # Todos do mesmo grupo tem visibilidade.
+ # All of the same group have visibility.
(NSTRL, _('Nota Setorial')),
- # Todo usuário autênticado tem visibilidade
+ # All authenticated users have visibility.
(NINST, _('Nota Institucional')),
- # Todo usuário tem visibilidade
+ # All users have visibility.
(NPUBL, _('Nota Pública')),
)
diff --git a/norma/migrations/0004_auto_20150907_0004.py b/norma/migrations/0004_auto_20150907_0004.py
new file mode 100644
index 000000000..961acc32c
--- /dev/null
+++ b/norma/migrations/0004_auto_20150907_0004.py
@@ -0,0 +1,18 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import models, migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('norma', '0003_auto_20150906_0239'),
+ ]
+
+ operations = [
+ migrations.AlterUniqueTogether(
+ name='assuntonormarelationship',
+ unique_together=set([('assunto', 'norma')]),
+ ),
+ ]
diff --git a/norma/models.py b/norma/models.py
index fcc7db437..fee95bdeb 100644
--- a/norma/models.py
+++ b/norma/models.py
@@ -109,6 +109,11 @@ class AssuntoNormaRelationship(models.Model):
assunto = models.ForeignKey(AssuntoNorma)
norma = models.ForeignKey(NormaJuridica)
+ class Meta:
+ unique_together = (
+ ('assunto', 'norma'),
+ )
+
class LegislacaoCitada(models.Model):
materia = models.ForeignKey(MateriaLegislativa)