Try to fix issue 5
This commit is contained in:
@ -77,6 +77,7 @@ class EntryCSVProcessor:
|
||||
|
||||
# 4) エントリーの作成
|
||||
self._create_entry(row, team, user)
|
||||
self._create_entry_with_number(self, team, category, owner, event)
|
||||
|
||||
except Exception as 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()
|
||||
if not user:
|
||||
print('New User...')
|
||||
last_name, first_name = self.name_splitter.split_full_name(row['owner_name'])
|
||||
birth_date = self.date_converter.convert_date(row['owner_birthday'])
|
||||
is_female = row['owner_sex'] in ['女性', '女', '女子', 'female']
|
||||
@ -110,13 +113,17 @@ class EntryCSVProcessor:
|
||||
team_name = row['team_name']
|
||||
base_team_name = team_name
|
||||
version = 1
|
||||
print(f'チーム作成:{team_name}')
|
||||
|
||||
while Team.objects.filter(team_name=team_name).exists():
|
||||
existing_team = Team.objects.get(team_name=team_name)
|
||||
print(f'既存チーム:{existing_team.team_name}')
|
||||
if self._check_same_members(existing_team, row, user):
|
||||
print('既存チームとメンバー構成が同じ')
|
||||
return existing_team
|
||||
version += 1
|
||||
team_name = f"{base_team_name}_v{version}"
|
||||
print(f'新規チーム名:{team_name}')
|
||||
|
||||
# 新規チームを作成
|
||||
category = self._get_or_create_category(row)
|
||||
@ -129,16 +136,14 @@ class EntryCSVProcessor:
|
||||
|
||||
def _get_or_create_category(self, row: Dict[str, Any]) -> NewCategory:
|
||||
"""
|
||||
時間とデパートメントに基づいてカテゴリを取得または作成
|
||||
時間とデパートメントに基づいてカテゴリを取得
|
||||
"""
|
||||
category_name = f"{row['department']}_{row['time']}h"
|
||||
category, _ = NewCategory.objects.get_or_create(
|
||||
category_name=category_name,
|
||||
defaults={
|
||||
'duration': timedelta(hours=int(row['time'])),
|
||||
'num_of_member': int(row['members_count'])
|
||||
}
|
||||
)
|
||||
try:
|
||||
category = NewCategory.objects.get(category_name=category_name)
|
||||
except NewCategory.DoesNotExist:
|
||||
raise ValidationError(f"Category with name {category_name} does not exist")
|
||||
|
||||
return category
|
||||
|
||||
def _check_same_members(self, team: Team, row: Dict[str, Any], owner: CustomUser) -> bool:
|
||||
@ -201,6 +206,7 @@ class EntryCSVProcessor:
|
||||
エントリーを作成
|
||||
"""
|
||||
try:
|
||||
zekken_no = team.zekken_number
|
||||
event = NewEvent2.objects.get(event_name=row['event_code'])
|
||||
Entry.objects.create(
|
||||
team=team,
|
||||
@ -208,7 +214,10 @@ class EntryCSVProcessor:
|
||||
category=team.category,
|
||||
date=event.start_datetime,
|
||||
owner=owner,
|
||||
zekken_number=zekken_no,
|
||||
is_active=False
|
||||
)
|
||||
except NewEvent2.DoesNotExist:
|
||||
raise ValidationError(f"Event with code {row['event_code']} does not exist")
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user