Switch from dotenv to decouple
parent
1b7666f45e
commit
37598fc74d
|
@ -7,6 +7,7 @@ from django.db.models import Count, Max
|
|||
from django.conf import settings
|
||||
from django.core.cache import cache
|
||||
from django.core.mail import send_mail
|
||||
from django.contrib.sites.models import Site
|
||||
from django.template.loader import render_to_string
|
||||
from django.utils.timezone import make_aware
|
||||
|
||||
|
@ -64,10 +65,11 @@ def export_frames(norad, email, uid, period=None):
|
|||
obj.display_frame()])
|
||||
|
||||
# Notify user
|
||||
site = Site.objects.get_current()
|
||||
subject = '[satnogs] Your request for exported frames is ready!'
|
||||
template = 'emails/exported_frames.txt'
|
||||
data = {
|
||||
'url': '{0}{1}download/{2}'.format(settings.SITE_URL,
|
||||
'url': '{0}{1}download/{2}'.format(site.domain,
|
||||
settings.MEDIA_URL, filename),
|
||||
'norad': norad
|
||||
}
|
||||
|
|
|
@ -160,13 +160,3 @@ class FaqViewTest(TestCase):
|
|||
def test_faq_page(self):
|
||||
response = self.client.get('/faq/')
|
||||
self.assertContains(response, 'How do I suggest a new transmitter?')
|
||||
|
||||
|
||||
@pytest.mark.django_db(transaction=True)
|
||||
class StatsViewTest(TestCase):
|
||||
"""
|
||||
Test to make sure the stats page is working
|
||||
"""
|
||||
def test_stats_page(self):
|
||||
response = self.client.get('/stats/')
|
||||
self.assertContains(response, 'Total satellites')
|
||||
|
|
|
@ -4,10 +4,6 @@ import os
|
|||
|
||||
from celery import Celery
|
||||
|
||||
import dotenv
|
||||
|
||||
dotenv.read_dotenv('.env')
|
||||
|
||||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'db.settings')
|
||||
|
||||
from django.conf import settings # noqa
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
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 = (
|
||||
|
@ -58,28 +58,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', 'django.core.cache.backends.locmem.LocMemCache'),
|
||||
'LOCATION': getenv('CACHE_LOCATION', 'unique-snowflake'),
|
||||
'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', None),
|
||||
'CLIENT_CLASS': config('CACHE_CLIENT_CLASS',
|
||||
default='django_redis.client.DefaultClient'),
|
||||
},
|
||||
'KEY_PREFIX': 'db-{0}'.format(ENVIRONMENT),
|
||||
}
|
||||
}
|
||||
CACHE_TTL = int(getenv('CACHE_TTL', 300))
|
||||
CACHE_TTL = config('CACHE_TTL', default=300, cast=int)
|
||||
|
||||
# Internationalization
|
||||
TIME_ZONE = 'UTC'
|
||||
|
@ -134,9 +132,9 @@ MEDIA_ROOT = Path('media').resolve()
|
|||
MEDIA_URL = '/media/'
|
||||
CRISPY_TEMPLATE_PACK = 'bootstrap3'
|
||||
SATELLITE_DEFAULT_IMAGE = '/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'
|
||||
|
@ -145,7 +143,6 @@ COMPRESS_CSS_FILTERS = [
|
|||
# App conf
|
||||
ROOT_URLCONF = 'db.urls'
|
||||
WSGI_APPLICATION = 'db.wsgi.application'
|
||||
SITE_URL = getenv('SITE_URL', 'https://db.satnogs.org/')
|
||||
|
||||
# Auth
|
||||
AUTHENTICATION_BACKENDS = (
|
||||
|
@ -217,8 +214,13 @@ CELERY_RESULT_SERIALIZER = 'json'
|
|||
CELERY_SEND_TASK_ERROR_EMAILS = True
|
||||
CELERY_TASK_ALWAYS_EAGER = False
|
||||
CELERY_DEFAULT_QUEUE = 'db-{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')
|
||||
CELERY_BROKER_TRANSPORT_OPTIONS = {
|
||||
'visibility_timeout': config('REDIS_VISIBILITY_TIMEOUT', default=604800, cast=int),
|
||||
'fanout_prefix': True
|
||||
}
|
||||
REDIS_CONNECT_RETRY = True
|
||||
|
||||
# API
|
||||
REST_FRAMEWORK = {
|
||||
|
@ -234,7 +236,8 @@ REST_FRAMEWORK = {
|
|||
}
|
||||
|
||||
# Security
|
||||
SECRET_KEY = getenv('SECRET_KEY', 'changeme')
|
||||
SECRET_KEY = config('SECRET_KEY', default='changeme')
|
||||
SECURE_HSTS_SECONDS = config('SECURE_HSTS_SECONDS', default=31536000, cast=int)
|
||||
CSP_DEFAULT_SRC = (
|
||||
"'self'",
|
||||
'https://*.mapbox.com',
|
||||
|
@ -255,34 +258,28 @@ CSP_IMG_SRC = (
|
|||
CSP_CHILD_SRC = (
|
||||
'blob:',
|
||||
)
|
||||
|
||||
SECURE_HSTS_SECONDS = getenv('SECURE_HSTS_SECONDS', 31536000)
|
||||
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())
|
||||
|
||||
# Database
|
||||
DATABASE_URL = getenv('DATABASE_URL', 'sqlite:///db.sqlite3')
|
||||
DATABASE_URL = config('DATABASE_URL', default='sqlite:///db.sqlite3')
|
||||
DATABASES = {'default': db_url(DATABASE_URL)}
|
||||
|
||||
# NETWORK API
|
||||
NETWORK_API_ENDPOINT = getenv('NETWORK_API_ENDPOINT', 'https://network.satnogs.org/api/')
|
||||
DATA_FETCH_DAYS = getenv('DATA_FETCH_DAYS', 10)
|
||||
SATELLITE_POSITION_ENDPOINT = getenv('SATELLITE_POSITION_ENDPOINT',
|
||||
'https://network.satnogs.org/satellite_position/')
|
||||
NETWORK_API_ENDPOINT = config('NETWORK_API_ENDPOINT', default='https://network.satnogs.org/api/')
|
||||
DATA_FETCH_DAYS = config('DATA_FETCH_DAYS', default=10, cast=int)
|
||||
|
||||
# Mapbox API
|
||||
MAPBOX_GEOCODE_URL = 'https://api.tiles.mapbox.com/v4/geocode/mapbox.places/'
|
||||
MAPBOX_TOKEN = getenv('MAPBOX_TOKEN', '')
|
||||
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=''),
|
||||
}
|
||||
|
||||
if ENVIRONMENT == 'dev':
|
||||
|
|
|
@ -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', 'db.settings')
|
||||
|
||||
dotenv.read_dotenv(dotenv='.env')
|
||||
application = get_wsgi_application()
|
||||
|
|
24
env-dist
24
env-dist
|
@ -1,22 +1,10 @@
|
|||
ENVIRONMENT=dev
|
||||
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=*
|
||||
SITE_URL=http://localhost:8000
|
||||
|
||||
# Database
|
||||
DATABASE_URL=sqlite:///db.sqlite3
|
||||
DATABASE_URL='sqlite:///db.sqlite3'
|
||||
|
||||
# Services
|
||||
OPBEAT_ORGID=
|
||||
OPBEAT_APPID=
|
||||
OPBEAT_SECRET=
|
||||
GOOGLE_ANALYTICS_KEY=
|
||||
MAPBOX_TOKEN=
|
||||
# Cache
|
||||
CACHE_BACKEND='django.core.cache.backends.locmem.LocMemCache'
|
||||
CACHE_LOCATION='unique-snowflake'
|
||||
CACHE_CLIENT_CLASS=None
|
||||
|
|
|
@ -1,11 +1,9 @@
|
|||
#!/usr/bin/env python
|
||||
import os
|
||||
import sys
|
||||
import dotenv
|
||||
|
||||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'db.settings')
|
||||
|
||||
if __name__ == "__main__":
|
||||
dotenv.read_dotenv()
|
||||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'db.settings')
|
||||
from django.core.management import execute_from_command_line
|
||||
execute_from_command_line(sys.argv)
|
||||
|
|
|
@ -26,9 +26,8 @@ django-redis-cache==1.7.1 \
|
|||
--hash=sha256:2b4e3510bbcaf3d331975717afd6f15a36fbaf7622504599d2727dc99f90c64d
|
||||
|
||||
# Configuration
|
||||
django-dotenv==1.4.2 \
|
||||
--hash=sha256:3812bb0f4876cf31f902aad140f0645e120e51ee30eb7c40c22050f58a0e4adb \
|
||||
--hash=sha256:a9b1b40a70bd321acd231926acedb9bd2c5e873e33a1873b34a7276d196a765e
|
||||
python-decouple==3.1 \
|
||||
--hash=sha256:1317df14b43efee4337a4aa02914bf004f010cd56d6c4bd894e6474ec8c4fe2d
|
||||
dj-database-url==0.4.2 \
|
||||
--hash=sha256:e16d94c382ea0564c48038fa7fe8d9c890ef1ab1a8ec4cb48e732c124b9482fd
|
||||
opbeat==3.6.0 \
|
||||
|
|
Loading…
Reference in New Issue