· 4 years ago · Apr 30, 2021, 02:22 AM
1import os
2from pathlib import Path
3import datetime
4
5SECRET_KEY = 'django-insecure-2bchr7%ggc17*td72&z3ov)7kttj#l*hf_0=)j^siwd$$4p8x2'
6
7DEBUG = True
8
9INSTALLED_APPS = [
10 'django.contrib.admin',
11 'django.contrib.auth',
12 'django.contrib.contenttypes',
13 'django.contrib.sessions',
14 'django.contrib.messages',
15 'django.contrib.staticfiles',
16
17 'store',
18 'rest_framework',
19 'rest_framework.authtoken',
20 'djoser',
21 'social_django',
22 'rest_framework_simplejwt',
23 'rest_framework_simplejwt.token_blacklist',
24
25 'django_filters',
26 'corsheaders',
27]
28
29MIDDLEWARE = [
30 'corsheaders.middleware.CorsMiddleware',
31 'social_django.middleware.SocialAuthExceptionMiddleware',
32 'django.middleware.common.CommonMiddleware',
33 'django.middleware.security.SecurityMiddleware',
34 'django.contrib.sessions.middleware.SessionMiddleware',
35 'django.middleware.csrf.CsrfViewMiddleware',
36 'django.contrib.auth.middleware.AuthenticationMiddleware',
37 'django.contrib.messages.middleware.MessageMiddleware',
38 'django.middleware.clickjacking.XFrameOptionsMiddleware',
39]
40
41ROOT_URLCONF = 'bookstore.urls'
42
43TEMPLATES = [
44 {
45 'BACKEND': 'django.template.backends.django.DjangoTemplates',
46 'DIRS': [],
47 'APP_DIRS': True,
48 'OPTIONS': {
49 'context_processors': [
50 'django.template.context_processors.debug',
51 'django.template.context_processors.request',
52 'django.contrib.auth.context_processors.auth',
53 'django.contrib.messages.context_processors.messages',
54 'social_django.context_processors.backends',
55 'social_django.context_processors.login_redirect',
56 ],
57 },
58 },
59]
60
61WSGI_APPLICATION = 'bookstore.wsgi.application'
62
63REST_FRAMEWORK = {
64 'DEFAULT_AUTHENTICATION_CLASSES': (
65 'rest_framework_simplejwt.authentication.JWTAuthentication',
66 'rest_framework.authentication.TokenAuthentication',
67 ),
68 'DEFAULT_PERMISSION_CLASSES': [
69 'rest_framework.permissions.AllowAny'
70 #'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'
71 ],
72 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
73 'PAGE_SIZE': 10,
74}
75
76
77DATABASES = {
78 'default': {
79 'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
80 'NAME': 'sqlite3.db', # Or path to database file if using sqlite3.
81 'USER': '', # Not used with sqlite3.
82 'PASSWORD': '', # Not used with sqlite3.
83 'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
84 'PORT': '', # Set to empty string for default. Not used with sqlite3.
85 }
86}
87
88# SMTP
89
90EMAIL_USE_TLS = True
91EMAIL_HOST = 'smtp.gmail.com'
92EMAIL_PORT = 587
93
94white_list = ['http://127.0.0.1:8000']
95
96DJOSER = {
97 'PASSWORD_RESET_CONFIRM_URL': '#/password/reset/confirm/{uid}/{token}',
98 'USERNAME_RESET_CONFIRM_URL': '#/username/reset/confirm/{uid}/{token}',
99 "ACTIVATION_URL": "activate/{uid}/{token}",
100 'SEND_ACTIVATION_EMAIL': True,
101 'SERIALIZERS': {},
102 "USER_CREATE_PASSWORD_RETYPE": True,
103 'SOCIAL_AUTH_TOKEN_STRATEGY': 'djoser.social.token.jwt.TokenStrategy',
104 'SOCIAL_AUTH_ALLOWED_REDIRECT_URIS': ['http://127.0.0.1:3000'],
105 #'SERIALIZERS': {
106 #'current_user': 'accounts.serializers.UserCreateSerializer'
107 #}
108}
109
110JWT_AUTH = {
111 'JWT_EXPIRATION_DELTA': datetime.timedelta(days=2),
112 'JWT_ALLOW_REFRESH': True,
113 'JWT_REFRESH_EXPIRATION_DELTA': datetime.timedelta(days=7),
114}
115
116SIMPLE_JWT = {
117 'AUTH_HEADER_TYPES': ('JWT',),
118 'ACCESS_TOKEN_LIFETIME': datetime.timedelta(days=1),
119 'REFRESH_TOKEN_LIFETIME': datetime.timedelta(days=14),
120 'AUTH_TOKEN_CLASSES': (
121 'rest_framework_simplejwt.tokens.AccessToken',
122 )
123}
124
125
126AUTH_PASSWORD_VALIDATORS = [
127 {
128 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
129 },
130 {
131 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
132 },
133 {
134 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
135 },
136 {
137 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
138 },
139]
140
141LANGUAGE_CODE = 'en-us'
142
143TIME_ZONE = 'UTC'
144
145USE_I18N = True
146
147USE_L10N = True
148
149USE_TZ = True
150
151DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
152
153CORS_ALLOW_CREDENTIALS = True
154
155CORS_ORIGIN_WHITELIST = [
156 'http://localhost:3000',
157 'http://127.0.0.1:3000'
158]
159
160AUTHENTICATION_BACKENDS = (
161 'social_core.backends.google.GoogleOAuth2',
162 'social_core.backends.vk.VKOAuth2',
163 'django.contrib.auth.backends.ModelBackend',
164)
165
166SOCIAL_AUTH_PROCESS_EXCEPTIONS = 'social_auth.utils.process_exceptions'
167SOCIAL_AUTH_RAISE_EXCEPTIONS = True
168
169LOGIN_REDIRECT_URL = 'http://127.0.0.1:3000/'
170
171STATIC_URL = '/static/'
172STATIC_DIR = os.path.join(BASE_DIR, 'static')
173STATICFILES_DIRS = [STATIC_DIR]
174
175MEDIA_URL = '/media/'
176MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
177
178ALLOWED_HOSTS = []
179EMAIL_HOST_USER = '...'
180EMAIL_HOST_PASSWORD = '...'
181
182SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = '....apps.googleusercontent.com'
183SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = '...'
184
185try:
186 from .local_settings import *
187except ImportError:
188 from .prod_settings import *