From ad37b901115b1130b09115d5fe74be0ae072882d Mon Sep 17 00:00:00 2001 From: publishername <62213479+PublisherName@users.noreply.github.com> Date: Fri, 6 Dec 2024 18:30:42 +0545 Subject: [PATCH] feat: Enhance event date and time validation logic --- events/validators.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/events/validators.py b/events/validators.py index 978d94d..55d60be 100644 --- a/events/validators.py +++ b/events/validators.py @@ -11,9 +11,14 @@ def validate_event_dates_and_time(instance): now = timezone.now() - if instance.start_date and instance.start_time: + if all([instance.start_date, instance.start_time, instance.end_date, instance.end_time]): start_datetime = datetime.combine(instance.start_date, instance.start_time) start_datetime = make_aware(start_datetime) + + end_datetime = datetime.combine(instance.end_date, instance.end_time) + end_datetime = make_aware(end_datetime) + + # Validate that start datetime is in the future if start_datetime <= now: raise ValidationError( { @@ -21,11 +26,15 @@ def validate_event_dates_and_time(instance): "start_time": ("The start time must be in the future"), } ) - if instance.end_date and instance.end_date <= instance.start_date: - raise ValidationError({"end_date": ("The end date must be after the start date.")}) - if instance.start_time and instance.end_time and instance.end_time <= instance.start_time: - raise ValidationError({"end_time": ("The end time must be after the start time.")}) + # Validate that end datetime is greater than start datetime + if end_datetime <= start_datetime: + raise ValidationError( + { + "end_date": ("The end date must be greater or equal to start date."), + "end_time": ("The end time must be greater than start time."), + } + ) def validate_total_participants(event):