-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsettings.py
More file actions
114 lines (92 loc) · 4.39 KB
/
settings.py
File metadata and controls
114 lines (92 loc) · 4.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
import os
def env_bool(name, default=False):
"""Read an environment variable and coerce it to boolean.
Accepted truthy values are: `1`, `true`, `yes`, `on` (case-insensitive).
Args:
name: Environment variable name to read.
default: Fallback value used when the variable is missing.
Returns:
bool: Parsed boolean value from environment or fallback.
"""
return os.getenv(name, str(default)).lower() in {"1", "true", "yes", "on"}
def env_str(name, default=""):
"""Read env var as string, treating empty values as missing.
Args:
name: Environment variable name to read.
default: Fallback value used when var is missing/empty.
Returns:
str: Trimmed env value or fallback default.
"""
raw = os.getenv(name)
if raw is None:
return default
value = raw.strip()
return value if value else default
DEV_MODE = env_bool("DEV_MODE", True)
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# APP Settings
APP_SEC_KEY = os.getenv("APP_SEC_KEY", "CHANGE_ME_IN_PRODUCTION")
APP_RECAPTCHA_SECRET_KEY = os.getenv("APP_RECAPTCHA_SECRET_KEY", "")
RECAPTCHA_PUBLIC_KEY = os.getenv("RECAPTCHA_PUBLIC_KEY", "")
WLP_BASE_DOMAIN = env_str("WLP_BASE_DOMAIN", "localhost")
WLP_API_SUBDOMAIN = env_str("WLP_API_SUBDOMAIN", "api")
WLP_TZ = env_str("WLP_TZ", "America/Santo_Domingo")
WLP_SERVER_NAME = env_str("WLP_SERVER_NAME", WLP_BASE_DOMAIN)
default_api_server_name = (
WLP_BASE_DOMAIN if WLP_API_SUBDOMAIN in {"", "@"} else f"{WLP_API_SUBDOMAIN}.{WLP_BASE_DOMAIN}"
)
WLP_API_SERVER_NAME = env_str("WLP_API_SERVER_NAME", default_api_server_name)
APP_DOMAIN = env_str("APP_DOMAIN", f"https://{WLP_SERVER_NAME}")
API_DOMAIN = env_str("API_DOMAIN", f"https://{WLP_API_SERVER_NAME}")
WLP_ENABLE_TRACKING = env_bool("WLP_ENABLE_TRACKING", False)
WLP_GA_MEASUREMENT_ID = os.getenv("WLP_GA_MEASUREMENT_ID", "")
WLP_TWITTER_PIXEL_ID = os.getenv("WLP_TWITTER_PIXEL_ID", "")
WLP_ENABLE_ADSENSE = env_bool("WLP_ENABLE_ADSENSE", False)
WLP_ADSENSE_CLIENT_ID = os.getenv("WLP_ADSENSE_CLIENT_ID", "")
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# SMTP Settings
SMTP_TEST = env_bool("SMTP_TEST", DEV_MODE)
EMAIL_SENDER = os.getenv("EMAIL_SENDER", '"Water Level .Pro" <no-reply@example.com>')
SMTP_SERVER = os.getenv("SMTP_SERVER", "127.0.0.1")
SMTP_PORT = int(os.getenv("SMTP_PORT", "25"))
SMTP_USERNAME = os.getenv("SMTP_USERNAME", "")
SMTP_PASSWORD = os.getenv("SMTP_PASSWORD", "")
SMTP_USE_STARTTLS = env_bool("SMTP_USE_STARTTLS", True)
SMTP_USE_SSL = env_bool("SMTP_USE_SSL", False)
SMTP_TIMEOUT_SECONDS = int(os.getenv("SMTP_TIMEOUT_SECONDS", "20"))
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# API CACHE Settings
API_CACHE_SETT = {
"CACHE_REDIS_HOST": os.getenv("API_CACHE_REDIS_HOST", "127.0.0.1"),
"CACHE_TYPE": "RedisCache",
"CACHE_DEFAULT_TIMEOUT": int(os.getenv("API_CACHE_DEFAULT_TIMEOUT", "30")),
"CACHE_REDIS_DB": 2
}
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# WEB APP CACHE Settings
WEB_CACHE_SETT = {
"CACHE_REDIS_HOST": os.getenv("WEB_CACHE_REDIS_HOST", "127.0.0.1"),
"CACHE_TYPE": "RedisCache",
"CACHE_DEFAULT_TIMEOUT": int(os.getenv("WEB_CACHE_DEFAULT_TIMEOUT", "30")),
"CACHE_REDIS_DB": 1
}
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
TWILIO_ACCOUNT_SID = os.getenv("TWILIO_ACCOUNT_SID", "")
TWILIO_AUTH_TOKEN = os.getenv("TWILIO_AUTH_TOKEN", "")
TWILIO_NUMBER = os.getenv("TWILIO_NUMBER", "")
# ++++++++++++++++
DEMO_S1_PUB_KEY = os.getenv("DEMO_S1_PUB_KEY", "1pubDEMO_SENSOR_S1")
DEMO_S1_PRV_KEY = os.getenv("DEMO_S1_PRV_KEY", "1prvDEMO_SENSOR_S1")
DEMO_RELAY_PUB_KEY = os.getenv("DEMO_RELAY_PUB_KEY", "3pubDEMO_RELAY_R1")
DEMO_RELAY_PRV_KEY = os.getenv("DEMO_RELAY_PRV_KEY", "3prvDEMO_RELAY_R1")
REDIS_HOST = os.getenv("REDIS_HOST", "127.0.0.1")
REDIS_PORT = int(os.getenv("REDIS_PORT", "6379"))
WEB_REDIS_DB = 0
API_REDIS_DB = 0
DATABASE_URL = os.getenv("DATABASE_URL", "sqlite:///database.db?journal_mode=WAL2")
REPORTS_FOLDER = './reports/'
# Relay consumption estimation defaults (global residential baseline values)
DEFAULT_WATER_COST_PER_M3 = float(os.getenv("DEFAULT_WATER_COST_PER_M3", "1.5"))
DEFAULT_ENERGY_COST_PER_KWH = float(os.getenv("DEFAULT_ENERGY_COST_PER_KWH", "0.17"))
DEFAULT_RELAY_POWER_WATTS = float(os.getenv("DEFAULT_RELAY_POWER_WATTS", "750"))
DEFAULT_RELAY_CURRENCY = os.getenv("DEFAULT_RELAY_CURRENCY", "USD").strip().upper() or "USD"