Browse Source

fix: #3711 (#3728)

pull/3734/head
LeandroJataí 5 months ago
committed by GitHub
parent
commit
9e271e8c3e
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 20
      sapl/norma/forms.py

20
sapl/norma/forms.py

@ -1,10 +1,11 @@
import logging import logging
import re
from crispy_forms.layout import (Button, Fieldset, HTML, Layout) from crispy_forms.layout import (Button, Fieldset, HTML, Layout)
from django import forms from django import forms
from django.contrib.postgres.search import SearchVector from django.contrib.postgres.search import SearchVector
from django.core.exceptions import ObjectDoesNotExist, ValidationError from django.core.exceptions import ObjectDoesNotExist, ValidationError
from django.db.models import Q from django.db.models import Q, F, Func, Value
from django.forms import ModelChoiceField, ModelForm, widgets from django.forms import ModelChoiceField, ModelForm, widgets
from django.utils import timezone from django.utils import timezone
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
@ -69,6 +70,10 @@ class NormaFilterSet(django_filters.FilterSet):
label='Ano', label='Ano',
choices=choice_anos_com_normas) choices=choice_anos_com_normas)
numero = django_filters.CharFilter(
method='filter_numero',
label=_('Número'))
ementa = django_filters.CharFilter( ementa = django_filters.CharFilter(
method='filter_ementa', method='filter_ementa',
label=_('Pesquisar expressões na ementa da norma')) label=_('Pesquisar expressões na ementa da norma'))
@ -129,6 +134,19 @@ class NormaFilterSet(django_filters.FilterSet):
form_actions(label='Pesquisar')) form_actions(label='Pesquisar'))
) )
def filter_numero(self, queryset, name, value):
p = r'[\W_]'
value = re.sub(p, '', value, flags=re.IGNORECASE)
return queryset.annotate(
numero_clean=Func(
F('numero'),
Value(p),
Value(''),
Value('g'),
function='REGEXP_REPLACE'
)
).filter(numero_clean=value)
def filter_ementa(self, queryset, name, value): def filter_ementa(self, queryset, name, value):
return queryset.annotate(search=SearchVector('ementa', return queryset.annotate(search=SearchVector('ementa',
config='portuguese')).filter(search=value) config='portuguese')).filter(search=value)

Loading…
Cancel
Save