1
0
Fork 0

Switch from dotenv to decouple

merge-requests/214/head
Nikos Roussos 2018-01-06 13:25:23 +02:00
parent 1b7666f45e
commit 37598fc74d
No known key found for this signature in database
GPG Key ID: BADFF1767BA7C8E1
8 changed files with 45 additions and 76 deletions

View File

@ -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
}

View File

@ -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')

View File

@ -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

View File

@ -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':

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', 'db.settings')
dotenv.read_dotenv(dotenv='.env')
application = get_wsgi_application()

View File

@ -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

View File

@ -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)

View File

@ -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 \