· 5 years ago · Jan 15, 2020, 10:40 AM
1"""
2Django settings for crmos project.
3
4Generated by 'django-admin startproject' using Django 3.0.
5
6For more information on this file, see
7https://docs.djangoproject.com/en/3.0/topics/settings/
8
9For the full list of settings and their values, see
10https://docs.djangoproject.com/en/3.0/ref/settings/
11"""
12
13import os
14import toml
15
16# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
17BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
18PROJECT_HOME = os.environ['PROJECT_HOME']
19
20ENV_TOML_FILE_PATH = os.path.join(PROJECT_HOME, 'env.toml')
21TOML_CONFIG = toml.load(ENV_TOML_FILE_PATH)
22
23# Quick-start development settings - unsuitable for production
24# See https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/
25
26# SECURITY WARNING: keep the secret key used in production secret!
27SECRET_KEY = TOML_CONFIG['django']['SECRET_KEY']
28
29# SECURITY WARNING: don't run with debug turned on in production!
30DEBUG = TOML_CONFIG['django']['DEBUG']
31
32ALLOWED_HOSTS = TOML_CONFIG['django']['ALLOWED_HOSTS']
33
34# Application definition
35
36DEFAULT_APPS = [
37 'django.contrib.admin',
38 'django.contrib.auth',
39 'django.contrib.contenttypes',
40 'django.contrib.sessions',
41 'django.contrib.messages',
42 'django.contrib.staticfiles',
43]
44
45THIRD_PARTY_APPS = [
46 'django_extensions',
47 'graphene_django',
48 'corsheaders',
49
50]
51
52LOCAL_APPS = [
53 'merchant',
54 'typical',
55 'accounts',
56 'profiles',
57 'user_files'
58]
59
60INSTALLED_APPS = DEFAULT_APPS + THIRD_PARTY_APPS + LOCAL_APPS
61
62GRAPHENE = {
63 'SCHEMA': 'graphql_registry.schema.schema'
64}
65
66MIDDLEWARE = [
67 'django.middleware.security.SecurityMiddleware',
68 'django.contrib.sessions.middleware.SessionMiddleware',
69 'corsheaders.middleware.CorsMiddleware',
70 'django.middleware.common.CommonMiddleware',
71 'django.middleware.csrf.CsrfViewMiddleware',
72 'django.contrib.auth.middleware.AuthenticationMiddleware',
73 'django.contrib.messages.middleware.MessageMiddleware',
74 'django.middleware.clickjacking.XFrameOptionsMiddleware',
75]
76
77ROOT_URLCONF = 'crmos.urls'
78
79TEMPLATES = [
80 {
81 'BACKEND': 'django.template.backends.django.DjangoTemplates',
82 'DIRS': [],
83 'APP_DIRS': True,
84 'OPTIONS': {
85 'context_processors': [
86 'django.template.context_processors.debug',
87 'django.template.context_processors.request',
88 'django.contrib.auth.context_processors.auth',
89 'django.contrib.messages.context_processors.messages',
90 ],
91 },
92 },
93]
94
95WSGI_APPLICATION = 'crmos.wsgi.application'
96
97# Database
98# https://docs.djangoproject.com/en/3.0/ref/settings/#databases
99if TOML_CONFIG['django']['DB_ENGINE'] == 'django.db.backends.sqlite3':
100 DATABASES = {
101 'default': {
102 'ENGINE': 'django.db.backends.sqlite3',
103 'NAME': os.path.join(PROJECT_HOME, TOML_CONFIG['django']['SQLITE_DB_NAME']),
104 }
105 }
106
107elif TOML_CONFIG['django']['DB_ENGINE'] == 'django.db.backends.postgresql':
108 DATABASES = {
109 'default': {
110 'ENGINE': 'django.db.backends.postgresql',
111 'NAME': TOML_CONFIG['django']['DB_NAME'],
112 'USER': TOML_CONFIG['django']['DB_USER'],
113 'PASSWORD': TOML_CONFIG['django']['DB_PASSWORD'],
114 'HOST': TOML_CONFIG['django']['DB_HOST'],
115 'PORT': TOML_CONFIG['django']['DB_PORT'],
116 }
117 }
118
119# Password validation
120# https://docs.djangoproject.com/en/3.0/ref/settings/#auth-password-validators
121
122AUTH_PASSWORD_VALIDATORS = [
123 {
124 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
125 },
126 {
127 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
128 },
129 {
130 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
131 },
132 {
133 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
134 },
135]
136
137# Internationalization
138# https://docs.djangoproject.com/en/3.0/topics/i18n/
139
140LANGUAGE_CODE = 'en-us'
141
142TIME_ZONE = TOML_CONFIG["django"]["TIME_ZONE"]
143
144USE_I18N = True
145
146USE_L10N = True
147
148USE_TZ = True
149
150# Static files (CSS, JavaScript, Images)
151# https://docs.djangoproject.com/en/3.0/howto/static-files/
152
153STATIC_URL = TOML_CONFIG['django']['STATIC_URL']
154
155if not DEBUG:
156 STATIC_ROOT = os.path.join(PROJECT_HOME, TOML_CONFIG['django']['STATIC_ROOT'])
157
158# CORS CONFIG #
159CORS_ORIGIN_ALLOW_ALL = True
160CORS_ALLOW_METHODS = (
161 'GET',
162 'POST',
163 'PUT',
164 'DELETE',
165 'OPTIONS',
166 'PATCH',
167)