· 9 years ago · Jan 02, 2017, 04:08 PM
1# Put this code in your settings file
2# Saves new secret key to secret.key file in same folder as your settings
3
4import logging
5
6logger = logging.getLogger(__name__)
7
8## Secret key generation functions
9secret_key_fn = os.path.join(os.path.dirname(__file__), 'secret.key')
10
11
12def create_secret_key():
13 import random
14 import string
15
16 return ''.join(
17 [random.SystemRandom().choice(string.printable) for i in range(50)]
18 )
19
20
21def create_secret_key_file(secret_key):
22 with open(secret_key_fn, 'w') as f:
23 f.write(secret_key)
24 return secret_key
25
26
27def load_secret_key_file():
28 with open(secret_key_fn, 'r') as f:
29 # Read one byte more to check content length
30 skey = f.read(51)
31 if len(skey) != 50:
32 # We probably could just replace file with a new generated key,
33 # but it's safer to let the user handle it
34 raise ValueError('Content of secret_key file is wrong')
35 return skey
36
37if os.path.exists(secret_key_fn):
38 logger.info('Load secret key from file')
39 SECRET_KEY = load_secret_key_file()
40else:
41 logger.warning('Unable to import SECRET_KEY generating a new one')
42 SECRET_KEY = create_secret_key_file(create_secret_key())