|
2 | 2 | from os.path import join |
3 | 3 | import dj_database_url |
4 | 4 | from configurations import Configuration |
| 5 | + |
5 | 6 | BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) |
6 | 7 |
|
7 | 8 |
|
8 | 9 | class Common(Configuration): |
9 | 10 |
|
10 | 11 | INSTALLED_APPS = ( |
11 | | - 'django.contrib.admin', |
12 | | - 'django.contrib.auth', |
13 | | - 'django.contrib.contenttypes', |
14 | | - 'django.contrib.sessions', |
15 | | - 'django.contrib.messages', |
16 | | - 'django.contrib.staticfiles', |
17 | | - |
| 12 | + "django.contrib.admin", |
| 13 | + "django.contrib.auth", |
| 14 | + "django.contrib.contenttypes", |
| 15 | + "django.contrib.sessions", |
| 16 | + "django.contrib.messages", |
| 17 | + "django.contrib.staticfiles", |
18 | 18 | # Third party apps |
19 | | - 'rest_framework', # utilities for rest apis |
20 | | - 'rest_framework.authtoken', # token authentication |
21 | | - 'django_filters', # for filtering rest endpoints |
22 | | - |
| 19 | + "rest_framework", # utilities for rest apis |
| 20 | + "rest_framework.authtoken", # token authentication |
| 21 | + "django_filters", # for filtering rest endpoints |
23 | 22 | # Your apps |
24 | | - 'vbos.users', |
25 | | - |
| 23 | + "vbos.users", |
26 | 24 | ) |
27 | 25 |
|
28 | 26 | # https://docs.djangoproject.com/en/2.0/topics/http/middleware/ |
29 | 27 | MIDDLEWARE = ( |
30 | | - 'django.middleware.security.SecurityMiddleware', |
31 | | - 'django.contrib.sessions.middleware.SessionMiddleware', |
32 | | - 'django.middleware.common.CommonMiddleware', |
33 | | - 'django.middleware.csrf.CsrfViewMiddleware', |
34 | | - 'django.contrib.auth.middleware.AuthenticationMiddleware', |
35 | | - 'django.contrib.messages.middleware.MessageMiddleware', |
36 | | - 'django.middleware.clickjacking.XFrameOptionsMiddleware', |
| 28 | + "django.middleware.security.SecurityMiddleware", |
| 29 | + "django.contrib.sessions.middleware.SessionMiddleware", |
| 30 | + "django.middleware.common.CommonMiddleware", |
| 31 | + "django.middleware.csrf.CsrfViewMiddleware", |
| 32 | + "django.contrib.auth.middleware.AuthenticationMiddleware", |
| 33 | + "django.contrib.messages.middleware.MessageMiddleware", |
| 34 | + "django.middleware.clickjacking.XFrameOptionsMiddleware", |
37 | 35 | ) |
38 | 36 |
|
39 | 37 | ALLOWED_HOSTS = ["*"] |
40 | | - ROOT_URLCONF = 'vbos.urls' |
41 | | - SECRET_KEY = os.getenv('DJANGO_SECRET_KEY') |
42 | | - WSGI_APPLICATION = 'vbos.wsgi.application' |
| 38 | + ROOT_URLCONF = "vbos.urls" |
| 39 | + SECRET_KEY = os.getenv("DJANGO_SECRET_KEY") |
| 40 | + WSGI_APPLICATION = "vbos.wsgi.application" |
43 | 41 |
|
44 | 42 | # Email |
45 | | - EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' |
| 43 | + EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend" |
46 | 44 |
|
47 | | - ADMINS = ( |
48 | | - |
49 | | - ) |
| 45 | + ADMINS = (( "Author", "[email protected]"),) |
50 | 46 |
|
51 | 47 | # Postgres |
52 | 48 | DATABASES = { |
53 | | - 'default': dj_database_url.config( |
54 | | - default='postgis://postgres:@postgres:5432/vbos', |
55 | | - conn_max_age=int(os.getenv('POSTGRES_CONN_MAX_AGE', 600)) |
| 49 | + "default": dj_database_url.config( |
| 50 | + default="postgis://postgres:@postgres:5432/vbos", |
| 51 | + conn_max_age=int(os.getenv("POSTGRES_CONN_MAX_AGE", 600)), |
56 | 52 | ) |
57 | 53 | } |
58 | 54 |
|
59 | 55 | # General |
60 | 56 | APPEND_SLASH = False |
61 | | - TIME_ZONE = 'UTC' |
62 | | - LANGUAGE_CODE = 'en-us' |
| 57 | + TIME_ZONE = "UTC" |
| 58 | + LANGUAGE_CODE = "en-us" |
63 | 59 | # If you set this to False, Django will make some optimizations so as not |
64 | 60 | # to load the internationalization machinery. |
65 | 61 | USE_I18N = False |
66 | 62 | USE_L10N = True |
67 | 63 | USE_TZ = True |
68 | | - LOGIN_REDIRECT_URL = '/' |
| 64 | + LOGIN_REDIRECT_URL = "/" |
69 | 65 |
|
70 | 66 | # Static files (CSS, JavaScript, Images) |
71 | 67 | # https://docs.djangoproject.com/en/2.0/howto/static-files/ |
72 | | - STATIC_ROOT = os.path.normpath(join(os.path.dirname(BASE_DIR), 'static')) |
| 68 | + STATIC_ROOT = os.path.normpath(join(os.path.dirname(BASE_DIR), "static")) |
73 | 69 | STATICFILES_DIRS = [] |
74 | | - STATIC_URL = '/static/' |
| 70 | + STATIC_URL = "/static/" |
75 | 71 | STATICFILES_FINDERS = ( |
76 | | - 'django.contrib.staticfiles.finders.FileSystemFinder', |
77 | | - 'django.contrib.staticfiles.finders.AppDirectoriesFinder', |
| 72 | + "django.contrib.staticfiles.finders.FileSystemFinder", |
| 73 | + "django.contrib.staticfiles.finders.AppDirectoriesFinder", |
78 | 74 | ) |
79 | 75 |
|
80 | 76 | # Media files |
81 | | - MEDIA_ROOT = join(os.path.dirname(BASE_DIR), 'media') |
82 | | - MEDIA_URL = '/media/' |
| 77 | + MEDIA_ROOT = join(os.path.dirname(BASE_DIR), "media") |
| 78 | + MEDIA_URL = "/media/" |
83 | 79 |
|
84 | 80 | TEMPLATES = [ |
85 | 81 | { |
86 | | - 'BACKEND': 'django.template.backends.django.DjangoTemplates', |
87 | | - 'DIRS': STATICFILES_DIRS, |
88 | | - 'APP_DIRS': True, |
89 | | - 'OPTIONS': { |
90 | | - 'context_processors': [ |
91 | | - 'django.template.context_processors.debug', |
92 | | - 'django.template.context_processors.request', |
93 | | - 'django.contrib.auth.context_processors.auth', |
94 | | - 'django.contrib.messages.context_processors.messages', |
| 82 | + "BACKEND": "django.template.backends.django.DjangoTemplates", |
| 83 | + "DIRS": STATICFILES_DIRS, |
| 84 | + "APP_DIRS": True, |
| 85 | + "OPTIONS": { |
| 86 | + "context_processors": [ |
| 87 | + "django.template.context_processors.debug", |
| 88 | + "django.template.context_processors.request", |
| 89 | + "django.contrib.auth.context_processors.auth", |
| 90 | + "django.contrib.messages.context_processors.messages", |
95 | 91 | ], |
96 | 92 | }, |
97 | 93 | }, |
98 | 94 | ] |
99 | 95 |
|
100 | 96 | # Set DEBUG to False as a default for safety |
101 | 97 | # https://docs.djangoproject.com/en/dev/ref/settings/#debug |
102 | | - DEBUG = os.getenv('DJANGO_DEBUG', 'no').lower() in ('true', '1', 'yes') |
| 98 | + DEBUG = os.getenv("DJANGO_DEBUG", "no").lower() in ("true", "1", "yes") |
103 | 99 |
|
104 | 100 | # Password Validation |
105 | 101 | # https://docs.djangoproject.com/en/2.0/topics/auth/passwords/#module-django.contrib.auth.password_validation |
106 | 102 | AUTH_PASSWORD_VALIDATORS = [ |
107 | 103 | { |
108 | | - 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', |
| 104 | + "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator", |
109 | 105 | }, |
110 | 106 | { |
111 | | - 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', |
| 107 | + "NAME": "django.contrib.auth.password_validation.MinimumLengthValidator", |
112 | 108 | }, |
113 | 109 | { |
114 | | - 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', |
| 110 | + "NAME": "django.contrib.auth.password_validation.CommonPasswordValidator", |
115 | 111 | }, |
116 | 112 | { |
117 | | - 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', |
| 113 | + "NAME": "django.contrib.auth.password_validation.NumericPasswordValidator", |
118 | 114 | }, |
119 | 115 | ] |
120 | 116 |
|
121 | 117 | # Logging |
122 | 118 | LOGGING = { |
123 | | - 'version': 1, |
124 | | - 'disable_existing_loggers': False, |
125 | | - 'formatters': { |
126 | | - 'django.server': { |
127 | | - '()': 'django.utils.log.ServerFormatter', |
128 | | - 'format': '[%(server_time)s] %(message)s', |
129 | | - }, |
130 | | - 'verbose': { |
131 | | - 'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s' |
| 119 | + "version": 1, |
| 120 | + "disable_existing_loggers": False, |
| 121 | + "formatters": { |
| 122 | + "django.server": { |
| 123 | + "()": "django.utils.log.ServerFormatter", |
| 124 | + "format": "[%(server_time)s] %(message)s", |
132 | 125 | }, |
133 | | - 'simple': { |
134 | | - 'format': '%(levelname)s %(message)s' |
| 126 | + "verbose": { |
| 127 | + "format": "%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s" |
135 | 128 | }, |
| 129 | + "simple": {"format": "%(levelname)s %(message)s"}, |
136 | 130 | }, |
137 | | - 'filters': { |
138 | | - 'require_debug_true': { |
139 | | - '()': 'django.utils.log.RequireDebugTrue', |
| 131 | + "filters": { |
| 132 | + "require_debug_true": { |
| 133 | + "()": "django.utils.log.RequireDebugTrue", |
140 | 134 | }, |
141 | 135 | }, |
142 | | - 'handlers': { |
143 | | - 'django.server': { |
144 | | - 'level': 'INFO', |
145 | | - 'class': 'logging.StreamHandler', |
146 | | - 'formatter': 'django.server', |
| 136 | + "handlers": { |
| 137 | + "django.server": { |
| 138 | + "level": "INFO", |
| 139 | + "class": "logging.StreamHandler", |
| 140 | + "formatter": "django.server", |
147 | 141 | }, |
148 | | - 'console': { |
149 | | - 'level': 'DEBUG', |
150 | | - 'class': 'logging.StreamHandler', |
151 | | - 'formatter': 'simple' |
| 142 | + "console": { |
| 143 | + "level": "DEBUG", |
| 144 | + "class": "logging.StreamHandler", |
| 145 | + "formatter": "simple", |
152 | 146 | }, |
153 | | - 'mail_admins': { |
154 | | - 'level': 'ERROR', |
155 | | - 'class': 'django.utils.log.AdminEmailHandler' |
156 | | - } |
157 | | - }, |
158 | | - 'loggers': { |
159 | | - 'django': { |
160 | | - 'handlers': ['console'], |
161 | | - 'propagate': True, |
| 147 | + "mail_admins": { |
| 148 | + "level": "ERROR", |
| 149 | + "class": "django.utils.log.AdminEmailHandler", |
162 | 150 | }, |
163 | | - 'django.server': { |
164 | | - 'handlers': ['django.server'], |
165 | | - 'level': 'INFO', |
166 | | - 'propagate': False, |
| 151 | + }, |
| 152 | + "loggers": { |
| 153 | + "django": { |
| 154 | + "handlers": ["console"], |
| 155 | + "propagate": True, |
167 | 156 | }, |
168 | | - 'django.request': { |
169 | | - 'handlers': ['mail_admins', 'console'], |
170 | | - 'level': 'ERROR', |
171 | | - 'propagate': False, |
| 157 | + "django.server": { |
| 158 | + "handlers": ["django.server"], |
| 159 | + "level": "INFO", |
| 160 | + "propagate": False, |
172 | 161 | }, |
173 | | - 'django.db.backends': { |
174 | | - 'handlers': ['console'], |
175 | | - 'level': 'INFO' |
| 162 | + "django.request": { |
| 163 | + "handlers": ["mail_admins", "console"], |
| 164 | + "level": "ERROR", |
| 165 | + "propagate": False, |
176 | 166 | }, |
177 | | - } |
| 167 | + "django.db.backends": {"handlers": ["console"], "level": "INFO"}, |
| 168 | + }, |
178 | 169 | } |
179 | 170 |
|
180 | 171 | # Custom user app |
181 | | - AUTH_USER_MODEL = 'users.User' |
| 172 | + AUTH_USER_MODEL = "users.User" |
182 | 173 |
|
183 | 174 | # Django Rest Framework |
184 | 175 | REST_FRAMEWORK = { |
185 | | - 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination', |
186 | | - 'PAGE_SIZE': int(os.getenv('DJANGO_PAGINATION_LIMIT', 10)), |
187 | | - 'DATETIME_FORMAT': '%Y-%m-%dT%H:%M:%S%z', |
188 | | - 'DEFAULT_RENDERER_CLASSES': ( |
189 | | - 'rest_framework.renderers.JSONRenderer', |
190 | | - 'rest_framework.renderers.BrowsableAPIRenderer', |
| 176 | + "DEFAULT_PAGINATION_CLASS": "rest_framework.pagination.PageNumberPagination", |
| 177 | + "PAGE_SIZE": int(os.getenv("DJANGO_PAGINATION_LIMIT", 10)), |
| 178 | + "DATETIME_FORMAT": "%Y-%m-%dT%H:%M:%S%z", |
| 179 | + "DEFAULT_RENDERER_CLASSES": ( |
| 180 | + "rest_framework.renderers.JSONRenderer", |
| 181 | + "rest_framework.renderers.BrowsableAPIRenderer", |
191 | 182 | ), |
192 | | - 'DEFAULT_PERMISSION_CLASSES': [ |
193 | | - 'rest_framework.permissions.IsAuthenticated', |
| 183 | + "DEFAULT_PERMISSION_CLASSES": [ |
| 184 | + "rest_framework.permissions.IsAuthenticated", |
194 | 185 | ], |
195 | | - 'DEFAULT_AUTHENTICATION_CLASSES': ( |
196 | | - 'rest_framework.authentication.SessionAuthentication', |
197 | | - 'rest_framework.authentication.TokenAuthentication', |
198 | | - ) |
| 186 | + "DEFAULT_AUTHENTICATION_CLASSES": ( |
| 187 | + "rest_framework.authentication.SessionAuthentication", |
| 188 | + "rest_framework.authentication.TokenAuthentication", |
| 189 | + ), |
199 | 190 | } |
0 commit comments