diff --git a/sapl/audiencia/views.py b/sapl/audiencia/views.py index c999cf4ff..d7611607a 100644 --- a/sapl/audiencia/views.py +++ b/sapl/audiencia/views.py @@ -6,6 +6,9 @@ from sapl.crud.base import RP_DETAIL, RP_LIST, Crud from .forms import AudienciaForm from .models import AudienciaPublica +def pegar_url_audiencia(pk): + url = reverse('sapl.audiencia:audiencia_detail', kwargs={'pk': self.object.id}) + return url def index(request): return HttpResponse("Audiência Pública") diff --git a/sapl/base/forms.py b/sapl/base/forms.py index 6556e615f..dcdd16bf8 100644 --- a/sapl/base/forms.py +++ b/sapl/base/forms.py @@ -17,7 +17,8 @@ from django.utils.translation import string_concat from sapl.base.models import Autor, TipoAutor from sapl.crispy_layout_mixin import (SaplFormLayout, form_actions, to_column, to_row) -from sapl.comissoes.models import Reuniao +from sapl.audiencia.models import AudienciaPublica,TipoAudienciaPublica +from sapl.comissoes.models import Reuniao, Comissao from sapl.materia.models import (MateriaLegislativa, UnidadeTramitacao, StatusTramitacao) from sapl.parlamentares.models import SessaoLegislativa from sapl.sessao.models import SessaoPlenaria @@ -696,6 +697,35 @@ class RelatorioReuniaoFilterSet(django_filters.FilterSet): form_actions(label='Pesquisar')) ) +class RelatorioAudienciaFilterSet(django_filters.FilterSet): + + @property + def qs(self): + parent = super(RelatorioAudienciaFilterSet, self).qs + return parent.distinct().order_by('-data', 'tipo') + + class Meta: + model = AudienciaPublica + fields = ['tipo', 'data', + 'nome'] + + def __init__(self, *args, **kwargs): + super(RelatorioAudienciaFilterSet, self).__init__( + *args, **kwargs) + + row1 = to_row([('data', 12)]) + row2 = to_row( + [('tipo', 4), + ('nome', 4)]) + + self.form.helper = FormHelper() + self.form.helper.form_method = 'GET' + self.form.helper.layout = Layout( + Fieldset(_('Audiência Pública'), + row1, row2, + form_actions(label='Pesquisar')) + ) + class RelatorioMateriasTramitacaoilterSet(django_filters.FilterSet): diff --git a/sapl/base/urls.py b/sapl/base/urls.py index 84ff694fd..93a5b1cd3 100644 --- a/sapl/base/urls.py +++ b/sapl/base/urls.py @@ -16,13 +16,14 @@ from .forms import LoginForm, NovaSenhaForm, RecuperarSenhaForm from .views import (AlterarSenha, AppConfigCrud, CasaLegislativaCrud, CreateUsuarioView, DeleteUsuarioView, EditUsuarioView, HelpTopicView, ListarUsuarioView, LogotipoView, - RelatorioAtasView, RelatorioDataFimPrazoTramitacaoView, + RelatorioAtasView, RelatorioAudienciaView, + RelatorioDataFimPrazoTramitacaoView, RelatorioHistoricoTramitacaoView, RelatorioMateriasPorAnoAutorTipoView, RelatorioMateriasPorAutorView, - RelatorioReuniaoView, RelatorioMateriasTramitacaoView, - RelatorioPresencaSessaoView, SaplSearchView) + RelatorioPresencaSessaoView, + RelatorioReuniaoView, SaplSearchView) app_name = AppConfig.name @@ -108,6 +109,9 @@ urlpatterns = [ url(r'^sistema/relatorios/reuniao$', RelatorioReuniaoView.as_view(), name='reuniao'), + url(r'^sistema/relatorios/audiencia$', + RelatorioAudienciaView.as_view(), + name='audiencia'), url(r'^email/validate/(?P[0-9A-Za-z_\-]+)/' '(?P[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})$', diff --git a/sapl/base/views.py b/sapl/base/views.py index 85683dd60..ce0e8e0cf 100644 --- a/sapl/base/views.py +++ b/sapl/base/views.py @@ -25,7 +25,8 @@ from sapl import settings from sapl.base.forms import AutorForm, AutorFormForAdmin, TipoAutorForm from sapl.base.models import Autor, TipoAutor from sapl.crud.base import CrudAux, make_pagination -from sapl.comissoes.models import Reuniao +from sapl.audiencia.models import AudienciaPublica, TipoAudienciaPublica +from sapl.comissoes.models import Reuniao, Comissao from sapl.materia.models import (Autoria, MateriaLegislativa, TipoMateriaLegislativa, StatusTramitacao, UnidadeTramitacao) from sapl.sessao.models import (PresencaOrdemDia, SessaoPlenaria, @@ -35,13 +36,14 @@ from sapl.utils import (parlamentares_ativos, sapl_logger, from .forms import (AlterarSenhaForm, CasaLegislativaForm, ConfiguracoesAppForm, RelatorioAtasFilterSet, + RelatorioAudienciaFilterSet, RelatorioDataFimPrazoTramitacaoFilterSet, RelatorioHistoricoTramitacaoFilterSet, RelatorioMateriasPorAnoAutorTipoFilterSet, RelatorioMateriasPorAutorFilterSet, - RelatorioReuniaoFilterSet, RelatorioMateriasTramitacaoilterSet, - RelatorioPresencaSessaoFilterSet, UsuarioCreateForm, + RelatorioPresencaSessaoFilterSet, + RelatorioReuniaoFilterSet, UsuarioCreateForm, UsuarioEditForm) from .models import AppConfig, CasaLegislativa @@ -457,18 +459,52 @@ class RelatorioReuniaoView(FilterView): 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) if self.request.GET['comissao']: - tipo = self.request.GET['comissao'] + comissao = self.request.GET['comissao'] context['comissao'] = (str(Comissao.objects.get(id=comissao))) else: context['comissao'] = '' return context +class RelatorioAudienciaView(FilterView): + model = AudienciaPublica + filterset_class = RelatorioAudienciaFilterSet + template_name = 'base/RelatorioAudiencia_filter.html' + + def get_filterset_kwargs(self, filterset_class): + super(RelatorioAudienciaView, + self).get_filterset_kwargs(filterset_class) + + kwargs = {'data': self.request.GET or None} + return kwargs + + def get_context_data(self, **kwargs): + context = super(RelatorioAudienciaView, + self).get_context_data(**kwargs) + context['title'] = _('Audiência Pública') + 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) + + if self.request.GET['tipo']: + tipo = self.request.GET['tipo'] + context['tipo'] = (str(TipoAudienciaPublica.objects.get(id=tipo))) + else: + context['tipo'] = '' + + return context + + class RelatorioMateriasTramitacaoView(FilterView): model = MateriaLegislativa diff --git a/sapl/templates/base/RelatorioAudiencia_filter.html b/sapl/templates/base/RelatorioAudiencia_filter.html new file mode 100644 index 000000000..404ffe10f --- /dev/null +++ b/sapl/templates/base/RelatorioAudiencia_filter.html @@ -0,0 +1,34 @@ +{% extends "crud/list.html" %} +{% load i18n %} +{% load crispy_forms_tags %} + +{% block base_content %} + {% if not show_results %} + {% crispy filter.form %} + {% endif %} + + {% if show_results %} + +



+ + + + + + + + + {% for audiencia in object_list %} + + + + + {% endfor %} + +
Tipo de AudiênciaNome
+ {{audiencia.tipo}} + {{audiencia.nome}}
+ {% endif %} +{% endblock base_content %} \ No newline at end of file diff --git a/sapl/templates/base/RelatorioReuniao_filter.html b/sapl/templates/base/RelatorioReuniao_filter.html index 40a6f4625..dba1fcf87 100644 --- a/sapl/templates/base/RelatorioReuniao_filter.html +++ b/sapl/templates/base/RelatorioReuniao_filter.html @@ -12,23 +12,27 @@ {% trans 'Fazer nova pesquisa' %}



- - - - - - - - - {% for reuniao in object_list %} - - - + {% if object_list|length > 0 %} +
ComissaoNome
- {{reuniao.comissao}} - {{reuniao.nome}}
+ + + + - {% endfor %} - -
ComissaoNome
+ + + {% for reuniao in object_list %} + + + {{reuniao.comissao}} + + {{reuniao.nome}} + + {% endfor %} + + + {% else %} +

Nenhum reunião foi encontrada!

+ {% endif %} {% endif %} {% endblock base_content %} \ No newline at end of file diff --git a/sapl/templates/base/relatorios_list.html b/sapl/templates/base/relatorios_list.html index 3808ca97e..3e9da0d1c 100644 --- a/sapl/templates/base/relatorios_list.html +++ b/sapl/templates/base/relatorios_list.html @@ -44,6 +44,10 @@ Reunião de Comissão Reunião de Comissão por data. + + Audiência Pública + Audiência Pública com o tipo. +