diff --git a/rog/services/csv_processor.py b/rog/services/csv_processor.py index 79ca941..e3ab33c 100644 --- a/rog/services/csv_processor.py +++ b/rog/services/csv_processor.py @@ -237,41 +237,38 @@ class EntryCSVProcessor: """ print(f'エントリー作成:{team.team_name}') try: - zekken_no = row['zekken_number'] - event = NewEvent2.objects.get(event_name=row['event_code']) - print(f'イベント取得:{event.event_name}') + # データ検証 + if not team.category: + raise ValidationError("Team category is not set") + + # メンバーの誕生日確認 + for member in team.members.all(): + if not member.user.date_of_birth: + birth_date = member.user.email.startswith('dummy_') and datetime(1990, 1, 1).date() or None + if not birth_date: + raise ValidationError(f"Birth date not set for member {member.user.email}") + member.user.date_of_birth = birth_date + member.user.save() - # イベントの日時設定を確認・修正 + # イベント取得と検証 + event = NewEvent2.objects.get(event_name=row['event_code']) if not event.start_datetime or not event.end_datetime: - print(f"Event dates: start={event.start_datetime}, end={event.end_datetime}") - event.start_datetime = timezone.make_aware(datetime(2025, 1, 25, 9, 0)) - event.end_datetime = timezone.make_aware(datetime(2025, 1, 25, 17, 0)) + event.start_datetime = django_timezone.make_aware(datetime(2025, 1, 25, 9, 0)) + event.end_datetime = django_timezone.make_aware(datetime(2025, 1, 25, 17, 0)) event.save() - # entry_dateの処理を改善 - entry_date = None - if 'entry_date' in row and row['entry_date']: + # エントリー日付の設定 + entry_date = event.start_datetime + if row.get('entry_date'): try: - date_formats = ['%Y/%m/%d %H:%M', '%Y/%m/%d', '%Y-%m-%d %H:%M', '%Y-%m-%d'] - - for date_format in date_formats: - try: - naive_date = datetime.strptime(row['entry_date'], date_format) - entry_date = django_timezone.make_aware(naive_date) - break - except ValueError: - continue - - if entry_date is None: - entry_date = event.start_datetime - except Exception as e: - print(f"Date parsing error: {str(e)}") - entry_date = event.start_datetime - else: - entry_date = event.start_datetime + naive_date = datetime.strptime(row['entry_date'], '%Y/%m/%d %H:%M') + entry_date = django_timezone.make_aware(naive_date) + except ValueError: + pass - if entry_date is None: - raise ValueError("Could not determine entry date") + + zekken_no = int(row['zekken_number']) + print(f'イベント取得:{event.event_name}') print(f'エントリー日付:{entry_date}')