def frente_atualiza_lista_parlamentares(request): ''' :param request: recebe os parâmetros do GET da chamada Ajax :return: retorna a lista atualizada dos parlamentares ''' ativos = json.loads(request.GET['ativos']) parlamentares = Parlamentar.objects.all() if ativos: if 'data_criacao' in request.GET and request.GET['data_criacao']: data_criacao = json_date_convert(request.GET['data_criacao']) if 'data_extincao' in request.GET and request.GET['data_extincao']: data_extincao = json_date_convert(request.GET['data_extincao']) parlamentares = parlamentares_ativos(data_criacao, data_extincao) else: parlamentares = parlamentares_ativos(data_criacao) parlamentares_list = [(p.id, p.__str__()) for p in parlamentares] return JsonResponse({'parlamentares_list': parlamentares_list})
def get_context_data(self, **kwargs): context = super(RelatorioPresencaSessaoView, self).get_context_data(**kwargs) context['title'] = _('Presença dos parlamentares nas sessões') # Verifica se os campos foram preenchidos if not self.filterset.form.is_valid(): return context # ===================================================================== # if 'salvar' not in self.request.GET: where = context['object_list'].query.where _range = where.children[0].rhs sufixo = 'sessao_plenaria__data_inicio__range' param0 = {'%s' % sufixo: _range} # Parlamentares com Mandato no intervalo de tempo (Ativos) parlamentares_qs = parlamentares_ativos( _range[0], _range[1]).order_by('nome_parlamentar') parlamentares_id = parlamentares_qs.values_list('id', flat=True) # Presenças de cada Parlamentar em Sessões presenca_sessao = SessaoPlenariaPresenca.objects.filter( parlamentar_id__in=parlamentares_id, sessao_plenaria__data_inicio__range=_range).values_list( 'parlamentar_id').annotate(sessao_count=Count('id')) # Presenças de cada Ordem do Dia presenca_ordem = PresencaOrdemDia.objects.filter( parlamentar_id__in=parlamentares_id, sessao_plenaria__data_inicio__range=_range).values_list( 'parlamentar_id').annotate(sessao_count=Count('id')) total_ordemdia = PresencaOrdemDia.objects.filter(**param0).distinct( 'sessao_plenaria__id').order_by('sessao_plenaria__id').count() total_sessao = context['object_list'].count() # Completa o dicionario as informacoes parlamentar/sessao/ordem parlamentares_presencas = [] for i, p in enumerate(parlamentares_qs): parlamentares_presencas.append({ 'parlamentar': p, 'sessao_porc': 0, 'ordemdia_porc': 0 }) try: sessao_count = presenca_sessao.get(parlamentar_id=p.id)[1] except ObjectDoesNotExist: sessao_count = 0 try: ordemdia_count = presenca_ordem.get(parlamentar_id=p.id)[1] except ObjectDoesNotExist: ordemdia_count = 0 parlamentares_presencas[i].update({ 'sessao_count': sessao_count, 'ordemdia_count': ordemdia_count }) if total_sessao != 0: parlamentares_presencas[i].update({ 'sessao_porc': round(sessao_count * 100 / total_sessao, 2) }) if total_ordemdia != 0: parlamentares_presencas[i].update({ 'ordemdia_porc': round(ordemdia_count * 100 / total_ordemdia, 2) }) context['date_range'] = _range context['total_ordemdia'] = total_ordemdia context['total_sessao'] = context['object_list'].count() context['parlamentares'] = parlamentares_presencas context['periodo'] = (self.request.GET['data_inicio_0'] + ' - ' + self.request.GET['data_inicio_1']) # ===================================================================== qr = self.request.GET.copy() context['filter_url'] = ('&' + qr.urlencode()) if len(qr) > 0 else '' context['show_results'] = show_results_filter_set(qr) return context