File size: 572 Bytes
67aa1ca
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
"""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"