On Friday 26 May 2017 04:22:49 marcin.j.nowak@gmail.com wrote:
> I think that my reqs are pretty straightforward.
> I'd like to setup project environment with 3 different apps:
>
> 1. main app (public)
> 2. admin app (vpn)
> 3. local network app for api talking with other services in the
> datacenter
>
> The whole thing is about preserving same project environment.
> Models, registries, configuration should stay same.
> Middlewares, urls, views and anything related to http will be
> different.
Use Mezzanine's approach (modified a bit by me) in settings.py near bottom:
PROJECT_APP_PATH = os.path.dirname(os.path.abspath(__file__))
PROJECT_APP = os.path.basename(PROJECT_APP_PATH)
local_module = os.getenv("LOCAL_SETTINGS_MODULE", "local_settings.py")
f = os.path.join(PROJECT_APP_PATH, local_module)
if os.path.exists(f):
import sys
import imp
module_name = "{}.{}".format(PROJECT_APP, local_module[0:-3])
module = imp.new_module(module_name)
module.__file__ = f
sys.modules[module_name] = module
exec(open(f, "rb").read())
else:
print("WARNING: no such local module: {}: File does not exist".format(f))
Now your repo can have public_settings.py, admin_settings.py etc, and use env in uwsgi configuration to select the correct one. The main settings.py contains shared settings. All the rest in the local variants.
--
Melvyn Sopacua
No comments:
Post a Comment