Exemplo n.º 1
0
    def get_queryset(self):
        '''
        Retorna as proposições originais ou apensadas de um parlamentar.
        Se não for passado um interesse como argumento,
        os dados retornados serão os do interesse default (leggo).
        '''
        interesse_arg = self.request.query_params.get('interesse')
        tema_arg = self.request.query_params.get('tema')
        destaques_arg = self.request.query_params.get('destaque')

        if interesse_arg is None:
            interesse_arg = 'leggo'
        interesses = get_filtered_interesses(interesse_arg, tema_arg)

        id_autor_arg = self.kwargs['id_autor']

        autorias = Autoria.objects

        if destaques_arg == 'true':
            destaques = get_filtered_destaques(destaques_arg)
            autorias = (autorias.filter(id_leggo__in=destaques))

        autorias = (autorias.filter(
            id_leggo__in=interesses.values('id_leggo'),
            id_autor_parlametria=id_autor_arg,
            data__gte='2019-01-31',
            tipo_documento='Prop. Original / Apensada').distinct(
                'id_autor_parlametria',
                'id_documento').values('id_autor_parlametria', 'id_documento',
                                       'peso_autor_documento', 'id_leggo',
                                       'data', 'descricao_tipo_documento',
                                       'url_inteiro_teor', 'tipo_documento',
                                       'tipo_acao', 'sigla'))

        return autorias
    def get(self, request, format=None):

        interesseArg = self.request.query_params.get("interesse")
        temaArg = self.request.query_params.get('tema')
        destaqueArg = self.request.query_params.get('destaque')

        # Adiciona interesse default
        if interesseArg is None:
            interesseArg = "leggo"

        interesses = get_filtered_interesses(interesseArg, temaArg)

        props = Proposicao.objects

        if destaqueArg == 'true':
            destaques = get_filtered_destaques(destaqueArg)
            props = props.filter(id_leggo__in=destaques)

        props = (
            props.filter(id_leggo__in=interesses.values('id_leggo'))
            .distinct()
            .aggregate(numero_proposicoes=Count('id_leggo'))
        )

        return JsonResponse(props, status=status.HTTP_200_OK)
Exemplo n.º 3
0
    def get_queryset(self):
        """
        Retorna parlamentares e a quantidade de relatorias
        """
        interesseArg = self.request.query_params.get("interesse")
        tema_arg = self.request.query_params.get("tema")
        destaques_arg = self.request.query_params.get('destaque')

        if interesseArg is None:
            interesseArg = "leggo"
        interesses = get_filtered_interesses(interesseArg, tema_arg)

        etapas = EtapaProposicao.objects

        if destaques_arg == 'true':
            destaques = get_filtered_destaques(destaques_arg)
            etapas = (
                etapas.filter(id_leggo__in=destaques)
            )

        queryset = (
            etapas.filter(
                id_leggo__in=interesses.values("id_leggo"), relator_id__isnull=False
            )
            .values("relator_id", "relator_id_parlametria")
            .annotate(quantidade_relatorias=Count("relator_id"))
            .order_by("-quantidade_relatorias")
        )

        return queryset
Exemplo n.º 4
0
    def get_queryset(self):
        """
        Retorna id's e quantidade de relatorias de um determinado parlamentar
        """
        leggo_id_autor = self.kwargs["id_autor"]
        interesseArg = self.request.query_params.get("interesse")
        tema_arg = self.request.query_params.get("tema")
        destaques_arg = self.request.query_params.get('destaque')

        etapas = EtapaProposicao.objects

        if destaques_arg == 'true':
            destaques = get_filtered_destaques(destaques_arg)
            etapas = (
                etapas.filter(id_leggo__in=destaques)
            )

        if interesseArg is None:
            interesseArg = "leggo"
        interesses = get_filtered_interesses(interesseArg, tema_arg)

        queryset = etapas.filter(
            id_leggo__in=interesses.values("id_leggo"),
            relator_id_parlametria=leggo_id_autor,
        ).all()

        return queryset
Exemplo n.º 5
0
    def get_queryset(self):
        """
        Retorna a atividade parlamentar por interesse e tema de um parlamentar.
        """
        leggo_id_autor = self.kwargs["id_autor"]
        tema_arg = self.request.query_params.get("tema")
        interesse_arg = self.request.query_params.get("interesse")
        destaques_arg = self.request.query_params.get('destaque')

        if interesse_arg is None:
            interesse_arg = "leggo"
        interesses = get_filtered_interesses(interesse_arg, tema_arg)

        atores = Atores.objects

        if destaques_arg == 'true':
            destaques = get_filtered_destaques(destaques_arg)
            atores = (
                atores.filter(id_leggo__in=destaques)
            )

        atores = (
            atores.filter(id_leggo__in=interesses.values("id_leggo"))
            .filter(tipo_acao__in=['Proposição', 'Recurso'])
            .select_related("entidade")
            .values(
                "id_autor_parlametria"
            )
            .annotate(
                total_documentos=Sum("num_documentos"),
                peso_documentos=Sum("peso_total_documentos"),
            )
            .prefetch_related(Prefetch("interesse", queryset=interesses))
        )
        min_max = atores.aggregate(
            max_peso_documentos=Max("peso_documentos"),
            min_peso_documentos=Min("peso_documentos"))
        ator = atores.filter(id_autor_parlametria=leggo_id_autor).annotate(
            max_peso_documentos=Value(min_max["max_peso_documentos"], FloatField()),
            min_peso_documentos=Value(min_max["min_peso_documentos"], FloatField())
        )

        return ator
Exemplo n.º 6
0
    def get_queryset(self):
        """
        Retorna dados básicos e de atividade parlamentar por interesse.
        """
        tema_arg = self.request.query_params.get("tema")
        interesse_arg = self.request.query_params.get("interesse")
        destaques_arg = self.request.query_params.get('destaque')

        if interesse_arg is None:
            interesse_arg = "leggo"
        interesses = get_filtered_interesses(interesse_arg, tema_arg)

        atores = Atores.objects

        if destaques_arg == 'true':
            destaques = get_filtered_destaques(destaques_arg)
            atores = (
                atores.filter(id_leggo__in=destaques)
            )

        atuacao = (
            atores.filter(id_leggo__in=interesses.values("id_leggo"))
            .select_related("entidade")
            .values(
                "id_autor",
                "id_autor_parlametria",
                "entidade__nome",
                "entidade__uf",
                "entidade__partido",
                "casa_autor",
                "id_ext",
                "casa",
                "tipo_generico",
                "tipo_acao",
                "sigla_local",
                "num_documentos",
                "peso_total_documentos"
            )
            .prefetch_related(Prefetch("interesse", queryset=interesses))
        )
        return atuacao