1
0
Fork 0

Switch from dotenv to decouple

environments/stage/deployments/49^2
Nikos Roussos 2017-12-16 13:51:14 +02:00
parent ba76cdcda3
commit fdc70a27e0
No known key found for this signature in database
GPG Key ID: BADFF1767BA7C8E1
7 changed files with 52 additions and 77 deletions

View File

@ -1,28 +1,13 @@
ENVIRONMENT = 'dev'
DEBUG = True
# Email
DEFAULT_FROM_EMAIL = 'noreply@example.com'
ADMINS_FROM_NAME = 'Admins'
ADMINS_FROM_EMAIL = 'noreply@example.com'
# Security
SECRET_KEY = 'changeme'
ALLOWED_HOSTS = 'localhost'
SITE_URL = 'http://localhost:8000'
ENVIRONMENT='dev'
DEBUG=True
# Database
DATABASE_URL = 'sqlite:///db.sqlite3'
DATABASE_URL='sqlite:///db.sqlite3'
# Application
DB_API_ENDPOINT = 'https://db.satnogs.org/api/'
STATION_HEARTBEAT_TIME = 60
DB_API_ENDPOINT='https://db.satnogs.org/api/'
# Cache
CACHE_BACKEND = 'django.core.cache.backends.locmem.LocMemCache'
CACHE_LOCATION = 'unique-snowflake'
CACHE_CLIENT_CLASS = None
# Celery
CELERY_BROKER_URL = 'redis://redis:6379/0'
CELERY_RESULT_BACKEND = 'redis://redis:6379/0'
CACHE_BACKEND='django.core.cache.backends.locmem.LocMemCache'
CACHE_LOCATION='unique-snowflake'
CACHE_CLIENT_CLASS=None

View File

@ -1,11 +1,9 @@
#!/usr/bin/env python
import os
import sys
import dotenv
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'network.settings')
if __name__ == "__main__":
dotenv.read_dotenv()
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'network.settings')
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)

View File

@ -219,7 +219,7 @@ def observation_new(request):
messages.error(request, 'Please use the datetime dialogs to submit valid values.')
return redirect(reverse('base:observation_new'))
if (end_time - start_time) > timedelta(minutes=int(settings.DATE_MAX_RANGE)):
if (end_time - start_time) > timedelta(minutes=settings.OBSERVATION_DATE_MAX_RANGE):
messages.error(request, 'Please use the datetime dialogs to submit valid timeframe.')
return redirect(reverse('base:observation_new'))
@ -309,9 +309,9 @@ def observation_new(request):
return render(request, 'base/observation_new.html',
{'satellites': satellites,
'transmitters': transmitters, 'obs_filter': obs_filter,
'date_min_start': settings.DATE_MIN_START,
'date_min_end': settings.DATE_MIN_END,
'date_max_range': settings.DATE_MAX_RANGE})
'date_min_start': settings.OBSERVATION_DATE_MIN_START,
'date_min_end': settings.OBSERVATION_DATE_MIN_END,
'date_max_range': settings.OBSERVATION_DATE_MAX_RANGE})
def prediction_windows(request, sat_id, transmitter, start_date, end_date,
@ -612,7 +612,7 @@ def station_view(request, id):
if (float(elevation) >= station.horizon and tr < ts):
valid = True
if tr < ephem.Date(datetime.now() +
timedelta(minutes=int(settings.DATE_MIN_START))):
timedelta(minutes=settings.OBSERVATION_DATE_MIN_START)):
valid = False
polar_data = calculate_polar_data(observer,
sat_ephem,

View File

@ -4,9 +4,6 @@ import os
from celery import Celery
import dotenv
dotenv.read_dotenv('.env')
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'network.settings')

View File

@ -1,11 +1,11 @@
from os import getenv
from decouple import config, Csv
from dj_database_url import parse as db_url
from unipath import Path
ROOT = Path(__file__).parent.parent
ENVIRONMENT = getenv('ENVIRONMENT', 'production')
DEBUG = getenv('DEBUG', False)
ENVIRONMENT = config('ENVIRONMENT', default='production')
DEBUG = config('DEBUG', default=False, cast=bool)
# Apps
DJANGO_APPS = (
@ -65,28 +65,26 @@ else:
EMAIL_HOST = 'localhost'
EMAIL_PORT = 25
EMAIL_TIMEOUT = 300
DEFAULT_FROM_EMAIL = getenv('DEFAULT_FROM_EMAIL', 'noreply@satnogs.org')
ADMINS = (
(
getenv('ADMINS_FROM_NAME', 'SatNOGS Admins'),
getenv('ADMINS_FROM_EMAIL', DEFAULT_FROM_EMAIL)
),
)
DEFAULT_FROM_EMAIL = config('DEFAULT_FROM_EMAIL', default='noreply@satnogs.org')
ADMINS = [
('SatNOGS Admins', DEFAULT_FROM_EMAIL)
]
MANAGERS = ADMINS
SERVER_EMAIL = DEFAULT_FROM_EMAIL
# Cache
CACHES = {
'default': {
'BACKEND': getenv('CACHE_BACKEND', 'redis_cache.RedisCache'),
'LOCATION': getenv('CACHE_LOCATION', 'unix://var/run/redis/redis.sock'),
'BACKEND': config('CACHE_BACKEND', default='redis_cache.RedisCache'),
'LOCATION': config('CACHE_LOCATION', default='unix://var/run/redis/redis.sock'),
'OPTIONS': {
'CLIENT_CLASS': getenv('CACHE_CLIENT_CLASS', 'django_redis.client.DefaultClient'),
'CLIENT_CLASS': config('CACHE_CLIENT_CLASS',
default='django_redis.client.DefaultClient'),
},
'KEY_PREFIX': 'network-{0}'.format(ENVIRONMENT),
}
}
CACHE_TTL = int(getenv('CACHE_TTL', 300))
CACHE_TTL = config('CACHE_TTL', default=300, cast=int)
# Internationalization
TIME_ZONE = 'UTC'
@ -137,14 +135,14 @@ STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'compressor.finders.CompressorFinder',
)
MEDIA_ROOT = getenv('MEDIA_ROOT', Path('media').resolve())
MEDIA_ROOT = Path('media').resolve()
MEDIA_URL = '/media/'
CRISPY_TEMPLATE_PACK = 'bootstrap3'
STATION_DEFAULT_IMAGE = '/static/img/ground_station_no_image.png'
SATELLITE_DEFAULT_IMAGE = 'https://db.satnogs.org/static/img/sat.png'
COMPRESS_ENABLED = getenv('COMPRESS_ENABLED', False)
COMPRESS_OFFLINE = getenv('COMPRESS_OFFLINE', False)
COMPRESS_CACHE_BACKEND = getenv('COMPRESS_CACHE_BACKEND', 'default')
COMPRESS_ENABLED = config('COMPRESS_ENABLED', default=False, cast=bool)
COMPRESS_OFFLINE = config('COMPRESS_OFFLINE', default=False, cast=bool)
COMPRESS_CACHE_BACKEND = config('COMPRESS_CACHE_BACKEND', default='default')
COMPRESS_CSS_FILTERS = [
'compressor.filters.css_default.CssAbsoluteFilter',
'compressor.filters.cssmin.rCSSMinFilter'
@ -232,11 +230,11 @@ CELERY_RESULT_SERIALIZER = 'json'
CELERY_SEND_TASK_ERROR_EMAILS = True
CELERY_TASK_ALWAYS_EAGER = False
CELERY_DEFAULT_QUEUE = 'network-{0}-queue'.format(ENVIRONMENT)
CELERY_BROKER_URL = getenv('CELERY_BROKER_URL', 'redis://redis:6379/0')
CELERY_RESULT_BACKEND = getenv('CELERY_RESULT_BACKEND', 'redis://redis:6379/0')
CELERY_BROKER_URL = config('CELERY_BROKER_URL', default='redis://redis:6379/0')
CELERY_RESULT_BACKEND = config('CELERY_RESULT_BACKEND', default='redis://redis:6379/0')
REDIS_CONNECT_RETRY = True
CELERY_BROKER_TRANSPORT_OPTIONS = {
'visibility_timeout': getenv('REDIS_VISIBILITY_TIMEOUT', default=604800),
'visibility_timeout': config('REDIS_VISIBILITY_TIMEOUT', default=604800, cast=int),
'fanout_prefix': True
}
@ -254,14 +252,12 @@ REST_FRAMEWORK = {
}
# Security
SECRET_KEY = getenv('SECRET_KEY', 'changeme')
SECURE_HSTS_SECONDS = getenv('SECURE_HSTS_SECONDS', 31536000)
SECRET_KEY = config('SECRET_KEY', default='changeme')
SECURE_HSTS_SECONDS = config('SECURE_HSTS_SECONDS', default=31536000, cast=int)
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
SECURE_CONTENT_TYPE_NOSNIFF = True
SECURE_BROWSER_XSS_FILTER = True
ALLOWED_HOSTS = [
getenv('ALLOWED_HOSTS', '*')
]
ALLOWED_HOSTS = config('ALLOWED_HOSTS', default='localhost', cast=Csv())
CSP_DEFAULT_SRC = (
"'self'",
'https://*.mapbox.com',
@ -289,7 +285,7 @@ CSP_CHILD_SRC = (
)
# Database
DATABASE_URL = getenv('DATABASE_URL', 'sqlite:///db.sqlite3')
DATABASE_URL = config('DATABASE_URL', default='sqlite:///db.sqlite3')
DATABASES = {'default': db_url(DATABASE_URL)}
DATABASES_EXTRAS = {
'OPTIONS': {
@ -301,39 +297,39 @@ if DATABASES['default']['ENGINE'].split('.')[-1] == 'mysql':
# Mapbox API
MAPBOX_GEOCODE_URL = 'https://api.tiles.mapbox.com/v4/geocode/mapbox.places/'
MAPBOX_MAP_ID = getenv('MAPBOX_MAP_ID', '')
MAPBOX_TOKEN = getenv('MAPBOX_TOKEN', '')
MAPBOX_MAP_ID = config('MAPBOX_MAP_ID', default='')
MAPBOX_TOKEN = config('MAPBOX_TOKEN', default='')
# Metrics
OPBEAT = {
'ORGANIZATION_ID': getenv('OPBEAT_ORGID', None),
'APP_ID': getenv('OPBEAT_APPID', None),
'SECRET_TOKEN': getenv('OPBEAT_SECRET', None),
'ORGANIZATION_ID': config('OPBEAT_ORGID', default=''),
'APP_ID': config('OPBEAT_APPID', default=''),
'SECRET_TOKEN': config('OPBEAT_SECRET', default=''),
}
# Observations settings
# Datetimes in minutes for scheduling OPTIONS
OBSERVATION_DATE_MIN_START = config('OBSERVATION_DATE_MIN_START', default=15, cast=int)
OBSERVATION_DATE_MIN_END = config('OBSERVATION_DATE_MIN_START', default=75, cast=int)
# Deletion range in minutes
OBSERVATION_DATE_MAX_RANGE = config('OBSERVATION_DATE_MAX_RANGE', default=480, cast=int)
# Clean up threshold in days
DATE_MIN_START = '15'
DATE_MIN_END = '75'
DATE_MAX_RANGE = '480'
OBSERVATION_OLD_RANGE = getenv('OBSERVATION_OLD_RANGE', 30)
OBSERVATION_OLD_RANGE = config('OBSERVATION_OLD_RANGE', default=30, cast=int)
# Station settings
# Heartbeat for keeping a station online in minutes
STATION_HEARTBEAT_TIME = config('STATION_HEARTBEAT_TIME', default=60, cast=int)
# Maximum window for upcoming passes in hours
STATION_HEARTBEAT_TIME = getenv('STATION_HEARTBEAT_TIME', 60)
STATION_UPCOMING_END = getenv('STATION_UPCOMING_END', 12)
STATION_UPCOMING_END = config('STATION_UPCOMING_END', default=12, cast=int)
# DB API
DB_API_ENDPOINT = getenv('DB_API_ENDPOINT', 'https://db.satnogs.org/api/')
DB_API_ENDPOINT = config('DB_API_ENDPOINT', default='https://db.satnogs.org/api/')
# ListView pagination
ITEMS_PER_PAGE = 25
# User settings
AVATAR_GRAVATAR_DEFAULT = getenv('AVATAR_GRAVATAR_DEFAULT', 'mm')
AVATAR_GRAVATAR_DEFAULT = config('AVATAR_GRAVATAR_DEFAULT', default='mm')
if ENVIRONMENT == 'dev':
# Disable template caching

View File

@ -1,9 +1,8 @@
#!/usr/bin/env python
import os
import dotenv
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'network.settings')
dotenv.read_dotenv(dotenv='.env')
application = get_wsgi_application()

View File

@ -13,8 +13,8 @@ unicode-slugify==0.1.3 \
--hash=sha256:34cf3afefa6480efe705a4fc0eaeeaf7f49754aec322ba3e8b2f27dc1cbcf650
django-autoslug==1.9.3 \
--hash=sha256:d466a68e87d076f0d0d6ffe51ff70fa22ae4ca2f7717d769feb6265ef68c50f8
django_dotenv==1.4.1 \
--hash=sha256:2930f6b0c0955ac150e1ca9ac01e84afa71efdbb544dea7155f026e20e401305
python-decouple==3.1 \
--hash=sha256:1317df14b43efee4337a4aa02914bf004f010cd56d6c4bd894e6474ec8c4fe2d
dj-database-url==0.4.2 \
--hash=sha256:e16d94c382ea0564c48038fa7fe8d9c890ef1ab1a8ec4cb48e732c124b9482fd
opbeat==3.5.3 \