Skip to content

Commit

Permalink
heroku deploy (#14)
Browse files Browse the repository at this point in the history
heroku deploy (#14)
  • Loading branch information
pulse-mind committed Dec 29, 2021
1 parent 044db6d commit fa64650
Show file tree
Hide file tree
Showing 8 changed files with 180 additions and 5 deletions.
1 change: 1 addition & 0 deletions Procfile
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
web: mkdir -p demo/demo/static && python demo/manage.py collectstatic && python demo/manage.py runserver 0.0.0.0:$PORT
1 change: 1 addition & 0 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ Django Suit is alternative theme/skin/extension for `Django <http://www.djangopr
v2 version is working with Django 3.2 and is using Bootstrap 5.1

* Project home: http://djangosuit.com/ (not maintained)
* *NEW* Live demo v2 : http://django-suit-v2.herokuapp.com/


License
Expand Down
145 changes: 145 additions & 0 deletions demo/demo/settings-heroku.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
"""
Django settings for demo project.
Generated by 'django-admin startproject' using Django 1.9.1.
For more information on this file, see
https://docs.djangoproject.com/en/1.9/topics/settings/
For the full list of settings and their values, see
https://docs.djangoproject.com/en/1.9/ref/settings/
"""

import os

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.9/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = os.getenv('SECRET_KEY', 'Optional default value')

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False
INTERNAL_IPS = ("127.0.0.1", )

ALLOWED_HOSTS = ['django-suit-v2.herokuapp.com']


# Application definition

INSTALLED_APPS = [

# Demo app
'demo',

# Django Suit
'demo.apps.SuitConfig',

# 3rd party apps
'django_select2',

# Django
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]

MIDDLEWARE = [
'whitenoise.middleware.WhiteNoiseMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
#'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'demo.urls'

TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]

WSGI_APPLICATION = 'demo.wsgi.application'


# Database
# https://docs.djangoproject.com/en/1.9/ref/settings/#databases

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}


# Password validation
# https://docs.djangoproject.com/en/1.9/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]


# Internationalization
# https://docs.djangoproject.com/en/1.9/topics/i18n/

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'Europe/Riga'

USE_I18N = True

USE_L10N = True

USE_TZ = True


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.9/howto/static-files/
PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))
STATIC_ROOT = os.path.join(PROJECT_ROOT , 'staticfiles')
STATIC_URL = '/static/'
# Extra lookup directories for collectstatic to find static files
STATICFILES_DIRS = (
os.path.join(PROJECT_ROOT , 'static'),
)

# Add configuration for static files storage using whitenoise
STATICFILES_STORAGE = 'whitenoise.storage.CompressedStaticFilesStorage'

# For demo app specific only:
# Use file backend for sessions, to not mess DB
SESSION_ENGINE = 'django.contrib.sessions.backends.file'
19 changes: 15 additions & 4 deletions demo/manage.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,21 @@
#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""
import os
import sys

if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "demo.settings")

from django.core.management import execute_from_command_line

def main():
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'demo.settings')
try:
from django.core.management import execute_from_command_line
except ImportError as exc:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
) from exc
execute_from_command_line(sys.argv)


if __name__ == '__main__':
main()
4 changes: 4 additions & 0 deletions demo/requirements-heroku.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Django==3.2.10
Django-Select2==7.4.2
gunicorn==20.1.0
whitenoise
13 changes: 12 additions & 1 deletion docs/contribute.rst
Original file line number Diff line number Diff line change
Expand Up @@ -64,5 +64,16 @@ Compile docs:
# Clean & compile
make -C docs clean html
Heroku
------
* requirements.txt is loading demo/requirements-heroku.txt
* runtime.txt is setting the python version
* Procfile is defining how to run the app. Actually it runs collectstatic (because the default heroku task can not
use the demo settings), then it creates static directory and finally run the app
* demo/settings-heroku to run with DEBUG=False and static with whitenoise

On Heroku I defined :
* SECRET_KEY
* DISABLE_COLLECTSTATIC = 1
* DJANGO_SETTINGS_MODULE = demo.settings-heroku

1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
-r demo/requirements-heroku.txt
1 change: 1 addition & 0 deletions runtime.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
python-3.10.0

0 comments on commit fa64650

Please sign in to comment.