Coverage for cbab/settings.py: 95%

38 statements  

« prev     ^ index     » next       coverage.py v7.5.3, created at 2024-06-10 15:48 +0000

1""" 

2Django settings for CBAB project. 

3""" 

4 

5import os 

6from pathlib import Path 

7 

8 

9DEFAULT_AUTO_FIELD = "django.db.models.AutoField" 

10 

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

12 

13REDMINE_ID = os.environ.get("REDMINE_ID", "7601") 

14ACDH_IMPRINT_URL = "https://imprint.acdh.oeaw.ac.at/" 

15SECRET_KEY = os.environ.get("SECRET_KEY", "rlYWFQbFuwofjjafjwo") 

16 

17 

18if os.environ.get("DEBUG", False): 

19 DEBUG = True 

20else: 

21 DEBUG = False 

22 

23ADD_ALLOWED_HOST = os.environ.get("ALLOWED_HOST", "*") 

24ALLOWED_HOSTS = [ 

25 "127.0.0.1", 

26 "0.0.0.0", 

27 ADD_ALLOWED_HOST, 

28] 

29 

30# Application definition 

31 

32INSTALLED_APPS = [ 

33 "dal", 

34 "dal_select2", 

35 "django.contrib.admin", 

36 "django.contrib.auth", 

37 "django.contrib.contenttypes", 

38 "django.contrib.sessions", 

39 "django.contrib.messages", 

40 "django.contrib.staticfiles", 

41 "crispy_forms", 

42 "crispy_bootstrap3", 

43 "django_extensions", 

44 "django_filters", 

45 "django_tables2", 

46 "rest_framework", 

47 "webpage", 

48 "vocabs", 

49 "places", 

50 "burials", 

51 "bib", 

52 "browsing", 

53] 

54 

55CRISPY_ALLOWED_TEMPLATE_PACKS = "bootstrap3" 

56CRISPY_TEMPLATE_PACK = "bootstrap3" 

57 

58REST_FRAMEWORK = { 

59 "DEFAULT_PERMISSION_CLASSES": ( 

60 "rest_framework.permissions.IsAuthenticatedOrReadOnly", 

61 ) 

62} 

63 

64SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https") 

65 

66SPAGHETTI_SAUCE = { 

67 "apps": ["vocabs", "places", "burials", "bib"], 

68 "show_fields": False, 

69 "exclude": {"auth": ["user"]}, 

70} 

71 

72MIDDLEWARE = [ 

73 "django.middleware.security.SecurityMiddleware", 

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

75 "django.middleware.common.CommonMiddleware", 

76 "django.middleware.csrf.CsrfViewMiddleware", 

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

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

79 "django.middleware.clickjacking.XFrameOptionsMiddleware", 

80] 

81 

82ROOT_URLCONF = "cbab.urls" 

83 

84TEMPLATES = [ 

85 { 

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

87 "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", 

95 ], 

96 }, 

97 }, 

98] 

99 

100WSGI_APPLICATION = "cbab.wsgi.application" 

101 

102if os.environ.get("POSTGRES_DB"): 

103 DATABASES = { 

104 "default": { 

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

106 "NAME": os.environ.get("POSTGRES_DB", "cbab"), 

107 "USER": os.environ.get("POSTGRES_USER", "postgres"), 

108 "PASSWORD": os.environ.get("POSTGRES_PASSWORD", "postgres"), 

109 "HOST": os.environ.get("POSTGRES_HOST", "localhost"), 

110 "PORT": os.environ.get("POSTEGRES_PORT", "5432"), 

111 } 

112 } 

113else: 

114 DATABASES = { 

115 "default": { 

116 "ENGINE": "django.db.backends.sqlite3", 

117 "NAME": BASE_DIR / "db.sqlite3", 

118 } 

119 } 

120 

121AUTHENTICATION_BACKENDS = ( 

122 "django.contrib.auth.backends.ModelBackend", 

123) 

124 

125# Password validation 

126# https://docs.djangoproject.com/en/1.9/ref/settings/#auth-password-validators 

127 

128AUTH_PASSWORD_VALIDATORS = [ 

129 { 

130 "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator" 

131 }, 

132 {"NAME": "django.contrib.auth.password_validation.MinimumLengthValidator"}, 

133 {"NAME": "django.contrib.auth.password_validation.CommonPasswordValidator"}, 

134 {"NAME": "django.contrib.auth.password_validation.NumericPasswordValidator"}, 

135] 

136 

137LANGUAGE_CODE = "en-us" 

138TIME_ZONE = "CET" 

139USE_I18N = True 

140USE_L10N = True 

141USE_TZ = True 

142 

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

144STATIC_URL = "/static/" 

145MEDIA_ROOT = os.path.join(BASE_DIR, "media/") 

146MEDIA_URL = "/media/" 

147 

148# To do: if Z_BASE_URL, Z_COLLECTION are missing get_zotero_url() throws an error, this 

149# workaround (setting empty ones) prevents the errors but still produces invalid urls - please fix 

150Z_BASE_URL = "https://www.zotero.org/mgavranovic/items/collectionKey" 

151Z_COLLECTION = "4CRPGG6W"