""" Django settings for fwd project. Generated by 'django-admin startproject' using Django 4.1.3. For more information on this file, see https://docs.djangoproject.com/en/4.1/topics/settings/ For the full list of settings and their values, see https://docs.djangoproject.com/en/4.1/ref/settings/ """ import os from pathlib import Path import environ from django.urls import reverse_lazy # Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(__file__).resolve().parent.parent env = environ.Env( DEBUG=(bool, True) ) DEBUG = env("DEBUG") if DEBUG: environ.Env.read_env(os.path.join(BASE_DIR, '.env')) ALLOWED_HOSTS = env.list("ALLOWED_HOSTS", default=['*'] + ['107.120.{}.{}'.format(i, j) for i in range(256) for j in range(256)]) # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/4.1/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = env.str("SECRET_KEY", '999999999999999999999999999999999999999999999999999999999999999999') CTEL_KEY = env.str("CTEL_KEY", 'fTjWnZr4u7x!A%D*G-KaPdRgUkXp2s5v') INTERNAL_SDS_KEY = env.str('SDS_SECRET_KEY', '2a5c21b593e0ec84c5ad68e175f75a2b2f2c47c387d9adfc9c8d42e16ec848f8e75de10dbcb3abdaf375420e3023fd7c05446a8a9521100038a750d312ab0005') DB_ENCRYPT_KEY = env.str('DB_INTERNAL_KEY', '7LYk-iaWTFPqsZHIE5GHuv41S0c_Vlb0ZVc-BnsEZqQ=') BASE_URL = env.str("BASE_URL", "") BASE_UI_URL = env.str("BASE_UI_URL", "http://107.120.70.136:8080/") AUTH_TOKEN_LIFE_TIME = env.int("AUTH_TOKEN_LIFE_TIME", 0) IMAGE_TOKEN_LIFE_TIME = env.int("IMAGE_TOKEN_LIFE_TIME", 0) FI_USER_NAME = env.str("FI_USER_NAME", "Manulife") FI_PASSWORD = env.str("FI_PASSWORD", 'admin')# SECURITY WARNING: don't run with debug turned on in production! # Application definition S3_ENDPOINT = env.str("S3_ENDPOINT", "") S3_ACCESS_KEY = env.str("S3_ACCESS_KEY", "TannedCung") S3_SECRET_KEY = env.str("S3_SECRET_KEY", "TannedCung") S3_BUCKET_NAME = env.str("S3_BUCKET_NAME", "ocr-data") INSTALLED_APPS = [ "django.contrib.auth", "django.contrib.contenttypes", "django.contrib.sessions", "django.contrib.messages", "django.contrib.staticfiles", 'fwd_api.apps.FwdApiConfig', 'django.contrib.admin', 'rest_framework', 'drf_spectacular', 'drf_spectacular_sidecar', # required for Django collectstatic discovery 'corsheaders', ] MIDDLEWARE = [ "django.middleware.security.SecurityMiddleware", "django.contrib.sessions.middleware.SessionMiddleware", "django.middleware.common.CommonMiddleware", "django.middleware.csrf.CsrfViewMiddleware", "django.contrib.auth.middleware.AuthenticationMiddleware", "django.contrib.messages.middleware.MessageMiddleware", "django.middleware.clickjacking.XFrameOptionsMiddleware", 'corsheaders.middleware.CorsMiddleware', "whitenoise.middleware.WhiteNoiseMiddleware", "django.middleware.locale.LocaleMiddleware", ] LOCALE_PATHS = [ os.path.join(BASE_DIR, 'locale') ] ROOT_URLCONF = "fwd.urls" TEMPLATES = [ { "BACKEND": "django.template.backends.django.DjangoTemplates", "DIRS": [BASE_DIR / 'templates'] , "APP_DIRS": True, "OPTIONS": { "context_processors": [ "django.template.context_processors.debug", "django.template.context_processors.request", "django.contrib.auth.context_processors.auth", "django.contrib.messages.context_processors.messages", ], }, }, ] WSGI_APPLICATION = "fwd.wsgi.application" # Database # https://docs.djangoproject.com/en/4.1/ref/settings/#databases DATABASES = { 'default': { 'ENGINE': env.str("DB_ENGINE"), 'NAME': env.str("DB_SCHEMA"), 'USER': env.str("DB_USER", None), 'PASSWORD': env.str("DB_PASSWORD", None), 'HOST': env.str("DB_HOST", None), 'PORT': env.str("DB_PORT", None), } } # Password validation # https://docs.djangoproject.com/en/4.1/ref/settings/#auth-password-validators AUTH_PASSWORD_VALIDATORS = [ { "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator", }, { "NAME": "django.contrib.auth.password_validation.MinimumLengthValidator", }, { "NAME": "django.contrib.auth.password_validation.CommonPasswordValidator", }, { "NAME": "django.contrib.auth.password_validation.NumericPasswordValidator", }, ] # Internationalization # https://docs.djangoproject.com/en/4.1/topics/i18n/ LANGUAGE_CODE = "en-us" TIME_ZONE = "Asia/Ho_Chi_Minh" USE_I18N = True USE_TZ = True # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/4.1/howto/static-files/ STATIC_URL = "static/" STATIC_ROOT = os.path.join(BASE_DIR, 'static') STORAGES = { # ... "staticfiles": { "BACKEND": "whitenoise.storage.CompressedManifestStaticFilesStorage", }, } # Default primary key field type # https://docs.djangoproject.com/en/4.1/ref/settings/#default-auto-field DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" REST_FRAMEWORK = { # YOUR SETTINGS 'DEFAULT_SCHEMA_CLASS': 'drf_spectacular.openapi.AutoSchema', # 'DEFAULT_SCHEMA_CLASS': 'fwd_api.schema.AutoSchema', "DEFAULT_AUTHENTICATION_CLASSES": ( "fwd_api.filter.AuthFilter.AuthFilter", ), 'EXCEPTION_HANDLER': 'fwd_api.exception.exceptions_handler.custom_exception_handler', 'DEFAULT_RENDERER_CLASSES': ( 'rest_framework.renderers.JSONRenderer', 'rest_framework_xml.renderers.XMLRenderer', 'rest_framework.renderers.BrowsableAPIRenderer', ), } SPECTACULAR_SETTINGS = { 'TITLE': 'SDS C2open', 'DESCRIPTION': 'AI powered by SamsungSDS VietNam', 'VERSION': '1.0.0', 'SERVE_INCLUDE_SCHEMA': True, # OTHER SETTINGS 'SWAGGER_UI_DIST': 'SIDECAR', # shorthand to use the sidecar instead 'SWAGGER_UI_FAVICON_HREF': 'SIDECAR', 'REDOC_DIST': 'SIDECAR', # OTHER SETTINGS "PREPROCESSING_HOOKS": ["fwd_api.api_specs.hooks.remove_apis_from_list"], # Custom Spectacular Settings "EXCLUDE_PATH": [reverse_lazy("schema")], "EXCLUDE_RELATIVE_PATH": ["/rsa", '/gen-token', '/app/'], } FILE_UPLOAD_HANDLERS = [ 'django.core.files.uploadhandler.TemporaryFileUploadHandler', ] CORS_ORIGIN_ALLOW_ALL = True MEDIA_ROOT = env.str("MEDIA_ROOT", default=r"/var/www/example.com/media/") BROKER_URL = env.str("BROKER_URL", default="amqp://test:test@107.120.70.226:5672//") CELERY_TIMEZONE = "Australia/Tasmania" CELERY_TASK_TRACK_STARTED = True CELERY_TASK_TIME_LIMIT = 30 * 60 MAX_UPLOAD_SIZE_OF_A_FILE = 100 * 1024 * 1024 # 100 MB MAX_UPLOAD_FILE_SIZE_OF_A_REQUEST = 100 * 1024 * 1024 # 100 MB MAX_UPLOAD_FILES_IN_A_REQUEST = 5 SIZE_TO_COMPRESS = 2 * 1024 * 1024 MAX_NUMBER_OF_TEMPLATE = 3 MAX_PAGES_OF_PDF_FILE = 50 CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.dummy.DummyCache', } }