Browse Source

Adiciona endpoint pesquisa (#3307)

Adiciona novas entradas no menu tabela aux

Adiciona form pesquisa

Adiciona template pesquisa e resultados

Adiciona view pesquisa

Altera template status tram detail

Atualiza url sucesso delete status tram

Co-authored-by: Vinícius Cantuária <cantuariavc@gmail.com>
pull/3284/head
João Rodrigues 4 years ago
committed by GitHub
parent
commit
d2beb26404
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 22
      sapl/materia/forms.py
  2. 24
      sapl/materia/urls.py
  3. 80
      sapl/materia/views.py
  4. 14
      sapl/templates/materia/statustramitacao_detail.html
  5. 41
      sapl/templates/materia/statustramitacao_filter.html
  6. 7
      sapl/templates/menu_tabelas_auxiliares.yaml

22
sapl/materia/forms.py

@ -2788,6 +2788,28 @@ class FichaSelecionaForm(forms.Form):
) )
class StatusTramitacaoFilterSet(django_filters.FilterSet):
descricao = django_filters.CharFilter(label=_("Descrição do Status"), lookup_expr="icontains")
class Meta:
model = StatusTramitacao
fields = ["descricao"]
def multifield_filter(self, queryset, name, value):
return queryset.filter(Q(sigla__icontains=value) | Q(descricao__icontains=value))
def __init__(self, *args, **kwargs):
super(StatusTramitacaoFilterSet, self).__init__(*args, **kwargs)
row0 = to_row([("descricao", 12)])
self.form.helper = SaplFormHelper()
self.form.helper.form_method = "GET"
self.form.helper.layout = Layout(
Fieldset(_("Pesquisa de Status de Tramitacao"), row0, form_actions(label="Pesquisar"))
)
class ExcluirTramitacaoEmLote(forms.Form): class ExcluirTramitacaoEmLote(forms.Form):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)

24
sapl/materia/urls.py

@ -25,13 +25,17 @@ from sapl.materia.views import (AcompanhamentoConfirmarView,
TipoProposicaoCrud, TramitacaoCrud, TipoProposicaoCrud, TramitacaoCrud,
TramitacaoEmLoteView, UnidadeTramitacaoCrud, TramitacaoEmLoteView, UnidadeTramitacaoCrud,
proposicao_texto, recuperar_materia, proposicao_texto, recuperar_materia,
ExcluirTramitacaoEmLoteView, RetornarProposicao, ExcluirTramitacaoEmLoteView,
RetornarProposicao,
MateriaPesquisaSimplesView, MateriaPesquisaSimplesView,
DespachoInicialMultiCreateView, get_zip_docacessorios, DespachoInicialMultiCreateView,
get_pdf_docacessorios, configEtiquetaMateriaLegislativaCrud) get_zip_docacessorios, get_pdf_docacessorios,
configEtiquetaMateriaLegislativaCrud,
PesquisarStatusTramitacaoView)
from sapl.norma.views import NormaPesquisaSimplesView from sapl.norma.views import NormaPesquisaSimplesView
from sapl.protocoloadm.views import ( from sapl.protocoloadm.views import (
FichaPesquisaAdmView, FichaSelecionaAdmView) FichaPesquisaAdmView, FichaSelecionaAdmView
)
from .apps import AppConfig from .apps import AppConfig
@ -170,8 +174,16 @@ urlpatterns_sistema = [
url(r'^sistema/materia/unidade-tramitacao/', url(r'^sistema/materia/unidade-tramitacao/',
include(UnidadeTramitacaoCrud.get_urls())), include(UnidadeTramitacaoCrud.get_urls())),
url(r'^sistema/materia/origem/', include(OrigemCrud.get_urls())), url(r'^sistema/materia/origem/', include(OrigemCrud.get_urls())),
url(r'^sistema/materia/status-tramitacao/',
include(StatusTramitacaoCrud.get_urls())), url(r'^sistema/materia/status-tramitacao/', include(
StatusTramitacaoCrud.get_urls()
)),
url(
r'^sistema/materia/pesquisar-status-tramitacao/',
PesquisarStatusTramitacaoView.as_view(),
name="pesquisar_statustramitacao"
),
url(r'^sistema/materia/orgao/', include(OrgaoCrud.get_urls())), url(r'^sistema/materia/orgao/', include(OrgaoCrud.get_urls())),
url(r'^sistema/materia/config-etiqueta-materia-legislativas/',configEtiquetaMateriaLegislativaCrud, name="configEtiquetaMateriaLegislativaCrud"), url(r'^sistema/materia/config-etiqueta-materia-legislativas/',configEtiquetaMateriaLegislativaCrud, name="configEtiquetaMateriaLegislativaCrud"),
] ]

80
sapl/materia/views.py

@ -60,14 +60,17 @@ from sapl.utils import (autor_label, autor_modal, gerar_hash_arquivo, get_base_u
from .forms import (AcessorioEmLoteFilterSet, AcompanhamentoMateriaForm, from .forms import (AcessorioEmLoteFilterSet, AcompanhamentoMateriaForm,
AnexadaEmLoteFilterSet, AdicionarVariasAutoriasFilterSet, AnexadaEmLoteFilterSet, AdicionarVariasAutoriasFilterSet,
compara_tramitacoes_mat, DespachoInicialForm, DocumentoAcessorioForm, compara_tramitacoes_mat, DespachoInicialForm,
EtiquetaPesquisaForm, ExcluirTramitacaoEmLote, FichaPesquisaForm, DocumentoAcessorioForm, EtiquetaPesquisaForm,
ExcluirTramitacaoEmLote, FichaPesquisaForm,
FichaSelecionaForm, filtra_tramitacao_destino, FichaSelecionaForm, filtra_tramitacao_destino,
filtra_tramitacao_destino_and_status, filtra_tramitacao_status, filtra_tramitacao_destino_and_status,
MateriaAssuntoForm, MateriaLegislativaFilterSet, MateriaLegislativaForm, filtra_tramitacao_status, MateriaAssuntoForm,
MateriaLegislativaFilterSet, MateriaLegislativaForm,
MateriaSimplificadaForm, PrimeiraTramitacaoEmLoteFilterSet, MateriaSimplificadaForm, PrimeiraTramitacaoEmLoteFilterSet,
ReceberProposicaoForm, RelatoriaForm, TramitacaoEmLoteFilterSet, ReceberProposicaoForm, RelatoriaForm,
TramitacaoEmLoteForm, UnidadeTramitacaoForm) TramitacaoEmLoteFilterSet, TramitacaoEmLoteForm,
UnidadeTramitacaoForm, StatusTramitacaoFilterSet)
from .models import (AcompanhamentoMateria, Anexada, AssuntoMateria, Autoria, DespachoInicial, from .models import (AcompanhamentoMateria, Anexada, AssuntoMateria, Autoria, DespachoInicial,
DocumentoAcessorio, MateriaAssunto, MateriaLegislativa, Numeracao, Orgao, DocumentoAcessorio, MateriaAssunto, MateriaLegislativa, Numeracao, Orgao,
Origem, Proposicao, RegimeTramitacao, Relatoria, StatusTramitacao, Origem, Proposicao, RegimeTramitacao, Relatoria, StatusTramitacao,
@ -379,7 +382,70 @@ def recuperar_materia(request):
return response return response
StatusTramitacaoCrud = CrudAux.build(StatusTramitacao, 'status_tramitacao') class StatusTramitacaoCrud(CrudAux):
model = StatusTramitacao
class DeleteView(CrudAux.DeleteView):
def get_success_url(self):
return reverse('sapl.materia:pesquisar_statustramitacao')
class PesquisarStatusTramitacaoView(FilterView):
model = StatusTramitacao
filterset_class = StatusTramitacaoFilterSet
paginate_by = 10
def get_filterset_kwargs(self, filterset_class):
super(PesquisarStatusTramitacaoView, self).get_filterset_kwargs(
filterset_class
)
return ({
"data": self.request.GET or None,
"queryset": self.get_queryset().order_by("sigla").distinct()
})
def get_context_data(self, **kwargs):
context = super(PesquisarStatusTramitacaoView, self).get_context_data(
**kwargs
)
paginator = context["paginator"]
page_obj = context["page_obj"]
context.update({
"page_range": make_pagination(
page_obj.number, paginator.num_pages
),
"NO_ENTRIES_MSG": "Nenhum status de tramitacao encontrado!",
"title": _("Status de Tramitação")
})
return context
def get(self, request, *args, **kwargs):
super(PesquisarStatusTramitacaoView, self).get(request)
data = self.filterset.data
url = ''
if data:
url = '&' + str(self.request.META["QUERY_STRING"])
if url.startswith("&page"):
ponto_comeco = url.find("sigla=") - 1
url = url[ponto_comeco:]
context = self.get_context_data(
filter=self.filterset, object_list=self.object_list,
filter_url=url, numero_res=len(self.object_list)
)
context["show_results"] = show_results_filter_set(
self.request.GET.copy()
)
return self.render_to_response(context)
class OrgaoCrud(CrudAux): class OrgaoCrud(CrudAux):

14
sapl/templates/materia/statustramitacao_detail.html

@ -0,0 +1,14 @@
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags cropping %}
{% block actions %}
<div class="actions btn-group btn-group-sm" role="group">
<a href="{% url 'sapl.materia:pesquisar_statustramitacao' %}" class="btn btn-outline-primary">Pesquisar Status de Tramitação</a>
<a href="{% url 'sapl.materia:statustramitacao_create' %}" class="btn btn-outline-primary">Adicionar Status de Tramitação</a>
</div>
<div class="actions btn-group btn-group-sm float-right" role="group">
<a href="{% url 'sapl.materia:statustramitacao_update' object.pk %}" class="btn btn-outline-primary">Editar</a>
<a href="{% url 'sapl.materia:statustramitacao_delete' object.pk %}" class="btn btn-outline-danger">Excluir</a>
</div>
{% endblock actions %}

41
sapl/templates/materia/statustramitacao_filter.html

@ -0,0 +1,41 @@
{% extends "crud/list.html" %}
{% load i18n %}
{% load crispy_forms_tags staticfiles %}
{% block base_content %}
{% if not show_results %}
{% crispy filter.form %}
{% else %}
<div class="actions btn-group float-right btn-group-sm" role="group">
<a href="{% url 'sapl.materia:pesquisar_statustramitacao' %}" class="btn btn-outline-primary">{% trans "Fazer nova pesquisa" %}</a>
{% if not request.user.is_anonymous %}
<a href="{% url 'sapl.materia:statustramitacao_create' %}" class="btn btn-outline-primary">Adicionar Status de Tramitação</a>
{% endif %}
</div>
<br />
{% if numero_res > 0 %}
{% if numero_res == 1 %}
<p>Foi encontrado {{ numero_res }} resultado.</p>
{% else %}
<p>Foram encontrados {{ numero_res }} resultados.</p>
{% endif %}
<table class="table table-striped table-hover">
<thead><tr><th>Sigla</th><th>Descricao</th><th>Indicador da Tramitacao</th></tr></thead>
<tbody>
{% for status in page_obj %}
<tr>
<td><a href="{% url 'sapl.materia:statustramitacao_detail' status.pk %}">{{ status.sigla }}</a></td>
<td>{{ status.descricao }}</td>
<td>{{ status.indicador }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% else %}
<font size="4"><p align="center">{{ NO_ENTRIES_MSG }}</p></font>
{% endif %}
{% endif %}
<br />
{% include "paginacao.html" %}
<br /><br /><br />
{% endblock base_content %}

7
sapl/templates/menu_tabelas_auxiliares.yaml

@ -119,8 +119,11 @@
- title: {% trans 'Origem' %} - title: {% trans 'Origem' %}
url: sapl.materia:origem_list url: sapl.materia:origem_list
css_class: btn btn-link css_class: btn btn-link
- title: {% trans 'Status da Tramitação' %} - title: {% trans 'Pesquisar Status de Tramitação' %}
url: sapl.materia:statustramitacao_list url: sapl.materia:pesquisar_statustramitacao
css_class: btn btn-link
- title: {% trans 'Adicionar Status de Tramitação' %}
url: sapl.materia:statustramitacao_create
css_class: btn btn-link css_class: btn btn-link
- title: {% trans 'Órgão' %} - title: {% trans 'Órgão' %}
url: sapl.materia:orgao_list url: sapl.materia:orgao_list

Loading…
Cancel
Save