예제 #1
0
    def get_queryset(self):
        '''
        Retorna as autorias dos parlamentares
        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')

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

        autorias = (Autoria.objects.filter(
            id_leggo__in=interesses.values('id_leggo'),
            data__gt='2019-01-31').distinct(
                'id_autor',
                'id_documento').select_related('etapa_proposicao').values(
                    'id_autor', 'casa_autor', 'id_documento', 'id_leggo',
                    'id_principal', 'casa', 'data', 'descricao_tipo_documento',
                    'tipo_documento', 'tipo_acao', 'peso_autor_documento',
                    'etapa_proposicao__sigla_tipo', 'etapa_proposicao__numero',
                    'etapa_proposicao__data_apresentacao'))

        return autorias
    def get_queryset(self):
        pautaQs = get_time_filtered_pauta(self.request)

        interesseArg = self.request.query_params.get("interesse")
        tema_arg = self.request.query_params.get('tema')
        # Adiciona interesse default
        if interesseArg is None:
            interesseArg = "leggo"
        interessesFiltered = get_filtered_interesses(interesseArg, tema_arg)
        destaquesFiltered = (Destaques.objects.filter(
            Q(criterio_aprovada_em_uma_casa=True) |
            Q(criterio_avancou_comissoes=True) |
            Q(criterio_req_urgencia_apresentado=True) |
            Q(criterio_req_urgencia_aprovado=True))
        )

        locaisFiltered = get_ultima_proposicao_local()

        props = (
            Proposicao.objects.filter(interesse__interesse=interesseArg)
            .distinct()
            .prefetch_related(
                "etapas",
                "progresso",
                "apensadas",
                Prefetch("etapas__pauta_historico", queryset=pautaQs),
                Prefetch("etapas__relatoria"),
                Prefetch("interesse", queryset=interessesFiltered),
                Prefetch("destaques", queryset=destaquesFiltered),
                Prefetch("locaisProposicao", queryset=locaisFiltered),
                Prefetch("apensadas__proposicao_principal")
            )
        )

        return props
예제 #3
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
예제 #4
0
    def get_queryset(self):
        """
        Retorna o progresso das proposições de um interesse.
        """

        interesseArg = self.request.query_params.get("interesse", "leggo")
        interesses = get_filtered_interesses(interesseArg)

        queryset = (Progresso.objects.filter(
            proposicao__id_leggo__in=interesses.values("id_leggo")).exclude(
                fase_global__icontains="Pré").select_related(
                    "proposicao").values(
                        "proposicao__id_leggo",
                        "proposicao__sigla_camara",
                        "proposicao__sigla_senado",
                        "fase_global",
                        "local",
                        "data_inicio",
                        "data_fim",
                        "local_casa",
                        "pulou",
                    ).annotate(is_mpv=Case(
                        When(
                            Q(proposicao__sigla_senado__startswith="MPV")
                            | Q(proposicao__sigla_camara__startswith="MPV"),
                            then=Value("True"),
                        ),
                        default=Value("False"),
                        output_field=CharField(),
                    )))

        return queryset
    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)
예제 #6
0
    def get_queryset(self):
        """
        Retorna dados básicos e de atividade de um parlamentar por interesse.
        """
        tema_arg = self.request.query_params.get("tema")
        interesse_arg = self.request.query_params.get("interesse")
        if interesse_arg is None:
            interesse_arg = "leggo"
        interesses = get_filtered_interesses(interesse_arg, tema_arg)
        id_autor_arg = self.kwargs["id_autor"]

        ator = (
            Atores.objects.filter(
                id_leggo__in=interesses.values("id_leggo"),
                id_autor_parlametria=id_autor_arg,
            )
            .select_related("entidade")
            .values(
                "id_autor",
                "id_autor_parlametria",
                "entidade__nome",
                "entidade__uf",
                "entidade__partido",
                "casa_autor",
                "bancada",
            )
            .order_by("-casa_autor")
            .distinct()
            .prefetch_related(Prefetch("interesse", queryset=interesses))
        )

        return ator
예제 #7
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
예제 #8
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
    def get_queryset(self):

        id_prop = self.kwargs["id"]
        interesseArg = self.request.query_params.get("interesse", "leggo")
        data_inicio = self.request.query_params.get("data_inicio", None)
        data_fim = self.request.query_params.get("data_fim", None)

        interesses = get_filtered_interesses(interesseArg)

        data_inicio_processada = None
        data_fim_processada = None

        try:
            if data_inicio is not None:
                data_inicio_processada = datetime.strptime(data_inicio, "%Y-%m-%d")
        except ValueError:
            return JsonResponse(
                {
                    "error": f"Data de início ({data_inicio}) inválida."
                    "Formato correto: yyyy-mm-dd"
                },
                status=status.HTTP_400_BAD_REQUEST,
            )

        try:
            data_fim_processada = (
                datetime.today()
                if data_fim is None
                else datetime.strptime(data_fim, "%Y-%m-%d")
            )
        except ValueError:
            print(
                f"Data de fim ({data_fim}) inválida. "
                "Utilizando data atual como data de fim."
            )
            data_fim_processada = datetime.today()

        queryset = TemperaturaHistorico.objects.filter(
            proposicao__id_leggo=id_prop)

        if data_inicio_processada is not None:
            queryset = queryset.filter(periodo__gte=data_inicio_processada)

        queryset = queryset.filter(periodo__lte=data_fim_processada)

        queryset = (
            queryset.filter(
                proposicao__id_leggo__in=interesses.values("id_leggo")
            )
            .order_by("-periodo")
        )

        return queryset
    def get_queryset(self):
        interesse_arg = self.request.query_params.get('interesse')
        tema_arg = self.request.query_params.get('tema')
        if interesse_arg is None:
            interesse_arg = 'leggo'
        interesses = get_filtered_interesses(interesse_arg, tema_arg)

        queryset = (RelatoresProposicao.objects.filter(
            id_leggo__in=interesses.values('id_leggo')).values(
                "id_leggo", "id_ext", "casa", "relator_id",
                "relator_id_parlametria", "relator_nome"))

        return queryset
예제 #11
0
    def get_queryset(self):

        interesse_arg = self.request.query_params.get("interesse", "leggo")

        interesses = get_filtered_interesses(interesse_arg)

        queryset = (
            Anotacao.objects.filter(
                id_leggo__in=interesses.values("id_leggo")
            )
            .values("id_leggo", "data_ultima_modificacao")
            .order_by("id_leggo", "-data_ultima_modificacao")
            .distinct("id_leggo")
        )
        print(queryset.query)

        return queryset
    def get_queryset(self):
        """
        Retorna lista de locais possíveis para um interesse
        """
        interesseArg = self.request.query_params.get("interesse")
        interesses = get_filtered_interesses(interesseArg)

        locaisFiltered = get_ultima_proposicao_local()

        query = (LocalAtualProposicao.objects.filter(
            id_leggo__in=interesses.values("id_leggo"),
            sigla_ultimo_local__in=locaisFiltered.values(
                "sigla_ultimo_local")).values('sigla_ultimo_local',
                                              'casa_ultimo_local',
                                              'nome_ultimo_local',
                                              'tipo_local').distinct())

        return query
예제 #13
0
    def get_queryset(self):
        """
        Retorna dados de peso político para os atores de um determinado interesse.
        Caso nenhum seja passado, o valor default será leggo.
        """
        interesse_arg = self.request.query_params.get("interesse")
        if interesse_arg is None:
            interesse_arg = "leggo"
        interesses = get_filtered_interesses(interesse_arg)

        lista_ids = list(
            Atores.objects.filter(
                id_leggo__in=interesses.values('id_leggo')).values_list(
                    "id_autor_parlametria", flat=True))

        data = get_peso_politico_lista(lista_ids)

        return data
예제 #14
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
예제 #15
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
    def get_queryset(self):
        id_prop = self.kwargs["id"]

        interesseArg = self.request.query_params.get("interesse")
        tema_arg = self.request.query_params.get('tema')
        # Adiciona interesse default
        if interesseArg is None:
            interesseArg = "leggo"

        interessesFiltered = get_filtered_interesses(interesseArg, tema_arg)
        locaisFiltered = get_ultima_proposicao_local()

        return (
            Proposicao.objects.filter(
                id_leggo=id_prop, interesse__interesse=interesseArg
            )
            .distinct()
            .prefetch_related(
                Prefetch("locaisProposicao", queryset=locaisFiltered),
                Prefetch("interesse", queryset=interessesFiltered))
        )