Try to fix issue 5
This commit is contained in:
@ -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")
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user