Example #1
0
File: views.py Project: dec9/sapl
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})
Example #2
0
    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