Skip to content

Commit f13d816

Browse files
author
Obada Haddad
committed
make secret key auto generate and write into .env if it does not already exist, otherwise use exsiting key
1 parent d41062b commit f13d816

3 files changed

Lines changed: 63 additions & 31 deletions

File tree

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ dependencies = [
6666
"django-filter==25.1",
6767
"django-cors-headers==4.9.0",
6868
"nh3==0.3.3",
69+
"configobj==5.0.9",
6970
]
7071

7172
[tool.uv]

src/settings/base.py

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
from celery import signals
66
import dj_database_url
77
from .logs_loguru import configure_logging
8+
from django.core.management.utils import get_random_secret_key
9+
import configobj
810

911

1012
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
@@ -125,7 +127,25 @@
125127
USE_I18N = True
126128
USE_L10N = True
127129
USE_TZ = True
128-
SECRET_KEY = os.environ.get("SECRET_KEY", '(*0&74%ihg0ui+400+@%2pe92_c)x@w2m%6s(jhs^)dc$&&g93')
130+
131+
# =============================================================================
132+
# Secret key (generate one if none is given, otherwise use given key)
133+
# =============================================================================
134+
# This is needed when the secret key is generated for the first time as it won't be loaded as an environment variable
135+
config = configobj.ConfigObj('.env')
136+
with open(".env", "a+") as f:
137+
secret_key_count = 0
138+
f.seek(0)
139+
for x in f:
140+
if "SECRET_KEY=" in x and x[0] == "S":
141+
secret_key_count = 1
142+
SECRET_KEY = os.environ.get("SECRET_KEY", config['SECRET_KEY'])
143+
break
144+
if secret_key_count == 0:
145+
SECRET_KEY = get_random_secret_key()
146+
f.write(f"SECRET_KEY='{SECRET_KEY}'")
147+
f.close()
148+
129149
LOGIN_REDIRECT_URL = '/'
130150
LOGOUT_REDIRECT_URL = '/'
131151

uv.lock

Lines changed: 41 additions & 30 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)