diff --git a/sapl/base/forms.py b/sapl/base/forms.py index a895f41e8..044b99f61 100644 --- a/sapl/base/forms.py +++ b/sapl/base/forms.py @@ -23,6 +23,7 @@ from sapl.crispy_layout_mixin import (SaplFormLayout, form_actions, to_column, from sapl.audiencia.models import AudienciaPublica,TipoAudienciaPublica from sapl.comissoes.models import Reuniao, Comissao from sapl.materia.models import (MateriaLegislativa, UnidadeTramitacao, StatusTramitacao) +from sapl.norma.models import (NormaJuridica) from sapl.parlamentares.models import SessaoLegislativa from sapl.sessao.models import SessaoPlenaria from sapl.settings import MAX_IMAGE_UPLOAD_SIZE @@ -688,6 +689,46 @@ class RelatorioAtasFilterSet(django_filters.FilterSet): ) +class RelatorioNormasMesFilterSet(django_filters.FilterSet): + + ano = django_filters.ChoiceFilter(required=True, + label='Ano da Norma', + choices=RANGE_ANOS) + + filter_overrides = {models.DateField: { + 'filter_class': django_filters.DateFromToRangeFilter, + 'extra': lambda f: { + 'label': '%s (%s)' % (f.verbose_name, _('Ano')), + 'widget': RangeWidgetOverride} + }} + + + class Meta: + model = NormaJuridica + fields = ['ano'] + + def __init__(self, *args, **kwargs): + super(RelatorioNormasMesFilterSet, self).__init__( + *args, **kwargs) + + self.filters['ano'].label = 'Ano' + self.form.fields['ano'].required = True + + row1 = to_row([('ano', 12)]) + + self.form.helper = FormHelper() + self.form.helper.form_method = 'GET' + self.form.helper.layout = Layout( + Fieldset(_('Normas por mês do ano.'), + row1, form_actions(label='Pesquisar')) + ) + + @property + def qs(self): + parent = super(RelatorioNormasMesFilterSet, self).qs + return parent.distinct().order_by('data') + + class RelatorioPresencaSessaoFilterSet(django_filters.FilterSet): filter_overrides = {models.DateField: { diff --git a/sapl/base/urls.py b/sapl/base/urls.py index 93a5b1cd3..911006c6e 100644 --- a/sapl/base/urls.py +++ b/sapl/base/urls.py @@ -23,7 +23,8 @@ from .views import (AlterarSenha, AppConfigCrud, CasaLegislativaCrud, RelatorioMateriasPorAutorView, RelatorioMateriasTramitacaoView, RelatorioPresencaSessaoView, - RelatorioReuniaoView, SaplSearchView) + RelatorioReuniaoView, SaplSearchView, + RelatorioAtosPublicadosMesView) app_name = AppConfig.name @@ -88,6 +89,8 @@ urlpatterns = [ template_name='base/relatorios_list.html'), name='relatorios_list'), url(r'^sistema/relatorios/materia-por-autor$', RelatorioMateriasPorAutorView.as_view(), name='materia_por_autor'), + url(r'^sistema/relatorios/relatorio-por-mes$', + RelatorioAtosPublicadosMesView.as_view(), name='atos_por_mes'), url(r'^sistema/relatorios/materia-por-ano-autor-tipo$', RelatorioMateriasPorAnoAutorTipoView.as_view(), name='materia_por_ano_autor_tipo'), diff --git a/sapl/base/views.py b/sapl/base/views.py index ca122ce9f..1002c2fed 100644 --- a/sapl/base/views.py +++ b/sapl/base/views.py @@ -30,6 +30,7 @@ from sapl.comissoes.models import Reuniao, Comissao from sapl.crud.base import CrudAux, make_pagination from sapl.materia.models import (Autoria, MateriaLegislativa, TipoMateriaLegislativa, StatusTramitacao, UnidadeTramitacao) +from sapl.norma.models import (NormaJuridica) from sapl.sessao.models import (PresencaOrdemDia, SessaoPlenaria, SessaoPlenariaPresenca) from sapl.utils import (parlamentares_ativos, @@ -45,7 +46,7 @@ from .forms import (AlterarSenhaForm, CasaLegislativaForm, RelatorioMateriasTramitacaoilterSet, RelatorioPresencaSessaoFilterSet, RelatorioReuniaoFilterSet, UsuarioCreateForm, - UsuarioEditForm) + UsuarioEditForm, RelatorioNormasMesFilterSet) from .models import AppConfig, CasaLegislativa @@ -744,6 +745,39 @@ class RelatorioMateriasPorAutorView(FilterView): return context +class RelatorioAtosPublicadosMesView(FilterView): + model = NormaJuridica + filterset_class = RelatorioNormasMesFilterSet + template_name = 'base/RelatorioNormaMes_filter.html' + + def get_context_data(self, **kwargs): + context = super(RelatorioAtosPublicadosMesView, + self).get_context_data(**kwargs) + context['title'] = _('Normas') + + # Verifica se os campos foram preenchidos + 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['ano'] = self.request.GET['ano'] + + normas_mes = {} + + # for norma in context['object_list']: + # import ipdb; ipdb.set_trace() + # pass + + # context['periodo'] = ( + # self.request.GET['data_inicio_0'] + + # ' - ' + self.request.GET['data_inicio_1']) + + return context + + class ListarUsuarioView(PermissionRequiredMixin, ListView): model = get_user_model() template_name = 'auth/user_list.html' diff --git a/sapl/templates/base/RelatorioHistoricoTramitacao_filter.html b/sapl/templates/base/RelatorioHistoricoTramitacao_filter.html index cca46d3ad..1151cd094 100644 --- a/sapl/templates/base/RelatorioHistoricoTramitacao_filter.html +++ b/sapl/templates/base/RelatorioHistoricoTramitacao_filter.html @@ -30,7 +30,7 @@
Mês: {{ norma.data }} | |
| Matéria | +Norma | +
|---|---|
| + {{norma.tipo.descricao}} - {{norma.tipo.sigla}} {{norma.numero}}/{{norma.ano}} + | +{{norma.ementa}} {{norma.observacao}} |
+