almost finish migrate new circumstances
This commit is contained in:
224
test_step1_complete.py
Normal file
224
test_step1_complete.py
Normal file
@ -0,0 +1,224 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
テストステップ1: 大垣3イベントをコピーして大垣テストイベントを作成し、
|
||||
テストユーザー、チーム、メンバーを含む完全なテストデータを構築する
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
import django
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
# Django設定を読み込み
|
||||
sys.path.append('/app')
|
||||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')
|
||||
django.setup()
|
||||
|
||||
from rog.models import NewEvent2, NewCategory, Entry, Team, Member, CustomUser
|
||||
|
||||
def create_test_event():
|
||||
"""大垣3イベントをベースに大垣テストイベントを作成"""
|
||||
print("=== テストイベント作成開始 ===")
|
||||
|
||||
# 既存の大垣3イベントを検索
|
||||
base_event = None
|
||||
for event in NewEvent2.objects.all():
|
||||
if "大垣3" == event.event_name:
|
||||
base_event = event
|
||||
print(f"ベースイベント発見: {event.event_name} (ID: {event.id})")
|
||||
break
|
||||
|
||||
if not base_event:
|
||||
print("大垣3イベントが見つかりません")
|
||||
return None
|
||||
|
||||
# 大垣テストイベントが既に存在するかチェック
|
||||
test_event = NewEvent2.objects.filter(event_name__contains="大垣テスト").first()
|
||||
if test_event:
|
||||
print(f"テストイベントは既に存在します: {test_event.event_name} (ID: {test_event.id})")
|
||||
return test_event
|
||||
|
||||
# 新しいテストイベントを作成
|
||||
now = datetime.now()
|
||||
test_event = NewEvent2.objects.create(
|
||||
event_name="大垣テスト",
|
||||
start_datetime=now + timedelta(days=1),
|
||||
end_datetime=now + timedelta(days=2),
|
||||
event_type=base_event.event_type,
|
||||
location=base_event.location,
|
||||
url=base_event.url,
|
||||
active=True,
|
||||
organizer=base_event.organizer
|
||||
)
|
||||
|
||||
print(f"テストイベント作成完了: {test_event.event_name} (ID: {test_event.id})")
|
||||
return test_event
|
||||
|
||||
def create_test_user():
|
||||
"""テストユーザーを作成"""
|
||||
print("\n=== テストユーザー作成開始 ===")
|
||||
|
||||
email = "test_user@example.com"
|
||||
|
||||
# 既存ユーザーをチェック
|
||||
test_user = CustomUser.objects.filter(email=email).first()
|
||||
if test_user:
|
||||
print(f"テストユーザーは既に存在します: {test_user.email} (ID: {test_user.id})")
|
||||
return test_user
|
||||
|
||||
# 新しいテストユーザーを作成
|
||||
test_user = CustomUser.objects.create(
|
||||
email=email,
|
||||
firstname="テスト",
|
||||
lastname="太郎",
|
||||
date_of_birth=datetime(1990, 1, 1).date(),
|
||||
female=False,
|
||||
is_active=True
|
||||
)
|
||||
test_user.set_password("testpassword123")
|
||||
test_user.save()
|
||||
|
||||
print(f"テストユーザー作成完了: {test_user.email} (ID: {test_user.id})")
|
||||
return test_user
|
||||
|
||||
def create_test_team(test_user, test_event):
|
||||
"""テストチームを作成"""
|
||||
print("\n=== テストチーム作成開始 ===")
|
||||
|
||||
team_name = "テストチーム1"
|
||||
|
||||
# 既存チームをチェック
|
||||
test_team = Team.objects.filter(
|
||||
team_name=team_name,
|
||||
event=test_event
|
||||
).first()
|
||||
|
||||
if test_team:
|
||||
print(f"テストチームは既に存在します: {test_team.team_name} (ID: {test_team.id})")
|
||||
return test_team
|
||||
|
||||
# デフォルトカテゴリーを取得
|
||||
default_category = NewCategory.objects.filter(category_name__contains="Default").first()
|
||||
if not default_category:
|
||||
# 適当なカテゴリーを取得
|
||||
default_category = NewCategory.objects.first()
|
||||
|
||||
# 新しいテストチームを作成
|
||||
test_team = Team.objects.create(
|
||||
team_name=team_name,
|
||||
owner=test_user,
|
||||
category=default_category,
|
||||
event=test_event,
|
||||
zekken_number="T001"
|
||||
)
|
||||
|
||||
print(f"テストチーム作成完了: {test_team.team_name} (ID: {test_team.id})")
|
||||
return test_team
|
||||
|
||||
def create_test_member(test_user, test_team):
|
||||
"""テストメンバーを作成"""
|
||||
print("\n=== テストメンバー作成開始 ===")
|
||||
|
||||
# 既存メンバーをチェック
|
||||
test_member = Member.objects.filter(
|
||||
team=test_team,
|
||||
user=test_user
|
||||
).first()
|
||||
|
||||
if test_member:
|
||||
print(f"テストメンバーは既に存在します: {test_member.user.email} (ID: {test_member.id})")
|
||||
return test_member
|
||||
|
||||
# 新しいテストメンバーを作成
|
||||
test_member = Member.objects.create(
|
||||
team=test_team,
|
||||
user=test_user,
|
||||
firstname=test_user.firstname,
|
||||
lastname=test_user.lastname,
|
||||
date_of_birth=test_user.date_of_birth,
|
||||
female=test_user.female
|
||||
)
|
||||
|
||||
print(f"テストメンバー作成完了: {test_member.user.email} (ID: {test_member.id})")
|
||||
return test_member
|
||||
|
||||
def create_test_entries(test_event, test_team):
|
||||
"""利用可能な全カテゴリーでエントリーを作成"""
|
||||
print("\n=== テストエントリー作成開始 ===")
|
||||
|
||||
# 利用可能なカテゴリーを取得
|
||||
categories = NewCategory.objects.all()
|
||||
print(f"利用可能なカテゴリー数: {categories.count()}")
|
||||
|
||||
created_entries = []
|
||||
for category in categories[:3]: # 最初の3つのカテゴリーのみでテスト
|
||||
# 既存エントリーをチェック
|
||||
existing_entry = Entry.objects.filter(
|
||||
team=test_team,
|
||||
event=test_event,
|
||||
category=category
|
||||
).first()
|
||||
|
||||
if existing_entry:
|
||||
print(f"エントリーは既に存在します: {category.category_name}")
|
||||
created_entries.append(existing_entry)
|
||||
continue
|
||||
|
||||
try:
|
||||
# 新しいエントリーを作成
|
||||
entry = Entry.objects.create(
|
||||
team=test_team,
|
||||
event=test_event,
|
||||
category=category,
|
||||
date=test_event.start_datetime,
|
||||
owner=test_team.owner,
|
||||
zekken_number=1
|
||||
)
|
||||
created_entries.append(entry)
|
||||
print(f"エントリー作成完了: {category.category_name} (ID: {entry.id})")
|
||||
|
||||
except Exception as e:
|
||||
print(f"エントリー作成エラー ({category.category_name}): {e}")
|
||||
|
||||
print(f"合計 {len(created_entries)} 個のエントリーを作成/確認しました")
|
||||
return created_entries
|
||||
|
||||
def main():
|
||||
"""メイン処理"""
|
||||
print("テストデータ作成スクリプト開始")
|
||||
print("=" * 50)
|
||||
|
||||
try:
|
||||
# 1. テストイベント作成
|
||||
test_event = create_test_event()
|
||||
if not test_event:
|
||||
print("テストイベント作成に失敗しました")
|
||||
return
|
||||
|
||||
# 2. テストユーザー作成
|
||||
test_user = create_test_user()
|
||||
|
||||
# 3. テストチーム作成
|
||||
test_team = create_test_team(test_user, test_event)
|
||||
|
||||
# 4. テストメンバー作成
|
||||
test_member = create_test_member(test_user, test_team)
|
||||
|
||||
# 5. テストエントリー作成
|
||||
test_entries = create_test_entries(test_event, test_team)
|
||||
|
||||
print("\n" + "=" * 50)
|
||||
print("テストデータ作成完了!")
|
||||
print(f"イベント: {test_event.event_name}")
|
||||
print(f"ユーザー: {test_user.email}")
|
||||
print(f"チーム: {test_team.team_name}")
|
||||
print(f"メンバー: {test_member.user.email}")
|
||||
print(f"エントリー数: {len(test_entries)}")
|
||||
|
||||
except Exception as e:
|
||||
print(f"エラーが発生しました: {e}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user