All checks were successful
PostgreSQL Compatibility Matrix / PG14 smoke (push) Successful in 7s
PostgreSQL Compatibility Matrix / PG15 smoke (push) Successful in 7s
PostgreSQL Compatibility Matrix / PG16 smoke (push) Successful in 7s
PostgreSQL Compatibility Matrix / PG17 smoke (push) Successful in 6s
PostgreSQL Compatibility Matrix / PG18 smoke (push) Successful in 6s
Introduced a new optional "from_name" attribute to email settings, allowing customization of the sender's display name in outgoing emails. Updated backend models, APIs, and front-end components to include and handle this field properly. This enhances email clarity and personalization for users.
51 lines
1.4 KiB
Python
51 lines
1.4 KiB
Python
from datetime import datetime
|
|
|
|
from pydantic import BaseModel, EmailStr, field_validator, model_validator
|
|
|
|
|
|
class EmailSettingsOut(BaseModel):
|
|
enabled: bool
|
|
smtp_host: str | None
|
|
smtp_port: int
|
|
smtp_username: str | None
|
|
from_name: str | None
|
|
from_email: EmailStr | None
|
|
use_starttls: bool
|
|
use_ssl: bool
|
|
alert_recipients: list[EmailStr]
|
|
has_password: bool
|
|
updated_at: datetime | None
|
|
|
|
|
|
class EmailSettingsUpdate(BaseModel):
|
|
enabled: bool = False
|
|
smtp_host: str | None = None
|
|
smtp_port: int = 587
|
|
smtp_username: str | None = None
|
|
smtp_password: str | None = None
|
|
clear_smtp_password: bool = False
|
|
from_name: str | None = None
|
|
from_email: EmailStr | None = None
|
|
use_starttls: bool = True
|
|
use_ssl: bool = False
|
|
alert_recipients: list[EmailStr] = []
|
|
|
|
@field_validator("smtp_port")
|
|
@classmethod
|
|
def validate_port(cls, value: int) -> int:
|
|
if value < 1 or value > 65535:
|
|
raise ValueError("smtp_port must be between 1 and 65535")
|
|
return value
|
|
|
|
@model_validator(mode="after")
|
|
def validate_tls_combo(self):
|
|
if self.use_starttls and self.use_ssl:
|
|
raise ValueError("use_starttls and use_ssl cannot both be true")
|
|
return self
|
|
|
|
|
|
class EmailSettingsTestRequest(BaseModel):
|
|
recipient: EmailStr
|
|
subject: str = "NexaPG test notification"
|
|
message: str = "This is a test alert notification from NexaPG."
|