
    	h"                     T    d dl Z d dlZd dlmZ ddededefdZdedee   d	edefd
Zy)    N)Optionaltext
max_lengthreturnc                    | syt        j                  d|       } | j                         } t        j                  dd|       } t        j                  dd|       } | j                  d      } t        |       |kD  r| d| j                  d      } | S )u   
    Генерирует URL-слаг из текста.
    
    Args:
        text: Исходный текст
        max_length: Максимальная длина слага
    
    Returns:
        URL-слаг
     NFKDz[^\w\s-]z[-\s]+-N)unicodedata	normalizelowerresubstriplenrstrip)r   r   s     (/var/www/notifications/app/utils/slug.pygenerate_slugr      s        .D ::<D 66+r4(D66)S$'D ::c?D 4y:KZ '',K    slugexisting_slugs	tenant_idc                     | sd| dt        |      dz    S | }d}| d| |v r|dz  }| d| |v r|dkD  r| d| S |S )uq  
    Делает слаг уникальным, добавляя суффикс если необходимо.
    
    Args:
        slug: Базовый слаг
        existing_slugs: Список существующих слогов
        tenant_id: ID тенанта для уникальности
    
    Returns:
        Уникальный слаг
    z	template-r
      )r   )r   r   r   	base_slugcounters        r   make_slug_uniquer   (   s     9+Qs>':Q'>&?@@IGKq	
"n
41 Kq	
"n
4 {AgY''r   )d   )	r   r   typingr   strintr   listr    r   r   <module>r$      sN    	    s D3 S	 c c r   