From bd8551ae092a4dcae20add82c2f3ba1313c040d3 Mon Sep 17 00:00:00 2001 From: Akira Date: Thu, 23 Jan 2025 01:12:58 +0900 Subject: [PATCH] Try to fix issue 5 --- rog/services/csv_processor.py | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/rog/services/csv_processor.py b/rog/services/csv_processor.py index 2207365..6a7db23 100644 --- a/rog/services/csv_processor.py +++ b/rog/services/csv_processor.py @@ -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") \ No newline at end of file + raise ValidationError(f"Event with code {row['event_code']} does not exist") + +