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
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_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)
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
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
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
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
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
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
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)) )