diff --git a/rog/.DS_Store b/rog/.DS_Store index 0ea3aa7..9a52b61 100644 Binary files a/rog/.DS_Store and b/rog/.DS_Store differ diff --git a/rog/services/csv_processor.py b/rog/services/csv_processor.py index b0685b0..b5f2862 100644 --- a/rog/services/csv_processor.py +++ b/rog/services/csv_processor.py @@ -240,25 +240,46 @@ class EntryCSVProcessor: event = NewEvent2.objects.get(event_name=row['event_code']) print(f'イベント取得:{event.event_name}') - # start_datetimeの検証を追加 - if not event.start_datetime: - raise ValidationError(f"Event {event.event_name} has no start date") - + # イベントの日時設定を確認・修正 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.save() - # entry_dateをdatetimeに変換 - if 'entry_date' in row: + # entry_dateの処理を改善 + entry_date = None + if 'entry_date' in row and row['entry_date']: try: - entry_date = datetime.strptime(row['entry_date'], '%Y/%m/%d %H:%M') - except ValueError: - entry_date = datetime.strptime(row['entry_date'], '%Y/%m/%d') + # 様々な日付形式に対応 + 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: + entry_date = datetime.strptime(row['entry_date'], date_format) + break + except ValueError: + continue + + if entry_date is None: + raise ValueError(f"Could not parse date: {row['entry_date']}") + + # タイムゾーン対応 + entry_date = timezone.make_aware(entry_date) + except Exception as e: + print(f"Date parsing error: {str(e)}") + entry_date = event.start_datetime else: entry_date = event.start_datetime + if entry_date is None: + raise ValueError("Could not determine entry date") + print(f'エントリー日付:{entry_date}') entry = Entry.objects.create( @@ -274,8 +295,11 @@ class EntryCSVProcessor: entry.save() print(f'エントリー作成完了:{team.team_name} - {event.event_name}') + except NewEvent2.DoesNotExist: print(f'Error on _create_entry: {row}') raise ValidationError(f"Event with code {row['event_code']} does not exist") - + except Exception as e: + print(f'Error creating entry: {str(e)}') + raise ValidationError(f"Failed to create entry: {str(e)}")