# -*- coding: utf-8 -*- from django.db import models from django.utils.translation import ugettext as _ from materia.models import MateriaLegislativa class AssuntoNorma(models.Model): assunto = models.CharField(max_length=50, verbose_name=_(u'Assunto')) # des_assunto descricao = models.CharField(max_length=250, blank=True, null=True, verbose_name=_(u'Descrição')) # des_estendida class Meta: verbose_name = _(u'Assunto de Norma') verbose_name_plural = _(u'Assuntos de Norma') class TipoNormaJuridica(models.Model): # TODO transform into Domain Model and use an FK for the field EQUIVALENTE_LEXML_CHOICES = ((name, name) for name in ('constituicao', 'ementa.constitucional', 'lei.complementar', 'lei.delegada', 'lei', 'decreto.lei', 'medida.provisoria', 'decreto', 'lei.organica', 'emenda.lei.organica', 'decreto.legislativo', 'resolucao', 'regimento.interno', )) equivalente_lexml = models.CharField(max_length=50, blank=True, null=True, verbose_name=_(u'Equivalente LexML'), choices=EQUIVALENTE_LEXML_CHOICES) # voc_lexml sigla = models.CharField(max_length=3, verbose_name=_(u'Sigla')) # sgl_tipo_norma descricao = models.CharField(max_length=50, verbose_name=_(u'Descrição')) # des_tipo_norma class Meta: verbose_name = _(u'Tipo de Norma Jurídica') verbose_name_plural = _(u'Tipos de Norma Jurídica') class NormaJuridica(models.Model): MUNICIPAL = 'M' ESTADUAL = 'E' FEDERAL = 'F' ESFERA_FEDERACAO_CHOICES = ((MUNICIPAL, _(u'Municipal')), (ESTADUAL, _(u'Estadual')), (FEDERAL, _(u'Federal'))) tipo = models.ForeignKey(TipoNormaJuridica, verbose_name=_(u'Tipo')) # tip_norma materia = models.ForeignKey(MateriaLegislativa, blank=True, null=True) # cod_materia numero = models.IntegerField(verbose_name=_(u'Número')) # num_norma ano = models.SmallIntegerField(verbose_name=_(u'Ano')) # ano_norma esfera_federacao = models.CharField(max_length=1, verbose_name=_(u'Esfera Federação'), choices=ESFERA_FEDERACAO_CHOICES) # tip_esfera_federacao data = models.DateField(blank=True, null=True, verbose_name=_(u'Data')) # dat_norma data_publicacao = models.DateField(blank=True, null=True, verbose_name=_(u'Data Publicação')) # dat_publicacao veiculo_publicacao = models.CharField(max_length=30, blank=True, null=True, verbose_name=_(u'Veículo Publicação')) # des_veiculo_publicacao pagina_inicio_publicacao = models.IntegerField(blank=True, null=True, verbose_name=_(u'Pg. Início')) # num_pag_inicio_publ pagina_fim_publicacao = models.IntegerField(blank=True, null=True, verbose_name=_(u'Pg. Fim')) # num_pag_fim_publ ementa = models.TextField(verbose_name=_(u'Ementa')) # txt_ementa indexacao = models.TextField(blank=True, null=True, verbose_name=_(u'Indexação')) # txt_indexacao observacao = models.TextField(blank=True, null=True, verbose_name=_(u'Observação')) # txt_observacao complemento = models.NullBooleanField(blank=True, verbose_name=_(u'Complementar ?')) # ind_complemento assunto = models.ForeignKey(AssuntoNorma) # XXX was a CharField (attention on migrate) # cod_assunto data_vigencia = models.DateField(blank=True, null=True) # dat_vigencia timestamp = models.DateTimeField() # timestamp class Meta: verbose_name = _(u'Norma Jurídica') verbose_name_plural = _(u'Normas Jurídicas') class LegislacaoCitada(models.Model): materia = models.ForeignKey(MateriaLegislativa) # cod_materia norma = models.ForeignKey(NormaJuridica) # cod_norma disposicoes = models.CharField(max_length=15, blank=True, null=True, verbose_name=_(u'Disposição')) # des_disposicoes parte = models.CharField(max_length=8, blank=True, null=True, verbose_name=_(u'Parte')) # des_parte livro = models.CharField(max_length=7, blank=True, null=True, verbose_name=_(u'Livro')) # des_livro titulo = models.CharField(max_length=7, blank=True, null=True, verbose_name=_(u'Título')) # des_titulo capitulo = models.CharField(max_length=7, blank=True, null=True, verbose_name=_(u'Capítulo')) # des_capitulo secao = models.CharField(max_length=7, blank=True, null=True, verbose_name=_(u'Seção')) # des_secao subsecao = models.CharField(max_length=7, blank=True, null=True, verbose_name=_(u'Subseção')) # des_subsecao artigo = models.CharField(max_length=4, blank=True, null=True, verbose_name=_(u'Artigo')) # des_artigo paragrafo = models.CharField(max_length=3, blank=True, null=True, verbose_name=_(u'Parágrafo')) # des_paragrafo inciso = models.CharField(max_length=10, blank=True, null=True, verbose_name=_(u'Inciso')) # des_inciso alinea = models.CharField(max_length=3, blank=True, null=True, verbose_name=_(u'Alínea')) # des_alinea item = models.CharField(max_length=3, blank=True, null=True, verbose_name=_(u'Item')) # des_item class Meta: verbose_name = _(u'Matéria Legislativa') verbose_name_plural = _(u'Matérias Legislativas') class VinculoNormaJuridica(models.Model): TIPO_VINCULO_CHOICES = ( ('A', u'Altera a norma'), ('R', u'Revoga a norma'), ('P', u'Revoga parcialmente a norma'), ('T', u'Revoga por consolidação a norma'), ('C', u'Norma correlata'), ('I', u'Suspende a execução da norma'), ('G', u'Regulamenta a norma'), ) # TODO M2M ??? norma_referente = models.ForeignKey(NormaJuridica, related_name='+') # cod_norma_referente norma_referida = models.ForeignKey(NormaJuridica, related_name='+') # cod_norma_referida tipo_vinculo = models.CharField(max_length=1, blank=True, null=True, choices=TIPO_VINCULO_CHOICES) # tip_vinculo class Meta: verbose_name = _(u'Vínculo entre Normas Jurídicas') verbose_name_plural = _(u'Vínculos entre Normas Jurídicas')