<commit_before># -*- encoding: utf-8 -*-
import datetime

from django.shortcuts import render
from django.db.models import Q

from . import forms
from pdl.models import Proyecto
from pdl.models import Seguimientos
from pdl.utils import do_pagination


def index(request):
    if request.method == 'GET':
        form = forms.SearchAdvancedForm(request.GET)
        if form.is_valid():
            keywords = clean_keywords_for_combined_search(form.cleaned_data)
            if len(keywords) > 0:
                return combined_search(keywords, form, request)

            # requests from stats view
            if form.cleaned_data['dictamen'] == 'NÚMERO TOTAL DE LEYES':
                return search_total_leyes(form, request)

            if form.cleaned_data['dictamen'] == 'Exonerados de dictamen':
                return search_exonerados_dictamen(form, request)

            if form.cleaned_data['dispensados_2da_votacion'] == 'TOTAL dispensados':
                return search_dispensados_todos(form, request)

            if form.cleaned_data['dispensados_2da_votacion'] == 'TOTAL aprobados':
                return search_total_aprobados(form, request)

            if form.cleaned_data['dispensados_2da_votacion'] == 'Dispensados por acuerdo del pleno':
                return search_dispensados_acuerdo_pleno(form, request)

            if form.cleaned_data['dispensados_2da_votacion'] == 'Dispensados por junta portavoces':
                return search_dispensados_junta_portavoces(form, request)

            if form.cleaned_data['dispensados_2da_votacion'] == 'Otros proyectos dispensados':
                return search_dispensados_otros(form, request)

            return render(request, "search_advanced/index.html", {
                "form": form,
            })
        else:
            print(form.errors)
            return render(request, "search_advanced/index.html", {
                "form": form,
            })


def clean_keywords_for_combined_search(cleaned_data):
    keywords = {}
    for k, v in cleaned_data.items():
        if v != '' and v is not None:
            if v in ['---', '--Escoger bancada--']:
                continue
            if k in ['dispensados_2da_votacion', 'dictamen']:
                continue
            keywords[k] = v
    return keywords


def combined_search(keywords, form, request):
    msg = ''
    queryset = Proyecto.objects.all().order_by('-codigo')
    if 'query' in keywords:
        msg = "Número de proyectos encontrados"
        queryset = queryset.filter(titulo__icontains=keywords['query'])
    if 'date_to' and 'date_from' in keywords:
        msg = "Número de proyectos entre fecha indicada"
        queryset = queryset.filter(fecha_presentacion__range=(keywords['date_from'], keywords['date_to']))
    if 'congresista' in keywords:
        msg = "Número de proyectos de congresista {}".format(keywords['congresista'])
        queryset = queryset.filter(congresistas__icontains=keywords['congresista'])
    if 'grupo_parlamentario' in keywords:
        msg = "Número de proyectos de bancada {}".format(keywords['grupo_parlamentario'])
        queryset = queryset.filter(grupo_parlamentario=keywords['grupo_parlamentario'])
    if 'comision' in keywords:
        msg = "Número de proyectos de comisión {}".format(keywords['comision'])
        queryset = filter_by_comision(keywords, queryset)

    if len(keywords) > 1:
        msg = "Número de proyectos encontrados"

    date_from, date_to = convert_to_iso_dates(keywords)

    if queryset:
        obj = do_pagination(request, queryset, search=True, advanced_search=True)
        return render(request, "search_advanced/index.html", {
            "query": keywords['query'],
            "date_from": date_from,
            "date_to": date_to,
            "result_count": len(queryset),
            "extra_result_msg": msg,
            "items": obj['items'],
            "pretty_items": obj['pretty_items'],
            "first_half": obj['first_half'],
            "second_half": obj['second_half'],
            "first_page": obj['first_page'],
            "last_page": obj['last_page'],
            "current": obj['current'],
            "form": form,
        })
    else:
        return render(request, "search_advanced/index.html", {<commit_msg>use comission for pagination<commit_after># -*- encoding: utf-8 -*-
import datetime

from django.shortcuts import render
from django.db.models import Q

from . import forms
from pdl.models import Proyecto
from pdl.models import Seguimientos
from pdl.utils import do_pagination


def index(request):
    if request.method == 'GET':
        form = forms.SearchAdvancedForm(request.GET)
        if form.is_valid():
            keywords = clean_keywords_for_combined_search(form.cleaned_data)
            if len(keywords) > 0:
                return combined_search(keywords, form, request)

            # requests from stats view
            if form.cleaned_data['dictamen'] == 'NÚMERO TOTAL DE LEYES':
                return search_total_leyes(form, request)

            if form.cleaned_data['dictamen'] == 'Exonerados de dictamen':
                return search_exonerados_dictamen(form, request)

            if form.cleaned_data['dispensados_2da_votacion'] == 'TOTAL dispensados':
                return search_dispensados_todos(form, request)

            if form.cleaned_data['dispensados_2da_votacion'] == 'TOTAL aprobados':
                return search_total_aprobados(form, request)

            if form.cleaned_data['dispensados_2da_votacion'] == 'Dispensados por acuerdo del pleno':
                return search_dispensados_acuerdo_pleno(form, request)

            if form.cleaned_data['dispensados_2da_votacion'] == 'Dispensados por junta portavoces':
                return search_dispensados_junta_portavoces(form, request)

            if form.cleaned_data['dispensados_2da_votacion'] == 'Otros proyectos dispensados':
                return search_dispensados_otros(form, request)

            return render(request, "search_advanced/index.html", {
                "form": form,
            })
        else:
            print(form.errors)
            return render(request, "search_advanced/index.html", {
                "form": form,
            })


def clean_keywords_for_combined_search(cleaned_data):
    keywords = {}
    for k, v in cleaned_data.items():
        if v != '' and v is not None:
            if v in ['---', '--Escoger bancada--']:
                continue
            if k in ['dispensados_2da_votacion', 'dictamen']:
                continue
            keywords[k] = v
    return keywords


def combined_search(keywords, form, request):
    msg = ''
    queryset = Proyecto.objects.all().order_by('-codigo')
    if 'query' in keywords:
        query = keywords['query']
        msg = "Número de proyectos encontrados"
        queryset = queryset.filter(titulo__icontains=keywords['query'])
    else:
        query = ""

    if 'date_to' and 'date_from' in keywords:
        msg = "Número de proyectos entre fecha indicada"
        queryset = queryset.filter(fecha_presentacion__range=(keywords['date_from'], keywords['date_to']))
    if 'congresista' in keywords:
        msg = "Número de proyectos de congresista {}".format(keywords['congresista'])
        queryset = queryset.filter(congresistas__icontains=keywords['congresista'])
    if 'grupo_parlamentario' in keywords:
        msg = "Número de proyectos de bancada {}".format(keywords['grupo_parlamentario'])
        queryset = queryset.filter(grupo_parlamentario=keywords['grupo_parlamentario'])

    if 'comision' in keywords:
        comision = keywords['comision']
        msg = "Número de proyectos de comisión {}".format(keywords['comision'])
        queryset = filter_by_comision(keywords, queryset)
    else:
        comision = ""

    if len(keywords) > 1:
        msg = "Número de proyectos encontrados"

    date_from, date_to = convert_to_iso_dates(keywords)

    if queryset:
        obj = do_pagination(request, queryset, search=True, advanced_search=True)
        return render(request, "search_advanced/index.html", {
            "query": query,
            "comision": comision,
            "date_from": date_from,
            "date_to": date_to,
            "result_count": len(queryset),
            "extra_result_msg": msg,
            "items": obj['items'],
            "pretty_items": obj['pretty_items'],
            "first_half": obj['first_half'],
            "second_half": obj['second_half'],
            "first_page": obj['first_page'],
            "last_page": obj['last_page'],
            "current": obj['current'],
            "form": form,
        })
    else:
        return render(request, "search_advanced/index.html", {
{'fraction_non_alphanumeric': 0.10854133272269292, 'fraction_numerical': 0.002060911380810625, 'mean_word_length': 2.6274916943521593, 'pattern_counts': {'":': 31, '<': 3, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3094068', 'n_tokens_mistral': 2694, 'n_tokens_neox': 2585, 'n_words': 565}