mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Updates to settings.py
- Create secret_key.txt if it does not exist - Copy default settings file if it does not exist
This commit is contained in:
parent
be41be3981
commit
8d3b9e2ca4
@ -13,6 +13,9 @@ database setup in this file.
|
|||||||
|
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
|
import random
|
||||||
|
import string
|
||||||
|
import shutil
|
||||||
import sys
|
import sys
|
||||||
import tempfile
|
import tempfile
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
@ -55,8 +58,10 @@ BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|||||||
cfg_filename = os.path.join(BASE_DIR, 'config.yaml')
|
cfg_filename = os.path.join(BASE_DIR, 'config.yaml')
|
||||||
|
|
||||||
if not os.path.exists(cfg_filename):
|
if not os.path.exists(cfg_filename):
|
||||||
print("Error: config.yaml not found")
|
print("InvenTree configuration file 'config.yaml' not found - creating default file")
|
||||||
sys.exit(-1)
|
|
||||||
|
cfg_template = os.path.join(BASE_DIR, "config_template.yaml")
|
||||||
|
shutil.copyfile(cfg_template, cfg_filename)
|
||||||
|
|
||||||
with open(cfg_filename, 'r') as cfg:
|
with open(cfg_filename, 'r') as cfg:
|
||||||
CONFIG = yaml.safe_load(cfg)
|
CONFIG = yaml.safe_load(cfg)
|
||||||
@ -99,6 +104,17 @@ LOGGING = {
|
|||||||
# Get a logger instance for this setup file
|
# Get a logger instance for this setup file
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
"""
|
||||||
|
Specify a secret key to be used by django.
|
||||||
|
|
||||||
|
Following options are tested, in descending order of preference:
|
||||||
|
|
||||||
|
A) Check for environment variable INVENTREE_SECRET_KEY => Use raw key data
|
||||||
|
B) Check for environment variable INVENTREE_SECRET_KEY_FILE => Load key data from file
|
||||||
|
C) Look for default key file "secret_key.txt"
|
||||||
|
d) Create "secret_key.txt" if it does not exist
|
||||||
|
"""
|
||||||
|
|
||||||
if os.getenv("INVENTREE_SECRET_KEY"):
|
if os.getenv("INVENTREE_SECRET_KEY"):
|
||||||
# Secret key passed in directly
|
# Secret key passed in directly
|
||||||
SECRET_KEY = os.getenv("INVENTREE_SECRET_KEY").strip()
|
SECRET_KEY = os.getenv("INVENTREE_SECRET_KEY").strip()
|
||||||
@ -111,11 +127,20 @@ else:
|
|||||||
if os.path.isfile(key_file):
|
if os.path.isfile(key_file):
|
||||||
logger.info("SECRET_KEY loaded by INVENTREE_SECRET_KEY_FILE")
|
logger.info("SECRET_KEY loaded by INVENTREE_SECRET_KEY_FILE")
|
||||||
else:
|
else:
|
||||||
logger.error(f"Secret key file {key_file} not found")
|
logger.error(f"Secret key file '{key_file}'' not found")
|
||||||
exit(-1)
|
exit(-1)
|
||||||
else:
|
else:
|
||||||
# default secret key location
|
# default secret key location
|
||||||
key_file = os.path.join(BASE_DIR, "secret_key.txt")
|
key_file = os.path.join(BASE_DIR, "secret_key.txt")
|
||||||
|
|
||||||
|
if not os.path.exists(key_file):
|
||||||
|
logger.info("Creating key file 'secret_key.txt'")
|
||||||
|
# Create a random key file
|
||||||
|
with open(key_file, 'w') as f:
|
||||||
|
options = string.digits + string.ascii_letters + string.punctuation
|
||||||
|
key = ''.join([random.choice(options) for i in range(50)])
|
||||||
|
f.write(key)
|
||||||
|
|
||||||
logger.info(f"SECRET_KEY loaded from {key_file}")
|
logger.info(f"SECRET_KEY loaded from {key_file}")
|
||||||
try:
|
try:
|
||||||
SECRET_KEY = open(key_file, "r").read().strip()
|
SECRET_KEY = open(key_file, "r").read().strip()
|
||||||
|
32
tasks.py
32
tasks.py
@ -3,11 +3,10 @@
|
|||||||
from invoke import task
|
from invoke import task
|
||||||
from shutil import copyfile
|
from shutil import copyfile
|
||||||
|
|
||||||
import random
|
|
||||||
import string
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
|
||||||
def apps():
|
def apps():
|
||||||
"""
|
"""
|
||||||
Returns a list of installed apps
|
Returns a list of installed apps
|
||||||
@ -27,6 +26,7 @@ def apps():
|
|||||||
'users',
|
'users',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
def localDir():
|
def localDir():
|
||||||
"""
|
"""
|
||||||
Returns the directory of *THIS* file.
|
Returns the directory of *THIS* file.
|
||||||
@ -35,6 +35,7 @@ def localDir():
|
|||||||
"""
|
"""
|
||||||
return os.path.dirname(os.path.abspath(__file__))
|
return os.path.dirname(os.path.abspath(__file__))
|
||||||
|
|
||||||
|
|
||||||
def managePyDir():
|
def managePyDir():
|
||||||
"""
|
"""
|
||||||
Returns the directory of the manage.py file
|
Returns the directory of the manage.py file
|
||||||
@ -42,6 +43,7 @@ def managePyDir():
|
|||||||
|
|
||||||
return os.path.join(localDir(), 'InvenTree')
|
return os.path.join(localDir(), 'InvenTree')
|
||||||
|
|
||||||
|
|
||||||
def managePyPath():
|
def managePyPath():
|
||||||
"""
|
"""
|
||||||
Return the path of the manage.py file
|
Return the path of the manage.py file
|
||||||
@ -49,6 +51,7 @@ def managePyPath():
|
|||||||
|
|
||||||
return os.path.join(managePyDir(), 'manage.py')
|
return os.path.join(managePyDir(), 'manage.py')
|
||||||
|
|
||||||
|
|
||||||
def manage(c, cmd, pty=False):
|
def manage(c, cmd, pty=False):
|
||||||
"""
|
"""
|
||||||
Runs a given command against django's "manage.py" script.
|
Runs a given command against django's "manage.py" script.
|
||||||
@ -63,32 +66,11 @@ def manage(c, cmd, pty=False):
|
|||||||
cmd=cmd
|
cmd=cmd
|
||||||
), pty=pty)
|
), pty=pty)
|
||||||
|
|
||||||
@task(help={'length': 'Length of secret key (default=50)'})
|
|
||||||
def key(c, length=50, force=False):
|
|
||||||
"""
|
|
||||||
Generates a SECRET_KEY file which InvenTree uses for generating security hashes
|
|
||||||
"""
|
|
||||||
|
|
||||||
SECRET_KEY_FILE = os.path.join(localDir(), 'InvenTree', 'secret_key.txt')
|
@task
|
||||||
|
|
||||||
# If a SECRET_KEY file does not exist, generate a new one!
|
|
||||||
if force or not os.path.exists(SECRET_KEY_FILE):
|
|
||||||
print("Generating SECRET_KEY file - " + SECRET_KEY_FILE)
|
|
||||||
with open(SECRET_KEY_FILE, 'w') as key_file:
|
|
||||||
options = string.digits + string.ascii_letters + string.punctuation
|
|
||||||
|
|
||||||
key = ''.join([random.choice(options) for i in range(length)])
|
|
||||||
|
|
||||||
key_file.write(key)
|
|
||||||
|
|
||||||
else:
|
|
||||||
print("SECRET_KEY file already exists - skipping")
|
|
||||||
|
|
||||||
|
|
||||||
@task(post=[key])
|
|
||||||
def install(c):
|
def install(c):
|
||||||
"""
|
"""
|
||||||
Installs required python packages, and runs initial setup functions.
|
Installs required python packages
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# Install required Python packages with PIP
|
# Install required Python packages with PIP
|
||||||
|
Loading…
Reference in New Issue
Block a user