Coverage for taskflow_api/settings.py: 100%

26 statements  

« prev     ^ index     » next       coverage.py v7.8.0, created at 2025-05-18 16:35 +0000

1from pathlib import Path 

2from decouple import config, Csv 

3import os 

4 

5# Build paths inside the project like this: BASE_DIR / 'subdir'. 

6BASE_DIR = Path(__file__).resolve().parent.parent 

7 

8 

9# Quick-start development settings - unsuitable for production 

10# See https://docs.djangoproject.com/en/5.2/howto/deployment/checklist/ 

11 

12 

13# Application definition 

14 

15INSTALLED_APPS = [ 

16 "django.contrib.admin", 

17 "django.contrib.auth", 

18 "django.contrib.contenttypes", 

19 "django.contrib.sessions", 

20 "django.contrib.messages", 

21 "django.contrib.staticfiles", 

22 "rest_framework", 

23 "drf_yasg", 

24 "corsheaders", 

25 "tasks", 

26] 

27 

28MIDDLEWARE = [ 

29 "django.middleware.security.SecurityMiddleware", 

30 "django.contrib.sessions.middleware.SessionMiddleware", 

31 "django.middleware.common.CommonMiddleware", 

32 "django.middleware.csrf.CsrfViewMiddleware", 

33 "django.contrib.auth.middleware.AuthenticationMiddleware", 

34 "django.contrib.messages.middleware.MessageMiddleware", 

35 "django.middleware.clickjacking.XFrameOptionsMiddleware", 

36 "corsheaders.middleware.CorsMiddleware", 

37] 

38 

39ROOT_URLCONF = "taskflow_api.urls" 

40 

41TEMPLATES = [ 

42 { 

43 "BACKEND": "django.template.backends.django.DjangoTemplates", 

44 "DIRS": [], 

45 "APP_DIRS": True, 

46 "OPTIONS": { 

47 "context_processors": [ 

48 "django.template.context_processors.request", 

49 "django.contrib.auth.context_processors.auth", 

50 "django.contrib.messages.context_processors.messages", 

51 ], 

52 }, 

53 }, 

54] 

55 

56WSGI_APPLICATION = "taskflow_api.wsgi.application" 

57 

58 

59# Password validation 

60# https://docs.djangoproject.com/en/5.2/ref/settings/#auth-password-validators 

61 

62AUTH_PASSWORD_VALIDATORS = [ 

63 { 

64 "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator", 

65 }, 

66 { 

67 "NAME": "django.contrib.auth.password_validation.MinimumLengthValidator", 

68 }, 

69 { 

70 "NAME": "django.contrib.auth.password_validation.CommonPasswordValidator", 

71 }, 

72 { 

73 "NAME": "django.contrib.auth.password_validation.NumericPasswordValidator", 

74 }, 

75] 

76 

77 

78# Internationalization 

79# https://docs.djangoproject.com/en/5.2/topics/i18n/ 

80 

81LANGUAGE_CODE = "en-us" 

82 

83TIME_ZONE = "UTC" 

84 

85USE_I18N = True 

86 

87USE_TZ = True 

88 

89 

90# Static files (CSS, JavaScript, Images) 

91# https://docs.djangoproject.com/en/5.2/howto/static-files/ 

92 

93STATIC_URL = "static/" 

94STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles") 

95 

96# Default primary key field type 

97# https://docs.djangoproject.com/en/5.2/ref/settings/#default-auto-field 

98 

99DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" 

100 

101 

102# MANUALLY ADDED 

103 

104CORS_ALLOW_ALL_ORIGINS = True 

105 

106 

107DEBUG = config("DEBUG", default=False, cast=bool) 

108SECRET_KEY = config("SECRET_KEY", default="unsafe-dev-key") 

109 

110ALLOWED_HOSTS = config("DJANGO_ALLOWED_HOSTS", cast=Csv(), default="localhost") 

111 

112DATABASES = { 

113 "default": { 

114 "ENGINE": "django.db.backends.postgresql", 

115 "NAME": config("POSTGRES_DB"), 

116 "USER": config("POSTGRES_USER"), 

117 "PASSWORD": config("POSTGRES_PASSWORD"), 

118 "HOST": config("POSTGRES_HOST", default="localhost"), 

119 "PORT": config("POSTGRES_PORT", default="5432"), 

120 } 

121} 

122 

123CELERY_BROKER_URL = config( 

124 "CELERY_BROKER_URL", default="amqp://guest:guest@localhost:5672//" 

125) 

126 

127CELERY_ACCEPT_CONTENT = ["json"] 

128CELERY_TASK_SERIALIZER = "json" 

129 

130 

131SWAGGER_USE_COMPAT_RENDERERS = False