Modulo searcher

Formularios

searcher.forms

class searcher.forms.SearchPostForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None)

Bases: django.forms.forms.Form

Clase encargada de generar de forma dinámica el formulario que permite hacer las búsquedas

Atributos

  • LANGUAGES: Lista de lenguas en las cuales se pueden hacer búsquedas con el formato (KEY, VALUE)
    type

    list

  • VARIANTS: Lista de variantes disponibles con el formato (KEY, VALUE)
    type

    list

  • search_placeholder: Variable que modifica el placeholder del elemento input para insertar el texto a buscar
    type

    str

  • variant_label: Variable que modifica la etiqueta de las variantes del corpus
    type

    str

  • idioma: Objeto de django forms que renderea un elemento <select> de html
    type

    form.ChoiceField

  • busqueda: Objeto de django forms que renderea un elemento <input> de html
    type

    form.CharField

  • varianteObjeto de django forms que renderea un elemento <select> de html con multiples opciones
    type

    form.MultipleChoiceField

LANGUAGES = [('L1', 'L1'), ('L2', 'L2')]
VARIANTS = []
base_fields = {'busqueda': <django.forms.fields.CharField object>, 'idioma': <django.forms.fields.ChoiceField object>, 'variante': <django.forms.fields.MultipleChoiceField object>}
declared_fields = {'busqueda': <django.forms.fields.CharField object>, 'idioma': <django.forms.fields.ChoiceField object>, 'variante': <django.forms.fields.MultipleChoiceField object>}
property media
search_placeholder = 'Búsqueda'
variant_label = 'Variantes'
variantes = {'status': 'error'}
variants_attrs = {'class': 'form-control', 'disabled': True}

Funciones auxiliares

searcher.helpers

searcher.helpers.data_processor(raw_data, idioma, query)

Procesa los datos crudo de la API de Elasticsearh para devolver solo los resultados

Función que recibe una lista con los datos que prove la API de elacticsearch, procesa los datos para ignorar los metadatos del API y retorna solo los resultados de búsqueda como una lista.

Parámetros
  • raw_data – Lista de resultados crudos del API de Elasticsearch

  • idioma – ISO del idioma de búsqueda

  • query – Cadena de búsqueda

Type

list

Type

str

Type

str

Devuelve

Resultados de búsqueda

Tipo del valor devuelto

list

Función que liga el nombre de un documento con su archivo pdf

Parámetros
  • doc_name – Nombre del documento

  • doc_file – Nombre del archivo

  • path – Path donde se encuentran los pdfs

Type

str

Type

str

Type

str

Devuelve

Nombre del documento con la liga al pdf

Tipo del valor devuelto

str

searcher.helpers.ethno_btn_maker(variante)

Crea botones ``html`` con información ethnologue

Función encargada de construir los botones para la columna de variantes que despliegan los modals con la información obtenida de la plataforma ethnologue

Parámetros

variante – Variante de la lengua 2

Type

str

Devuelve

Cadenas con los botones en html

Tipo del valor devuelto

str

searcher.helpers.ethno_table_maker(soup)

Crea la tabla html con información de ethnologue

Con base en la variante en turno se crea, dinamicamente, una cadena que contiene una tabla html que será rendereada por un modal en la vista de busqueda.

Parámetros

soup – Objeto con la página html de ethnologue

Type

BeautifulSoup Object

Devuelve

Tabla en formato html

Tipo del valor devuelto

str

searcher.helpers.get_variants()

Obtiene las variantes actuales de elasticsearch

Función encargada de obtener las variantes existentes en el índice de elasticsearch a través del API aggregations. Se obtienen en un diccionario con el ISO de la variante como llave y el nombre de la variante como valor. Se agrega al diccionario de variantes el estatus de la consulta (success o error).

Devuelve

variantes

Tipo del valor devuelto

dict

searcher.helpers.highlighter(hit, idioma, query)

Resalta la búsqueda realizada por el usuarix

Función que busca el campo highlight en los objetos devueltos por el API de elasticsearch y lo utilza para reemplazar el texto del idioma en el que se realizó la búsqueda. Si la búsqueda es en español, el texto dentro del campo highlight estará preprocesado por Elasticsearch.

Parámetros
  • hit – Resultado de búsqueda

  • idioma – ISO del idioma de búsqueda

  • query – Cadena de búsqueda

Type

list

Type

str

Type

str

Devuelve

Texto de los resultados resaltado

Tipo del valor devuelto

list

searcher.helpers.query_kreator(term)

Crea la estructura para busquedas en Elasticsearch

Función encargada de devolver el objeto con los elementos necesarios para realizar una búsqueda en Elasticsearch. Esto beneficia la limpieza del código reemplazando una variable estática

Parámetros

term – Consulta introducida por la usuaria desde el Frontend

Type

str

searcher.helpers.results_to_csv(data, variants)

Función que escribe los resultados de la consulta en archivo csv

Guarda los resultados de la consulta en formato csv en caso de que la usuaria quiera descargarlos.

Parámetros
  • data_response – Resultados de la consulta devueltos por el índice de elasticsearch

  • variants – Variantes actuales para saber si escribir variante o dejar el campo vacío.

Type

list

Type

dict

Devuelve

Estatus del archivo. True si fue escrito, False en caso contrario

Tipo del valor devuelto

bool

searcher.helpers.variant_to_query(variantes)

Toma las variantes seleccionadas y regresa una cadena que filtra resultados de búsqueda por variantes

Parámetros

variantes – Lista de keys de las variantes seleccionadas

Type

list

Devuelve

Cadena aceptada por el API de elasticsearch para filtrar

Tipo del valor devuelto

str

Rutas

searcher.urls

searcher.urls.path(route, view, kwargs=None, name=None, *, Pattern=<class 'django.urls.resolvers.RoutePattern'>)

Vistas

searcher.views

searcher.views.download_results(request)

Descarga los resultados de la busqueda actual

Vista asociada a botón que se encarga de descargar los resultados de la consulta actual

Parámetros

request – Objeto HttpRequet para pasar el estado de la app a través del sistema

Type

HttpRequest

Devuelve

Los resultados de busqueda en formato csv

searcher.views.ethnologue_data(request, iso_variant)

Búsca información de la variante en Ethnologue

Trae la información de la página de la variante de Ethnologue. Se scrappea con BeautifulSoup. Posteriormente se cra una tabla html con la función ethno_table_maker.

Parámetros

request – Objeto HttpRequet para pasar el estado de la app a través del sistema

Type

HttpRequest

Paran iso_variant

ISO de la variante

Type

str

Devuelve

Html con la información disponible de Ethnologue

Tipo del valor devuelto

str

searcher.views.search(request)

Realiza la búsqueda y muestra los resultados

Vista encargada de construir el archivo json que será mandado al API de Elasticsearch para ejecutar la query. Posteriorimente preprocesa la respuesta del API y envía las variables para ser desplegadas en el template sercher.html. Además, reenvia el formulario con la información previamente introducida para nuevas búsquedas.

Parámetros

request – Objeto HttpRequets para pasar el estado de la app a través del sistema

Type

HttpRequest

Devuelve

Resultados de búsqueda y formulario para nuevas búsquedas