Try to fix issue 5

This commit is contained in:
2025-01-23 01:12:58 +09:00
parent 87096a3da4
commit bd8551ae09

View File

@ -77,6 +77,7 @@ class EntryCSVProcessor:
# 4) エントリーの作成 # 4) エントリーの作成
self._create_entry(row, team, user) self._create_entry(row, team, user)
self._create_entry_with_number(self, team, category, owner, event)
except Exception as e: except Exception as e:
raise ValidationError(f"Error processing row: {str(e)}") raise ValidationError(f"Error processing row: {str(e)}")
@ -85,8 +86,10 @@ class EntryCSVProcessor:
""" """
メールアドレスでユーザーを検索し、存在しない場合は新規作成 メールアドレスでユーザーを検索し、存在しない場合は新規作成
""" """
print(f'_get_or_create_user.row={row}')
user = CustomUser.objects.filter(email=row['email']).first() user = CustomUser.objects.filter(email=row['email']).first()
if not user: if not user:
print('New User...')
last_name, first_name = self.name_splitter.split_full_name(row['owner_name']) last_name, first_name = self.name_splitter.split_full_name(row['owner_name'])
birth_date = self.date_converter.convert_date(row['owner_birthday']) birth_date = self.date_converter.convert_date(row['owner_birthday'])
is_female = row['owner_sex'] in ['女性', '', '女子', 'female'] is_female = row['owner_sex'] in ['女性', '', '女子', 'female']
@ -110,13 +113,17 @@ class EntryCSVProcessor:
team_name = row['team_name'] team_name = row['team_name']
base_team_name = team_name base_team_name = team_name
version = 1 version = 1
print(f'チーム作成:{team_name}')
while Team.objects.filter(team_name=team_name).exists(): while Team.objects.filter(team_name=team_name).exists():
existing_team = Team.objects.get(team_name=team_name) existing_team = Team.objects.get(team_name=team_name)
print(f'既存チーム:{existing_team.team_name}')
if self._check_same_members(existing_team, row, user): if self._check_same_members(existing_team, row, user):
print('既存チームとメンバー構成が同じ')
return existing_team return existing_team
version += 1 version += 1
team_name = f"{base_team_name}_v{version}" team_name = f"{base_team_name}_v{version}"
print(f'新規チーム名:{team_name}')
# 新規チームを作成 # 新規チームを作成
category = self._get_or_create_category(row) category = self._get_or_create_category(row)
@ -129,16 +136,14 @@ class EntryCSVProcessor:
def _get_or_create_category(self, row: Dict[str, Any]) -> NewCategory: def _get_or_create_category(self, row: Dict[str, Any]) -> NewCategory:
""" """
時間とデパートメントに基づいてカテゴリを取得または作成 時間とデパートメントに基づいてカテゴリを取得
""" """
category_name = f"{row['department']}_{row['time']}h" category_name = f"{row['department']}_{row['time']}h"
category, _ = NewCategory.objects.get_or_create( try:
category_name=category_name, category = NewCategory.objects.get(category_name=category_name)
defaults={ except NewCategory.DoesNotExist:
'duration': timedelta(hours=int(row['time'])), raise ValidationError(f"Category with name {category_name} does not exist")
'num_of_member': int(row['members_count'])
}
)
return category return category
def _check_same_members(self, team: Team, row: Dict[str, Any], owner: CustomUser) -> bool: def _check_same_members(self, team: Team, row: Dict[str, Any], owner: CustomUser) -> bool:
@ -201,6 +206,7 @@ class EntryCSVProcessor:
エントリーを作成 エントリーを作成
""" """
try: try:
zekken_no = team.zekken_number
event = NewEvent2.objects.get(event_name=row['event_code']) event = NewEvent2.objects.get(event_name=row['event_code'])
Entry.objects.create( Entry.objects.create(
team=team, team=team,
@ -208,7 +214,10 @@ class EntryCSVProcessor:
category=team.category, category=team.category,
date=event.start_datetime, date=event.start_datetime,
owner=owner, owner=owner,
zekken_number=zekken_no,
is_active=False is_active=False
) )
except NewEvent2.DoesNotExist: except NewEvent2.DoesNotExist:
raise ValidationError(f"Event with code {row['event_code']} does not exist") raise ValidationError(f"Event with code {row['event_code']} does not exist")