From 0bfaa014cb65d81bec3185050a9bed0953633624 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 5 Nov 2025 21:57:30 +0000 Subject: [PATCH] Fix notification validation to handle enum objects Root cause: The validation in NotificationBaseRepository._validate_notification_data was checking enum objects against string lists, causing validation to fail when the EnhancedNotificationService passed NotificationType/NotificationPriority/NotificationStatus enum objects instead of their string values. The validation now properly handles both enum objects (by extracting their .value) and string values, fixing the "Invalid notification type" error from orchestrator. Changes: - Updated priority validation to handle enum objects - Updated notification type validation to handle enum objects - Updated status validation to handle enum objects Fixes the error: "Invalid notification data: ['Invalid notification type. Must be one of: ['email', 'whatsapp', 'push', 'sms']']" --- services/notification/app/repositories/base.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/services/notification/app/repositories/base.py b/services/notification/app/repositories/base.py index 564b7c68..03601ec7 100644 --- a/services/notification/app/repositories/base.py +++ b/services/notification/app/repositories/base.py @@ -237,20 +237,26 @@ class NotificationBaseRepository(BaseRepository): # Validate priority if present if "priority" in data and data["priority"]: + from enum import Enum + priority_value = data["priority"].value if isinstance(data["priority"], Enum) else data["priority"] valid_priorities = ["low", "normal", "high", "urgent"] - if data["priority"] not in valid_priorities: + if priority_value not in valid_priorities: errors.append(f"Invalid priority. Must be one of: {valid_priorities}") - + # Validate notification type if present if "type" in data and data["type"]: + from enum import Enum + type_value = data["type"].value if isinstance(data["type"], Enum) else data["type"] valid_types = ["email", "whatsapp", "push", "sms"] - if data["type"] not in valid_types: + if type_value not in valid_types: errors.append(f"Invalid notification type. Must be one of: {valid_types}") - + # Validate status if present if "status" in data and data["status"]: + from enum import Enum + status_value = data["status"].value if isinstance(data["status"], Enum) else data["status"] valid_statuses = ["pending", "sent", "delivered", "failed", "cancelled"] - if data["status"] not in valid_statuses: + if status_value not in valid_statuses: errors.append(f"Invalid status. Must be one of: {valid_statuses}") return {