Fix migration error

This commit is contained in:
2025-08-29 09:11:20 +09:00
parent a180c1e258
commit b91b522fa3
26 changed files with 5848 additions and 22 deletions

View File

@ -0,0 +1,146 @@
#!/usr/bin/env python3
import os
import sys
import django
# プロジェクト設定
sys.path.append('/app')
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')
django.setup()
from django.db import connection, transaction
import logging
# ログ設定
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
def assign_zekken_numbers_to_fc_gifu():
"""FC岐阜イベントID:10のチームにゼッケン番号を割り当て"""
print("=== FC岐阜イベントチームゼッケン番号割り当て ===")
with connection.cursor() as cursor:
# 1. FC岐阜イベントの現状確認
print("\n1. FC岐阜イベントID:10現状確認:")
cursor.execute("""
SELECT t.id, t.team_name, t.zekken_number, t.event_id
FROM rog_team t
JOIN rog_entry e ON t.id = e.team_id
WHERE e.event_id = 10
ORDER BY t.id;
""")
fc_teams = cursor.fetchall()
print(f" FC岐阜関連チーム数: {len(fc_teams)}")
print(" 現在の状況:")
for team in fc_teams[:5]: # 最初の5件のみ表示
print(f" Team ID:{team[0]}, Name:{team[1]}, Zekken:{team[2]}, Event:{team[3]}")
# 2. ゼッケン番号が未設定のチームを特定
teams_without_zekken = [team for team in fc_teams if not team[2]]
print(f"\n ゼッケン番号未設定チーム数: {len(teams_without_zekken)}")
if not teams_without_zekken:
print(" 🎉 すべてのチームにゼッケン番号が設定済み")
return
# 3. 既存のゼッケン番号を確認(競合回避)
print("\n2. 既存ゼッケン番号確認:")
cursor.execute("""
SELECT zekken_number
FROM rog_team
WHERE zekken_number IS NOT NULL AND zekken_number != ''
ORDER BY zekken_number;
""")
existing_zekkens = [row[0] for row in cursor.fetchall()]
print(f" 既存ゼッケン番号: {existing_zekkens}")
# 4. ユーザー確認
print(f"\n3. ゼッケン番号割り当て準備:")
print(f" 対象チーム数: {len(teams_without_zekken)}")
print(f" 割り当て予定ゼッケン番号: FC001-FC{len(teams_without_zekken):03d}")
confirm = input("\n ゼッケン番号を割り当てますか? (y/N): ")
if confirm.lower() != 'y':
print(" 処理をキャンセルしました")
return
# 5. ゼッケン番号割り当て実行
print("\n4. ゼッケン番号割り当て実行:")
with transaction.atomic():
for i, team in enumerate(teams_without_zekken, 1):
team_id = team[0]
team_name = team[1]
zekken_number = f"FC{i:03d}"
cursor.execute("""
UPDATE rog_team
SET zekken_number = %s, updated_at = NOW()
WHERE id = %s;
""", [zekken_number, team_id])
print(f" Team ID:{team_id} ({team_name}) → ゼッケン番号: {zekken_number}")
print(f"\n{len(teams_without_zekken)}チームにゼッケン番号を割り当てました")
# 6. 結果確認
print("\n5. 割り当て結果確認:")
cursor.execute("""
SELECT t.id, t.team_name, t.zekken_number
FROM rog_team t
JOIN rog_entry e ON t.id = e.team_id
WHERE e.event_id = 10 AND t.zekken_number IS NOT NULL
ORDER BY t.zekken_number;
""")
updated_teams = cursor.fetchall()
print(f" ゼッケン番号付きチーム数: {len(updated_teams)}")
print(" 割り当て結果(サンプル):")
for team in updated_teams[:10]:
print(f" {team[2]}: {team[1]} (ID:{team[0]})")
# 7. 通過審査管理画面での影響確認
print("\n6. 通過審査管理画面への影響:")
print(" これで通過審査管理画面で以下が表示されるはずです:")
print(" - ALL全参加者")
for team in updated_teams[:5]:
print(f" - {team[2]}{team[1]}")
print(" - ...")
def reset_zekken_numbers():
"""FC岐阜イベントのゼッケン番号をリセットテスト用"""
print("\n=== ゼッケン番号リセット(テスト用) ===")
with connection.cursor() as cursor:
confirm = input("FC岐阜イベントのゼッケン番号をリセットしますか (y/N): ")
if confirm.lower() != 'y':
print("リセットをキャンセルしました")
return
with transaction.atomic():
cursor.execute("""
UPDATE rog_team
SET zekken_number = NULL, updated_at = NOW()
WHERE id IN (
SELECT DISTINCT t.id
FROM rog_team t
JOIN rog_entry e ON t.id = e.team_id
WHERE e.event_id = 10
);
""")
affected_rows = cursor.rowcount
print(f"{affected_rows}チームのゼッケン番号をリセットしました")
if __name__ == "__main__":
try:
import sys
if len(sys.argv) > 1 and sys.argv[1] == '--reset':
reset_zekken_numbers()
else:
assign_zekken_numbers_to_fc_gifu()
except Exception as e:
print(f"❌ エラーが発生しました: {e}")
import traceback
traceback.print_exc()