Browse Source

Relatorio de tramitacao Administrativo (#2803)

pull/2811/head
Cesar Augusto de Carvalho 6 years ago
committed by Leandro Roberto
parent
commit
f081798460
  1. 40
      sapl/base/forms.py
  2. 6
      sapl/base/urls.py
  3. 55
      sapl/base/views.py
  4. 48
      sapl/templates/base/RelatorioHistoricoTramitacaoAdm_filter.html
  5. 4
      sapl/templates/base/relatorios_list.html

40
sapl/base/forms.py

@ -30,6 +30,7 @@ from sapl.materia.models import (
MateriaLegislativa, UnidadeTramitacao, StatusTramitacao)
from sapl.norma.models import (NormaJuridica, NormaEstatisticas)
from sapl.parlamentares.models import SessaoLegislativa, Partido
from sapl.protocoloadm.models import DocumentoAdministrativo
from sapl.sessao.models import SessaoPlenaria
from sapl.settings import MAX_IMAGE_UPLOAD_SIZE
from sapl.utils import (RANGE_ANOS, YES_NO_CHOICES,
@ -1423,3 +1424,42 @@ class PartidoForm(FileFieldCheckMixin, ModelForm):
raise ValidationError("Certifique-se de que a data de criação seja anterior à data de extinção.")
return cleaned_data
class RelatorioHistoricoTramitacaoAdmFilterSet(django_filters.FilterSet):
@property
def qs(self):
parent = super(RelatorioHistoricoTramitacaoAdmFilterSet, self).qs
return parent.distinct().prefetch_related('tipo').order_by('-ano', 'tipo', 'numero')
class Meta(FilterOverridesMetaMixin):
model = DocumentoAdministrativo
fields = ['tipo', 'tramitacaoadministrativo__status',
'tramitacaoadministrativo__data_tramitacao',
'tramitacaoadministrativo__unidade_tramitacao_local',
'tramitacaoadministrativo__unidade_tramitacao_destino']
def __init__(self, *args, **kwargs):
super(RelatorioHistoricoTramitacaoAdmFilterSet, self).__init__(
*args, **kwargs)
self.filters['tipo'].label = 'Tipo de Documento'
self.filters['tramitacaoadministrativo__status'].label = _('Status')
self.filters['tramitacaoadministrativo__unidade_tramitacao_local'].label = _('Unidade Local (Origem)')
self.filters['tramitacaoadministrativo__unidade_tramitacao_destino'].label = _('Unidade Destino')
row1 = to_row([('tramitacaoadministrativo__data_tramitacao', 12)])
row2 = to_row([('tramitacaoadministrativo__unidade_tramitacao_local', 6),
('tramitacaoadministrativo__unidade_tramitacao_destino', 6)])
row3 = to_row(
[('tipo', 6),
('tramitacaoadministrativo__status', 6)])
self.form.helper = SaplFormHelper()
self.form.helper.form_method = 'GET'
self.form.helper.layout = Layout(
Fieldset(_(''),
row1, row2, row3,
form_actions(label='Pesquisar'))
)

6
sapl/base/urls.py

@ -41,7 +41,8 @@ from .views import (AlterarSenha, AppConfigCrud, CasaLegislativaCrud,
ListarAutoresDuplicadosView,
ListarBancadaComissaoAutorExternoView,
ListarLegislaturaInfindavelView,
pesquisa_textual)
pesquisa_textual,
RelatorioHistoricoTramitacaoAdmView)
app_name = AppConfig.name
@ -153,6 +154,9 @@ urlpatterns = [
url(r'^sistema/relatorios/audiencia$',
RelatorioAudienciaView.as_view(),
name='audiencia'),
url(r'^sistema/relatorios/historico-tramitacoesadm$',
RelatorioHistoricoTramitacaoAdmView.as_view(),
name='historico_tramitacoes_adm'),
url(r'^email/validate/(?P<uidb64>[0-9A-Za-z_\-]+)/'
'(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})$',

55
sapl/base/views.py

@ -42,7 +42,9 @@ from sapl.materia.models import (Autoria, MateriaLegislativa, Proposicao,
TipoMateriaLegislativa, StatusTramitacao, UnidadeTramitacao)
from sapl.norma.models import (NormaJuridica, NormaEstatisticas)
from sapl.parlamentares.models import Parlamentar, Legislatura, Mandato, Filiacao
from sapl.protocoloadm.models import Protocolo
from sapl.protocoloadm.models import (Protocolo, TipoDocumentoAdministrativo,
StatusTramitacaoAdministrativo,
DocumentoAdministrativo)
from sapl.sessao.models import (PresencaOrdemDia, SessaoPlenaria,
SessaoPlenariaPresenca, Bancada)
from sapl.utils import (parlamentares_ativos, gerar_hash_arquivo, SEPARADOR_HASH_PROPOSICAO,
@ -60,7 +62,8 @@ from .forms import (AlterarSenhaForm, CasaLegislativaForm,
RelatorioReuniaoFilterSet, UsuarioCreateForm,
UsuarioEditForm, RelatorioNormasMesFilterSet,
RelatorioNormasVigenciaFilterSet,
EstatisticasAcessoNormasForm, UsuarioFilterSet)
EstatisticasAcessoNormasForm, UsuarioFilterSet,
RelatorioHistoricoTramitacaoAdmFilterSet)
from .models import AppConfig, CasaLegislativa
@ -1832,3 +1835,51 @@ def pesquisa_textual(request):
return JsonResponse(json_dict)
class RelatorioHistoricoTramitacaoAdmView(FilterView):
model = DocumentoAdministrativo
filterset_class = RelatorioHistoricoTramitacaoAdmFilterSet
template_name = 'base/RelatorioHistoricoTramitacaoAdm_filter.html'
def get_context_data(self, **kwargs):
context = super(RelatorioHistoricoTramitacaoAdmView,
self).get_context_data(**kwargs)
context['title'] = _('Histórico de Tramitações de Documento Administrativo')
if not self.filterset.form.is_valid():
return context
qr = self.request.GET.copy()
context['filter_url'] = ('&' + qr.urlencode()) if len(qr) > 0 else ''
context['show_results'] = show_results_filter_set(qr)
context['data_tramitacao'] = (self.request.GET['tramitacaoadministrativo__data_tramitacao_0'] + ' - ' +
self.request.GET['tramitacaoadministrativo__data_tramitacao_1'])
if self.request.GET['tipo']:
tipo = self.request.GET['tipo']
context['tipo'] = (
str(TipoDocumentoAdministrativo.objects.get(id=tipo)))
else:
context['tipo'] = ''
if self.request.GET['tramitacaoadministrativo__status']:
tramitacao_status = self.request.GET['tramitacaoadministrativo__status']
context['tramitacaoadministrativo__status'] = (
str(StatusTramitacaoAdministrativo.objects.get(id=tramitacao_status)))
else:
context['tramitacaoadministrativo__status'] = ''
if self.request.GET['tramitacaoadministrativo__unidade_tramitacao_local']:
context['tramitacaoadministrativo__unidade_tramitacao_local'] = \
(str(UnidadeTramitacao.objects.get(
id=self.request.GET['tramitacaoadministrativo__unidade_tramitacao_local'])))
else:
context['tramitacaoadministrativo__unidade_tramitacao_local'] = ''
if self.request.GET['tramitacaoadministrativo__unidade_tramitacao_destino']:
context['tramitacaoadministrativo__unidade_tramitacao_destino'] = \
(str(UnidadeTramitacao.objects.get(
id=self.request.GET['tramitacaoadministrativo__unidade_tramitacao_destino'])))
else:
context['tramitacaoadministrativo__unidade_tramitacao_destino'] = ''
return context

48
sapl/templates/base/RelatorioHistoricoTramitacaoAdm_filter.html

@ -0,0 +1,48 @@
{% extends "crud/list.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block base_content %}
{% if not show_results %}
<br>
{% crispy filter.form %}
{% else %}
<div class="actions btn-group float-right" role="group">
<a href="{% url 'sapl.base:historico_tramitacoes_adm' %}" class="btn btn-outline-primary">{% trans 'Fazer nova pesquisa' %}</a>
</div>
<br /><br /><br /><br />
<b>PARÂMETROS DE PESQUISA:<br /></b>
&emsp;Período: {{ data_tramitacao }} <br />
&emsp;Tipo de documento: {{ tipo }}<br />
&emsp;Status atual: {{ tramitacaoadministrativo__status }}<br />
&emsp;Local de origem: {{ tramitacaoadministrativo__unidade_tramitacao_local }}<br />
&emsp;Local de destino: {{ tramitacaoadministrativo__unidade_tramitacao_destino }}<br /><br /><br />
{% if object_list %}
{% if object_list|length == 1 %}
<tr><td><h3 style="text-align: left;">Foi encontrado 1 documento com esses parâmetros.</h3></td></tr><br><br>
{% else %}
<tr><td><h3 style="text-align: left;">Foram encontrados {{object_list|length}} documentos com esses parâmetros.</h3></td></tr><br><br>
{% endif %}
<table class="table table-bordered table-hover">
<thead class="thead-default" >
<tr class="active">
<th>Documento</th>
<th>Ementa</th>
</tr>
</thead>
<tbody>
{% for documento in object_list %}
<tr>
<td><a href="{% url 'sapl.protocoloadm:tramitacaoadministrativo_list' documento.pk %}">
{{documento.tipo.descricao}} - {{documento.tipo.sigla}} {{documento.numero}}/{{documento.ano}}
</a></td>
<td>{{documento.ementa}}<br>{{documento.observacao}}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% else %}
<tr><td><h3 style="text-align: left;">Nenhum documento encontrado com esses parâmetros.</h3></td></tr><br><br>
{% endif %}
{% endif %}
{% endblock base_content %}

4
sapl/templates/base/relatorios_list.html

@ -56,6 +56,10 @@
<td><a href="{% url 'sapl.base:normas_por_vigencia' %}">Normas por vigência</a></td>
<td> Normas vigentes ou não vigentes. </td>
</tr>
<tr>
<td><a href="{% url 'sapl.base:historico_tramitacoes_adm' %}">Histórico de tramitações de Documentos</a></td>
<td> Histórico de tramitações de Documentos por período e local informados. </td>
</tr>
{% if estatisticas_acesso_normas %}
<tr>
<td><a href="{% url 'sapl.base:estatisticas_acesso' %}">Estatísticas de acesso de Normas</a></td>

Loading…
Cancel
Save