from pathlib import Path import os # Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(__file__).resolve().parent.parent ROOT_DIR = BASE_DIR.parent.parent.parent PROJECT_DIR = BASE_DIR.parent LOG_ROOT = ROOT_DIR / 'var' / 'log' RUN_ROOT = ROOT_DIR / 'var' / 'run' TMP_ROOT = ROOT_DIR / 'var' / 'tmp' MEDIA_ROOT = PROJECT_DIR / 'media' MEDIA_URL = 'media/' STATIC_ROOT = PROJECT_DIR / 'static' STATIC_URL = 'static/' # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = 'django-insecure-z242=*-knp4h=0l1*o-nyid^y0bwt4bvg3tf*wvr(qszj&!8$c' # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True ALLOWED_HOSTS = ['*'] CORS_ORIGIN_ALLOW_ALL = True # Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'corsheaders', 'rest_framework_simplejwt', 'rest_framework.authtoken', 'news', 'rubricks', 'loginApi', 'userProfile', 'sheduler', 'audio', 'api' ] 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', ] ROOT_URLCONF = 'conf.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], '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 = 'conf.wsgi.application' 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/5.0/topics/i18n/ LANGUAGE_CODE = 'en-us' TIME_ZONE = 'UTC' USE_I18N = True USE_TZ = True DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' ROTATE_LOG_SIZE = 15 * 1024 * 1024 ROTATE_LOG_COUNT = 10 LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'verbose': { 'format': '{levelname} {asctime} {module}:{lineno} {message}', 'style': '{', 'datefmt': '%Y-%m-%d %H:%M:%S', }, 'extended': { 'format': '{levelname} {asctime} {message}', 'style': '{', 'datefmt': '%Y-%m-%d %H:%M:%S', }, 'simple': { 'format': '{levelname} {message}', 'style': '{', }, }, 'handlers': { 'update_history': { 'level': 'DEBUG', 'class': 'logging.handlers.RotatingFileHandler', 'filename': LOG_ROOT / 'update_history.log', 'formatter': 'extended', 'maxBytes': ROTATE_LOG_SIZE, 'backupCount': ROTATE_LOG_COUNT, }, 'upload_media': { 'level': 'DEBUG', 'class': 'logging.handlers.RotatingFileHandler', 'filename': LOG_ROOT / 'upload_media.log', 'formatter': 'extended', 'maxBytes': ROTATE_LOG_SIZE, 'backupCount': ROTATE_LOG_COUNT, }, 'banking': { 'level': 'DEBUG', 'class': 'logging.handlers.RotatingFileHandler', 'filename': LOG_ROOT / 'banking.log', 'formatter': 'extended', 'maxBytes': ROTATE_LOG_SIZE, 'backupCount': ROTATE_LOG_COUNT, }, }, 'loggers': { 'update_history': { 'handlers': ['update_history', ], 'level': 'INFO', 'propagate': False, }, 'upload_media': { 'handlers': ['upload_media', ], 'level': 'INFO', 'propagate': False, }, 'banking': { 'handlers': ['banking'], 'level': 'INFO', 'propagate': False, }, }, } REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': [ 'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly' ], 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework_simplejwt.authentication.JWTAuthentication', 'rest_framework_simplejwt.authentication.JWTStatelessUserAuthentication', ), 'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema' } CORS_ALLOWED_ORIGINS = [ 'http://localhost:5173', # Adjust the port if your Vue app is served on a different one 'http://127.0.0.1:5173', ] from datetime import timedelta SIMPLE_JWT = { 'ACCESS_TOKEN_LIFETIME': timedelta(minutes=180), 'REFRESH_TOKEN_LIFETIME': timedelta(days=30), } CORS_ALLOW_CREDENTIALS = True CORS_ALLOWED_ORIGINS = [ 'http://localhost:5173', ]