From 93e394d3f5c677427716574e6a5070932fcc1696 Mon Sep 17 00:00:00 2001 From: Leandro Roberto Date: Sun, 6 Jan 2019 04:54:38 -0200 Subject: [PATCH] =?UTF-8?q?Refatora=20formul=C3=A1rio=20de=20pesquisa=20de?= =?UTF-8?q?=20normas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/norma/forms.py | 15 +++++++-- .../migrations/0020_auto_20190106_0454.py | 31 +++++++++++++++++++ sapl/norma/models.py | 21 +++++++------ 3 files changed, 56 insertions(+), 11 deletions(-) create mode 100644 sapl/norma/migrations/0020_auto_20190106_0454.py diff --git a/sapl/norma/forms.py b/sapl/norma/forms.py index 55541b48f..cd5a091a1 100644 --- a/sapl/norma/forms.py +++ b/sapl/norma/forms.py @@ -6,6 +6,7 @@ from crispy_forms.layout import Fieldset, Layout from django import forms from django.core.exceptions import ObjectDoesNotExist, ValidationError from django.db import models +from django.db.models import Q from django.forms import ModelForm, widgets, ModelChoiceField from django.utils import timezone from django.utils.translation import ugettext_lazy as _ @@ -44,7 +45,9 @@ class NormaFilterSet(django_filters.FilterSet): label='Ano', choices=choice_anos_com_normas) - ementa = django_filters.CharFilter(lookup_expr='icontains') + ementa = django_filters.CharFilter( + method='filter_ementa', + label=_('Pesquisar expressões na ementa da norma')) indexacao = django_filters.CharFilter(lookup_expr='icontains', label=_('Indexação')) @@ -52,7 +55,7 @@ class NormaFilterSet(django_filters.FilterSet): assuntos = django_filters.ModelChoiceFilter( queryset=AssuntoNorma.objects.all()) - o = NormaPesquisaOrderingFilter() + o = NormaPesquisaOrderingFilter(help_text='') class Meta: filter_overrides = {models.DateField: { @@ -82,6 +85,14 @@ class NormaFilterSet(django_filters.FilterSet): form_actions(label='Pesquisar')) ) + def filter_ementa(self, queryset, name, value): + texto = value.split() + q = Q() + for t in texto: + q &= Q(ementa__icontains=t) + + return queryset.filter(q) + class NormaJuridicaForm(ModelForm): diff --git a/sapl/norma/migrations/0020_auto_20190106_0454.py b/sapl/norma/migrations/0020_auto_20190106_0454.py new file mode 100644 index 000000000..09c5caa6f --- /dev/null +++ b/sapl/norma/migrations/0020_auto_20190106_0454.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.8 on 2019-01-06 06:54 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('norma', '0019_auto_20190104_1021'), + ] + + operations = [ + migrations.AlterField( + model_name='normajuridica', + name='data_publicacao', + field=models.DateField(blank=True, null=True, verbose_name='Data de Publicação'), + ), + migrations.AlterField( + model_name='normajuridica', + name='tipo', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='norma.TipoNormaJuridica', verbose_name='Tipo da Norma Jurídica'), + ), + migrations.AlterField( + model_name='normajuridica', + name='veiculo_publicacao', + field=models.CharField(blank=True, max_length=30, verbose_name='Veículo de Publicação'), + ), + ] diff --git a/sapl/norma/models.py b/sapl/norma/models.py index 80075f113..21834cc4d 100644 --- a/sapl/norma/models.py +++ b/sapl/norma/models.py @@ -83,7 +83,7 @@ class NormaJuridica(models.Model): tipo = models.ForeignKey( TipoNormaJuridica, on_delete=models.PROTECT, - verbose_name=_('Tipo da Norma Juridica')) + verbose_name=_('Tipo da Norma Jurídica')) materia = models.ForeignKey( MateriaLegislativa, blank=True, null=True, on_delete=models.PROTECT, verbose_name=_('Matéria')) @@ -98,11 +98,11 @@ class NormaJuridica(models.Model): choices=ESFERA_FEDERACAO_CHOICES) data = models.DateField(blank=False, null=True, verbose_name=_('Data')) data_publicacao = models.DateField( - blank=True, null=True, verbose_name=_('Data Publicação')) + blank=True, null=True, verbose_name=_('Data de Publicação')) veiculo_publicacao = models.CharField( max_length=30, blank=True, - verbose_name=_('Veículo Publicação')) + verbose_name=_('Veículo de Publicação')) pagina_inicio_publicacao = models.PositiveIntegerField( blank=True, null=True, verbose_name=_('Pg. Início')) pagina_fim_publicacao = models.PositiveIntegerField( @@ -119,7 +119,8 @@ class NormaJuridica(models.Model): assuntos = models.ManyToManyField( AssuntoNorma, blank=True, verbose_name=_('Assuntos')) - data_vigencia = models.DateField(blank=True, null=True, verbose_name=_('Data Fim Vigência')) + data_vigencia = models.DateField( + blank=True, null=True, verbose_name=_('Data Fim Vigência')) timestamp = models.DateTimeField(null=True) texto_articulado = GenericRelation( @@ -197,7 +198,8 @@ class NormaEstatisticas(models.Model): blank=True, null=True, auto_now=True) norma = models.ForeignKey(NormaJuridica, - on_delete=models.CASCADE) + on_delete=models.CASCADE) + def __str__(self): return _('Usuário: %(usuario)s, Norma: %(norma)s') % { 'usuario': self.usuario, 'norma': self.norma} @@ -225,6 +227,7 @@ class AutoriaNorma(models.Model): return _('Autoria: %(autor)s - %(norma)s') % { 'autor': self.autor, 'norma': self.norma} + @reversion.register() class LegislacaoCitada(models.Model): materia = models.ForeignKey(MateriaLegislativa, on_delete=models.CASCADE) @@ -271,8 +274,8 @@ class TipoVinculoNormaJuridica(models.Model): descricao_passiva = models.CharField( max_length=50, blank=True, verbose_name=_('Descrição Passiva')) revoga_integralmente = models.BooleanField(verbose_name=_('Revoga Integralmente?'), - choices=YES_NO_CHOICES, - default=False) + choices=YES_NO_CHOICES, + default=False) class Meta: verbose_name = _('Tipo de Vínculo entre Normas Jurídicas') @@ -318,8 +321,8 @@ class AnexoNormaJuridica(models.Model): on_delete=models.PROTECT, verbose_name=_('Norma Juridica')) assunto_anexo = models.TextField( - blank = True, - default = "", + blank=True, + default="", verbose_name=_('Assunto do Anexo'), max_length=250 )