diff --git a/nombres/busqueda/handler.py b/nombres/busqueda/handler.py index 6b3f49c..a50a730 100644 --- a/nombres/busqueda/handler.py +++ b/nombres/busqueda/handler.py @@ -22,15 +22,38 @@ def remove_accents(input_str): return "".join([c for c in nfkd_form if not unicodedata.combining(c)]) -@dataclass -class Género: - nombre: str = "" - masculinidad: float = 0 +def femininidad(nombre): + sql1 = """ + SELECT COALESCE(frecuencia,0) + FROM mujeres WHERE nombre=:nombre + """ + sql2 = """ + SELECT COALESCE(frecuencia,0) + FROM hombres WHERE nombre=:nombre + """ + with connection.cursor() as cursor: + mujeres = cursor.execute(sql1, {"nombre": nombre.upper()}).fetchone() + mujeres = 0 if mujeres is None else mujeres[0] + hombres = cursor.execute(sql2, {"nombre": nombre.upper()}).fetchone() + hombres = 0 if hombres is None else hombres[0] + if hombres == mujeres == 0: + return 0.5 + return mujeres / (hombres + mujeres) def split_por_genero(nombres): - # TODO: reimplementar usando datos de España de género asignado - return {"f": nombres, "m": nombres} + femeninos = [] + masculinos = [] + for n in nombres: + fem = femininidad(n[1]) + if fem is None: + femeninos.append(n) + masculinos.append(n) + elif fem >= 0.5: + femeninos.append(n) + else: + masculinos.append(n) + return {"f": femeninos, "m": masculinos} def handle(req): diff --git a/nombres/busqueda/handler_test.py b/nombres/busqueda/handler_test.py index b07d5bf..1ce59c9 100644 --- a/nombres/busqueda/handler_test.py +++ b/nombres/busqueda/handler_test.py @@ -5,6 +5,7 @@ from .handler import handle # To disable testing, you can set the build_arg `TEST_ENABLED=false` on the CLI or in your stack.yml # https://docs.openfaas.com/reference/yaml/#function-build-args-build-args + def test_handle(): # assert handle("input") == "input" pass diff --git a/nombres/historico/handler.py b/nombres/historico/handler.py index 4f2b1be..244894e 100644 --- a/nombres/historico/handler.py +++ b/nombres/historico/handler.py @@ -25,7 +25,7 @@ def handle(req): """handle a request to the function Args: req (str): request body - + [nombre1, nombre2, ... nombreN] """ @@ -53,10 +53,10 @@ def handle(req): WHERE nombre = :nombre ORDER BY anio """ - cursor.execute(sql,{"nombre": nombre}) + cursor.execute(sql, {"nombre": nombre}) datos.update({r["anio"]: r["contador"] for r in cursor.fetchall()}) chart.add(nombre.title(), [datos[x] for x in range(1922, 2015)]) - + chart.x_labels = [str(n) for n in range(1922, 2015)] chart.x_labels_major = [str(n) for n in range(1920, 2020, 10)] diff --git a/nombres/historico/handler_test.py b/nombres/historico/handler_test.py index b07d5bf..1ce59c9 100644 --- a/nombres/historico/handler_test.py +++ b/nombres/historico/handler_test.py @@ -5,6 +5,7 @@ from .handler import handle # To disable testing, you can set the build_arg `TEST_ENABLED=false` on the CLI or in your stack.yml # https://docs.openfaas.com/reference/yaml/#function-build-args-build-args + def test_handle(): # assert handle("input") == "input" pass