feat(api): add email configuration

This commit is contained in:
jo 2023-05-31 13:58:18 +02:00 committed by Kyle Robbertze
parent 001466f8fd
commit c2c0be1fbc
9 changed files with 220 additions and 0 deletions

View file

@ -1,3 +1,5 @@
from typing import Literal, Optional
from libretime_shared.config import (
BaseConfig,
DatabaseConfig,
@ -5,6 +7,20 @@ from libretime_shared.config import (
RabbitMQConfig,
StorageConfig,
)
from pydantic import BaseModel
class EmailConfig(BaseModel):
from_email: str = "no-reply@libretime.org"
host: str = "localhost"
port: int = 25
user: str = ""
password: str = ""
encryption: Optional[Literal["ssl/tls", "starttls"]] = None
timeout: Optional[int] = None
key_file: Optional[str] = None
cert_file: Optional[str] = None
class Config(BaseConfig):
@ -12,3 +28,4 @@ class Config(BaseConfig):
database: DatabaseConfig = DatabaseConfig()
rabbitmq: RabbitMQConfig = RabbitMQConfig()
storage: StorageConfig = StorageConfig()
email: EmailConfig = EmailConfig()

View file

@ -73,3 +73,20 @@ LANGUAGE_CODE = "en-us"
TIME_ZONE = "UTC"
USE_I18N = True
USE_TZ = True
# Email
# https://docs.djangoproject.com/en/4.2/topics/email/
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
EMAIL_HOST = CONFIG.email.host
EMAIL_PORT = CONFIG.email.port
EMAIL_HOST_USER = CONFIG.email.user
EMAIL_HOST_PASSWORD = CONFIG.email.password
EMAIL_USE_SSL = CONFIG.email.encryption == "ssl/tls" # implicit
EMAIL_USE_TLS = CONFIG.email.encryption == "starttls" # explicit
EMAIL_TIMEOUT = CONFIG.email.timeout
EMAIL_SSL_KEYFILE = CONFIG.email.key_file
EMAIL_SSL_CERTFILE = CONFIG.email.cert_file
DEFAULT_FROM_EMAIL = CONFIG.email.from_email

View file

@ -18,6 +18,7 @@ from .prod import (
DATABASES,
DEBUG,
DEFAULT_AUTO_FIELD,
DEFAULT_FROM_EMAIL,
INSTALLED_APPS,
LANGUAGE_CODE,
LOGGING,
@ -34,6 +35,11 @@ from .prod import (
WSGI_APPLICATION,
)
# Email
# https://docs.djangoproject.com/en/4.2/topics/email/
EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend"
# Testing
# https://docs.djangoproject.com/en/3.2/ref/settings/#test-runner