2
0
Эх сурвалжийг харах

Work on #17, move more toward common django/wagtail conventions WRT settings file; fix Vagrant issues, adjust readme accordingly

David Ray 8 жил өмнө
parent
commit
42d466ea89

+ 2 - 1
.gitignore

@@ -9,7 +9,8 @@
 .~*
 common/CACHE
 bakerydemo/media/*
-bakerydemodb
+bakerydemo/settings/local.py
+bakerydemodb*
 __pycache__
 .*
 .vagrant/

+ 0 - 1
bakerydemo/settings/__init__.py

@@ -1 +0,0 @@
-from .dev import *

+ 2 - 2
bakerydemo/settings/base.py

@@ -51,7 +51,7 @@ INSTALLED_APPS = [
     'wagtail.contrib.modeladmin',
     'wagtail.wagtailcore',
     'wagtail.contrib.wagtailapi',
-    
+
     'rest_framework',
     'modelcluster',
     'taggit',
@@ -106,7 +106,7 @@ WSGI_APPLICATION = 'bakerydemo.wsgi.application'
 DATABASES = {
     'default': {
         'ENGINE': 'django.db.backends.sqlite3',
-        'NAME': 'bakerydemodb',
+        'NAME': os.path.join(BASE_DIR, 'bakerydemodb')
     }
 }
 

+ 0 - 5
bakerydemo/settings/dev.py

@@ -6,8 +6,3 @@ EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
 
 # BASE_URL required for notification emails
 BASE_URL = 'http://localhost:8000'
-
-try:
-    from .local import *
-except ImportError:
-    pass

+ 0 - 7
bakerydemo/settings/heroku.py

@@ -3,8 +3,6 @@ import dj_database_url
 from .base import *
 
 
-DEBUG = True
-
 # Accept all hostnames, since we don't know in advance which hostname will be used for any given Heroku instance.
 # IMPORTANT: Set this to a real hostname when using this in production!
 # See https://docs.djangoproject.com/en/1.10/ref/settings/#allowed-hosts
@@ -22,8 +20,3 @@ DATABASES['default'].update(db_from_env)
 # https://warehouse.python.org/project/whitenoise/
 
 STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
-
-try:
-    from .local import *
-except ImportError:
-    pass

+ 3 - 0
bakerydemo/settings/local.py.example

@@ -0,0 +1,3 @@
+from bakerydemo.settings.dev import *   # noqa
+
+# Override settings here

+ 7 - 1
bakerydemo/wsgi.py

@@ -8,7 +8,13 @@ https://docs.djangoproject.com/en/1.10/howto/deployment/wsgi/
 """
 
 import os
-os.environ.setdefault("DJANGO_SETTINGS_MODULE", "bakerydemo.settings")
 
+import dotenv
 from django.core.wsgi import get_wsgi_application
+
+
+dotenv.read_dotenv(os.path.join(os.path.dirname(os.path.dirname(__file__)), '.env'))
+
+os.environ.setdefault("DJANGO_SETTINGS_MODULE", "bakerydemo.settings.dev")
+
 application = get_wsgi_application()

+ 5 - 0
manage.py

@@ -2,7 +2,12 @@
 import os
 import sys
 
+import dotenv
+
+
 if __name__ == "__main__":
+    dotenv.read_dotenv()
+
     os.environ.setdefault("DJANGO_SETTINGS_MODULE", "bakerydemo.settings")
 
     from django.core.management import execute_from_command_line

+ 10 - 0
readme.md

@@ -54,6 +54,16 @@ With PIP installed run the following commands:
     git clone git@github.com:wagtail/bakerydemo.git
     cd wagtaildemo
     pip install -r requirements.txt
+
+Next, we'll set up our local environment variables. We use django-dotenv to help with this. It reads environment
+variables located in a file name .env in the top level directory of the project. The only variable we need to start is
+DJANGO_SETTINGS_MODULE:
+
+    $ cp bakerydemo/settings/local.example.py bakerydemo/settings/local.py
+    $ echo "DJANGO_SETTINGS_MODULE=bakerydemo.settings.local" > .env
+
+Execute the following commands:
+
     ./manage.py migrate
     ./manage.py load_initial_data
     ./manage.py runserver

+ 1 - 0
requirements.txt

@@ -1,4 +1,5 @@
 Django
+django-dotenv
 elasticsearch
 wagtail
 wagtailfontawesome

+ 4 - 5
vagrant/provision.sh

@@ -9,10 +9,6 @@ PYTHON=$VIRTUALENV_DIR/bin/python
 PIP=$VIRTUALENV_DIR/bin/pip
 
 
-# Create database
-su - vagrant -c "createdb $PROJECT_NAME"
-
-
 # Virtualenv setup for project
 su - vagrant -c "virtualenv --python=python3 $VIRTUALENV_DIR"
 # Replace previous line with this if you are using Python 2
@@ -31,6 +27,10 @@ su - vagrant -c "$PIP install -r $PROJECT_DIR/requirements.txt"
 # Set execute permissions on manage.py as they get lost if we build from a zip file
 chmod a+x $PROJECT_DIR/manage.py
 
+# copy local settings file
+cp $PROJECT_DIR/bakerydemo/settings/local.py.example $PROJECT_DIR/bakerydemo/settings/local.py
+# add .env file for django-dotenv environment variable definitions
+echo DJANGO_SETTINGS_MODULE=$PROJECT_NAME.settings.local > $PROJECT_DIR/.env
 
 # Run syncdb/migrate/load_initial_data/update_index
 su - vagrant -c "$PYTHON $PROJECT_DIR/manage.py migrate --noinput && \
@@ -41,7 +41,6 @@ su - vagrant -c "$PYTHON $PROJECT_DIR/manage.py migrate --noinput && \
 # Add a couple of aliases to manage.py into .bashrc
 cat << EOF >> /home/vagrant/.bashrc
 export PYTHONPATH=$PROJECT_DIR
-export DJANGO_SETTINGS_MODULE=$PROJECT_NAME.settings.dev
 
 alias dj="django-admin.py"
 alias djrun="dj runserver 0.0.0.0:8000"