import os
import sys
import django
import unicodedata
import re
from pathlib import Path

# 添加项目根目录到Python路径
project_root = Path(__file__).resolve().parent
sys.path.insert(0, str(project_root))

# 设置Django环境
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'api.project_config.settings')
django.setup()

from api.models import Country, Team, Player

def generate_slug(name):
    """
    生成标准化的slug
    Unicode normalize 转 ASCII  非字母数字变 -  去重、去边界  小写
    """
    # Unicode normalize 转 ASCII
    slug = unicodedata.normalize('NFKD', name)
    slug = slug.encode('ascii', 'ignore').decode('ascii')
    
    # 非字母数字变 -
    slug = re.sub(r'[^a-zA-Z0-9]+', '-', slug)
    
    # 去重、去边界、小写
    slug = re.sub(r'^-+|-+$', '', slug)  # 去除边界短横线
    slug = re.sub(r'-+', '-', slug)      # 去除重复短横线
    slug = slug.lower()
    
    return slug

def populate_slugs():
    """
    填充所有模型的slug字段
    """
    print("开始填充slug字段...")
    
    # 填充国家slug
    print("填充国家slug...")
    countries = Country.objects.all()
    for country in countries:
        if not country.slug:
            country.slug = generate_slug(country.name)
            country.save()
            print(f"  国家: {country.name} -> {country.slug}")
    
    # 填充球队slug
    print("填充球队slug...")
    teams = Team.objects.all()
    for team in teams:
        if not team.slug:
            team.slug = generate_slug(team.name)
            team.save()
            print(f"  球队: {team.name} -> {team.slug}")
    
    # 填充球员slug
    print("填充球员slug...")
    players = Player.objects.all()
    for player in players:
        if not player.slug:
            player.slug = generate_slug(player.name)
            player.save()
            print(f"  球员: {player.name} -> {player.slug}")
    
    print("slug字段填充完成!")

if __name__ == "__main__":
    populate_slugs()