coder16
updated claudio
67aa1ca
Raw
History Blame Contribute Delete
572 Bytes
"""Utilidades compartidas por los servicios."""
from __future__ import annotations
import re
import unicodedata
def slugify(value: str) -> str:
"""Convierte un texto en un slug apto para URLs.
Elimina acentos, pasa a minúsculas y reemplaza los separadores por
guiones.
"""
normalized = (
unicodedata.normalize("NFKD", value)
.encode("ascii", "ignore")
.decode("ascii")
)
normalized = re.sub(r"[^\w\s-]", "", normalized).strip().lower()
slug = re.sub(r"[-\s]+", "-", normalized)
return slug or "sin-nombre"