Add field validation for optional integer settings
- Introduced a field validator for LOG_CHAT_ID and LOG_THREAD_ID to convert empty strings to None, ensuring proper handling of optional integer fields. - This enhancement improves data integrity and validation within the settings configuration.
This commit is contained in:
+9
-1
@@ -1,6 +1,6 @@
|
|||||||
import logging
|
import logging
|
||||||
from pydantic_settings import BaseSettings, SettingsConfigDict
|
from pydantic_settings import BaseSettings, SettingsConfigDict
|
||||||
from pydantic import Field, ValidationError, computed_field
|
from pydantic import Field, ValidationError, computed_field, field_validator
|
||||||
from typing import Optional, List, Dict, Any
|
from typing import Optional, List, Dict, Any
|
||||||
|
|
||||||
|
|
||||||
@@ -293,6 +293,14 @@ class Settings(BaseSettings):
|
|||||||
LOG_CHAT_ID: Optional[int] = Field(default=None, description="Telegram chat/group ID for sending notifications")
|
LOG_CHAT_ID: Optional[int] = Field(default=None, description="Telegram chat/group ID for sending notifications")
|
||||||
LOG_THREAD_ID: Optional[int] = Field(default=None, description="Thread ID for supergroup messages (optional)")
|
LOG_THREAD_ID: Optional[int] = Field(default=None, description="Thread ID for supergroup messages (optional)")
|
||||||
|
|
||||||
|
@field_validator('LOG_CHAT_ID', 'LOG_THREAD_ID', mode='before')
|
||||||
|
@classmethod
|
||||||
|
def validate_optional_int_fields(cls, v):
|
||||||
|
"""Convert empty strings to None for optional integer fields"""
|
||||||
|
if isinstance(v, str) and v.strip() == '':
|
||||||
|
return None
|
||||||
|
return v
|
||||||
|
|
||||||
# Notification types
|
# Notification types
|
||||||
LOG_NEW_USERS: bool = Field(default=True, description="Send notifications for new user registrations")
|
LOG_NEW_USERS: bool = Field(default=True, description="Send notifications for new user registrations")
|
||||||
LOG_PAYMENTS: bool = Field(default=True, description="Send notifications for successful payments")
|
LOG_PAYMENTS: bool = Field(default=True, description="Send notifications for successful payments")
|
||||||
|
|||||||
Reference in New Issue
Block a user