From 2c845ca72e120f72b0a18b237b4a17a450a8d40b Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Fri, 11 Jul 2014 03:34:28 -0400 Subject: [PATCH] Generate a new secret key and save it to local.py settings after installation, use this local.py file by default --- mayan/bin/mayan-edms.py | 2 +- mayan/settings/local.py | 3 +++ setup.py | 22 ++++++++++++++++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 mayan/settings/local.py diff --git a/mayan/bin/mayan-edms.py b/mayan/bin/mayan-edms.py index c8d9c5d18b..32d8e4f7c0 100755 --- a/mayan/bin/mayan-edms.py +++ b/mayan/bin/mayan-edms.py @@ -3,7 +3,7 @@ import os import sys if __name__ == "__main__": - os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mayan.settings") + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mayan.settings.local") from django.core.management import execute_from_command_line diff --git a/mayan/settings/local.py b/mayan/settings/local.py new file mode 100644 index 0000000000..e13328181e --- /dev/null +++ b/mayan/settings/local.py @@ -0,0 +1,3 @@ +from __future__ import absolute_import + +from .base import * diff --git a/setup.py b/setup.py index 07826433a0..a415a2ef86 100644 --- a/setup.py +++ b/setup.py @@ -1,12 +1,17 @@ #!/usr/bin/env python import os +import random; +import string; import sys try: from setuptools import setup except ImportError: from distutils.core import setup + from distutils.command.install import install as _install +else: + from setuptools.command.install import install as _install import mayan @@ -18,6 +23,22 @@ if sys.argv[-1] == 'publish': sys.exit() +def post_install(dir): + secret = ''.join([random.SystemRandom().choice(string.digits + string.letters + string.punctuation) for i in range(100)]) + with open(os.path.join(dir, 'mayan', 'settings', 'local.py'), 'w+') as file_object: + file_object.write('\n'.join([ + 'from __future__ import absolute_import', + 'from .base import *', + "SECRET_KEY = '{}'".format(secret), + ])) + + +class install(_install): + def run(self): + _install.run(self) + self.execute(post_install, (self.install_lib,), msg="Running post install task") + + def fullsplit(path, result=None): """ Split a pathname into components (the opposite of os.path.join) in a @@ -108,6 +129,7 @@ setup( 'Topic :: Internet :: WWW/HTTP :: WSGI :: Application', 'Topic :: Communications :: File Sharing', ], + cmdclass={'install': install}, description='A Django based Document Management System.', include_package_data=True, install_requires=install_requires,