- Implemented email settings configuration in the admin panel, allowing for SMTP settings and notification preferences. - Created a new template for email settings with fields for SMTP host, port, username, password, sender address, and recipients. - Added JavaScript functionality to handle loading, saving, and validating email settings. - Introduced email templates management, enabling the listing, editing, and saving of email templates. - Updated navigation to include links to email settings and templates. - Added tests for email settings and templates to ensure proper functionality and validation.
85 lines
2.9 KiB
Python
85 lines
2.9 KiB
Python
"""Environment driven configuration values."""
|
|
from __future__ import annotations
|
|
|
|
import os
|
|
import re
|
|
from pathlib import Path
|
|
|
|
from dotenv import load_dotenv
|
|
|
|
from .utils import normalize_recipients
|
|
|
|
load_dotenv()
|
|
|
|
BASE_DIR = Path(__file__).resolve().parent.parent
|
|
|
|
SECRET_KEY = os.getenv("FLASK_SECRET_KEY", "dev")
|
|
SENTRY_DSN = os.getenv("SENTRY_DSN")
|
|
SENTRY_TRACES_SAMPLE_RATE = float(
|
|
os.getenv("SENTRY_TRACES_SAMPLE_RATE", "0.0"))
|
|
ENABLE_REQUEST_LOGS = os.getenv("ENABLE_REQUEST_LOGS", "true").lower() in {
|
|
"1", "true", "yes"}
|
|
ENABLE_JSON_LOGS = os.getenv("ENABLE_JSON_LOGS", "false").lower() in {
|
|
"1", "true", "yes"}
|
|
|
|
DATABASE_URL = os.getenv("DATABASE_URL")
|
|
POSTGRES_URL = os.getenv("POSTGRES_URL")
|
|
|
|
|
|
def resolve_sqlite_path() -> Path:
|
|
"""Resolve the configured SQLite path honoring DATABASE_URL."""
|
|
if DATABASE_URL:
|
|
if DATABASE_URL.startswith("sqlite:"):
|
|
match = re.match(r"sqlite:(?:////?|)(.+)", DATABASE_URL)
|
|
if match:
|
|
return Path(match.group(1))
|
|
return Path("data/forms.db")
|
|
return Path(DATABASE_URL)
|
|
return BASE_DIR / "data" / "forms.db"
|
|
|
|
|
|
SQLITE_DB_PATH = resolve_sqlite_path()
|
|
|
|
RATE_LIMIT_MAX = int(os.getenv("RATE_LIMIT_MAX", "10"))
|
|
RATE_LIMIT_WINDOW = int(os.getenv("RATE_LIMIT_WINDOW", "60"))
|
|
REDIS_URL = os.getenv("REDIS_URL")
|
|
|
|
STRICT_ORIGIN_CHECK = os.getenv("STRICT_ORIGIN_CHECK", "false").lower() in {
|
|
"1", "true", "yes"}
|
|
ALLOWED_ORIGIN = os.getenv("ALLOWED_ORIGIN")
|
|
|
|
SMTP_SETTINGS = {
|
|
"host": os.getenv("SMTP_HOST"),
|
|
"port": int(os.getenv("SMTP_PORT", "587")),
|
|
"username": os.getenv("SMTP_USERNAME"),
|
|
"password": os.getenv("SMTP_PASSWORD"),
|
|
"sender": os.getenv("SMTP_SENDER"),
|
|
"use_tls": os.getenv("SMTP_USE_TLS", "true").lower() in {"1", "true", "yes"},
|
|
"recipients": normalize_recipients(os.getenv("SMTP_RECIPIENTS")),
|
|
}
|
|
|
|
EMAIL_NOTIFY_CONTACT_FORM = os.getenv("EMAIL_NOTIFY_CONTACT_FORM", "true").lower() in {
|
|
"1", "true", "yes"}
|
|
EMAIL_NOTIFY_NEWSLETTER_SIGNUPS = os.getenv("EMAIL_NOTIFY_NEWSLETTER_SIGNUPS", "false").lower() in {
|
|
"1", "true", "yes"}
|
|
|
|
SMTP_SETTINGS["notify_contact_form"] = EMAIL_NOTIFY_CONTACT_FORM
|
|
SMTP_SETTINGS["notify_newsletter_signups"] = EMAIL_NOTIFY_NEWSLETTER_SIGNUPS
|
|
|
|
if not SMTP_SETTINGS["sender"] and SMTP_SETTINGS["username"]:
|
|
SMTP_SETTINGS["sender"] = SMTP_SETTINGS["username"]
|
|
|
|
ADMIN_USERNAME = os.getenv("ADMIN_USERNAME", "admin")
|
|
ADMIN_PASSWORD = os.getenv("ADMIN_PASSWORD", "admin")
|
|
|
|
NEWSLETTER_CONFIRMATION_TEMPLATE = os.getenv("NEWSLETTER_CONFIRMATION_TEMPLATE", """
|
|
<html>
|
|
<body>
|
|
<h2>Welcome to our Newsletter!</h2>
|
|
<p>Thank you for subscribing to our newsletter. You're now part of our community and will receive updates on our latest news and offers.</p>
|
|
<p>If you wish to unsubscribe at any time, you can do so by visiting our <a href="https://your-domain.com/newsletter/manage">subscription management page</a>.</p>
|
|
<p>Best regards,<br>The Team</p>
|
|
</body>
|
|
</html>
|
|
""").strip()
|