From 545da58797dbdf90df677e324daabfa45b75fd03 Mon Sep 17 00:00:00 2001 From: LeandroRoberto Date: Fri, 16 Sep 2016 13:34:48 -0300 Subject: [PATCH] Permite sel de ausencia parcial no per. selecionado MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Na versão anterior do queryset era retornado apenas parlamentares que possuissem ao menos 1 presença no período selecionado. Na versão deste commit, passa estar no resultado parlamentares com ausencia total de tipo no período compreendido. Total de tipo (sessao_count ou ordem_count) pois o exclude no final do queryset remove as ausências totais. Ausências totais (os dois juntos) é uma informação relevante a ser dada, porém, seria mais produtiva com um filtro específico de legislatura agregado ao período ou não. Veja, como não existe restrição de legislatura, parlamentares de 50 anos atrás, sairia no relatório sem o exclude no final do queryset, coisa esta um tanto poluidora e irrelevante, em contraste com ausências totais na legislatura atual, por exemplo. Não há como esses antigos parlamentares (presentes na base para registro histórico) não aparecerem a não ser com um filtro específico para legislatura ou intervalo de legislaturas. --- .gitignore | 3 +++ sapl/base/views.py | 23 ++++++++++++++--------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index 0740715ca..b30c9723f 100644 --- a/.gitignore +++ b/.gitignore @@ -82,6 +82,9 @@ target/ .vagrant *.sublime-project *.sublime-workspace +.ipynb_checkpoints/ +*.ipynb + # specific to this project collected_static diff --git a/sapl/base/views.py b/sapl/base/views.py index c0c228c39..db1f7cc64 100644 --- a/sapl/base/views.py +++ b/sapl/base/views.py @@ -80,15 +80,20 @@ class RelatorioPresencaSessaoView(FilterView): param2 = {'sessaoplenariapresenca__%s' % sufixo: _range} pls = Parlamentar.objects.filter( - Q(**param1) & Q(**param2)).annotate( - sessao_count=Count( - 'sessaoplenariapresenca__sessao_plenaria__data_inicio', - distinct=True), - ordemdia_count=Count( - 'presencaordemdia__sessao_plenaria', - distinct=True), - sessao_porc=Count(0), - ordemdia_porc=Count(0)) + (Q(**param1) | Q(presencaordemdia__isnull=True)) & + (Q(**param2) | Q(sessaoplenariapresenca__isnull=True)) + ).annotate( + sessao_count=Count( + 'sessaoplenariapresenca__sessao_plenaria', + distinct=True), + ordemdia_count=Count( + 'presencaordemdia__sessao_plenaria', + distinct=True), + sessao_porc=Count(0), + ordemdia_porc=Count(0) + ).exclude( + sessao_count=0, + ordemdia_count=0) total_ordemdia = OrdemDia.objects.order_by( 'sessao_plenaria').filter(**param0).distinct(