158 |
158 |
# template settings
|
159 |
159 |
if 'TEMPLATE_DEBUG' in globals():
|
160 |
160 |
# compatibility with django<1.10
|
161 |
|
TEMPLATE_LOADERS = (
|
162 |
|
'hobo.multitenant.template_loader.FilesystemLoader',
|
163 |
|
) + global_settings.TEMPLATE_LOADERS
|
|
161 |
if PROJECT_NAME != 'wcs':
|
|
162 |
TEMPLATE_LOADERS = (
|
|
163 |
'hobo.multitenant.template_loader.FilesystemLoader',
|
|
164 |
) + global_settings.TEMPLATE_LOADERS
|
164 |
165 |
|
165 |
166 |
if not 'TEMPLATE_CONTEXT_PROCESSORS' in globals():
|
166 |
167 |
TEMPLATE_CONTEXT_PROCESSORS = global_settings.TEMPLATE_CONTEXT_PROCESSORS
|
... | ... | |
181 |
182 |
TEMPLATES[0]['OPTIONS']['loaders'] = [
|
182 |
183 |
'django.template.loaders.filesystem.Loader',
|
183 |
184 |
'django.template.loaders.app_directories.Loader']
|
184 |
|
TEMPLATES[0]['OPTIONS']['loaders'].insert(0,
|
185 |
|
'hobo.multitenant.template_loader.FilesystemLoader')
|
|
185 |
if PROJECT_NAME != 'wcs':
|
|
186 |
TEMPLATES[0]['OPTIONS']['loaders'].insert(0,
|
|
187 |
'hobo.multitenant.template_loader.FilesystemLoader')
|
186 |
188 |
|
187 |
189 |
if not 'django.core.context_processors.request' in TEMPLATES[0]['OPTIONS']['context_processors']:
|
188 |
190 |
TEMPLATES[0]['OPTIONS']['context_processors'].insert(0,
|
... | ... | |
202 |
204 |
SESSION_EXPIRE_AT_BROWSER_CLOSE = True
|
203 |
205 |
SESSION_COOKIE_AGE = 36000 # 10h
|
204 |
206 |
|
205 |
|
#
|
206 |
|
# multitenant adaptations
|
207 |
|
#
|
208 |
|
|
209 |
|
TENANT_BASE = os.path.join(VAR_DIR, 'tenants')
|
210 |
|
TENANT_MODEL = 'multitenant.Tenant'
|
211 |
|
|
212 |
|
DATABASES = {
|
213 |
|
'default': {
|
214 |
|
'ENGINE': 'tenant_schemas.postgresql_backend',
|
215 |
|
'NAME': PROJECT_NAME.replace('-', '_'),
|
216 |
|
}
|
217 |
|
}
|
218 |
|
|
219 |
|
DATABASE_ROUTERS = (
|
220 |
|
'tenant_schemas.routers.TenantSyncRouter',
|
221 |
|
)
|
222 |
|
|
223 |
207 |
if not 'MIDDLEWARE_CLASSES' in globals():
|
224 |
208 |
MIDDLEWARE_CLASSES = global_settings.MIDDLEWARE_CLASSES
|
225 |
209 |
|
226 |
|
MIDDLEWARE_CLASSES = (
|
227 |
|
'hobo.middleware.utils.StoreRequestMiddleware',
|
228 |
|
'hobo.middleware.xforwardedfor.XForwardedForMiddleware',
|
229 |
|
'hobo.multitenant.middleware.TenantMiddleware',
|
|
210 |
MIDDLEWARE_CLASSES = MIDDLEWARE_CLASSES + (
|
230 |
211 |
'hobo.middleware.VersionMiddleware', # /__version__
|
231 |
212 |
'hobo.middleware.cors.CORSMiddleware',
|
232 |
213 |
) + MIDDLEWARE_CLASSES
|
233 |
214 |
|
234 |
|
if 'authentic2' not in INSTALLED_APPS:
|
|
215 |
if 'mellon' in INSTALLED_APPS:
|
235 |
216 |
MIDDLEWARE_CLASSES = MIDDLEWARE_CLASSES + (
|
236 |
217 |
'mellon.middleware.PassiveAuthenticationMiddleware',
|
237 |
218 |
)
|
238 |
|
else:
|
|
219 |
|
|
220 |
if 'authentic2' in INSTALLED_APPS:
|
239 |
221 |
MIDDLEWARE_CLASSES = MIDDLEWARE_CLASSES + (
|
240 |
222 |
'hobo.agent.authentic2.middleware.ProvisionningMiddleware',
|
241 |
223 |
)
|
242 |
224 |
|
243 |
|
TENANT_SETTINGS_LOADERS = (
|
244 |
|
'hobo.multitenant.settings_loaders.TemplateVars',
|
245 |
|
'hobo.multitenant.settings_loaders.KnownServices',
|
246 |
|
'hobo.multitenant.settings_loaders.CORSSettings',
|
247 |
|
'hobo.multitenant.settings_loaders.SharedThemeSettings',
|
248 |
|
'hobo.multitenant.settings_loaders.Mellon',
|
249 |
|
'hobo.multitenant.settings_loaders.SiteBaseUrl',
|
250 |
|
'hobo.multitenant.settings_loaders.SettingsJSON',
|
251 |
|
)
|
|
225 |
if PROJECT_NAME != 'wcs':
|
|
226 |
# multitenant adaptations
|
252 |
227 |
|
253 |
|
# templates in <tenant>/templates
|
254 |
|
TENANT_TEMPLATE_DIRS = (TENANT_BASE,)
|
|
228 |
TENANT_BASE = os.path.join(VAR_DIR, 'tenants')
|
|
229 |
TENANT_MODEL = 'multitenant.Tenant'
|
255 |
230 |
|
256 |
|
# /media in <tenant>/media
|
257 |
|
DEFAULT_FILE_STORAGE = 'hobo.multitenant.storage.TenantFileSystemStorage'
|
|
231 |
MIDDLEWARE_CLASSES = MIDDLEWARE_CLASSES + (
|
|
232 |
'hobo.multitenant.middleware.TenantMiddleware',
|
|
233 |
) + MIDDLEWARE_CLASSES
|
258 |
234 |
|
259 |
|
# SAML2: search IdP in <tenant>
|
260 |
|
if 'authentic2' not in INSTALLED_APPS:
|
261 |
|
MELLON_ADAPTER = ('hobo.multitenant.mellon.MellonAdapter',)
|
262 |
|
MELLON_DEFAULT_ASSERTION_CONSUMER_BINDING = 'artifact'
|
263 |
|
MELLON_OPENED_SESSION_COOKIE_NAME = 'A2_OPENED_SESSION'
|
|
235 |
DATABASES = {
|
|
236 |
'default': {
|
|
237 |
'ENGINE': 'tenant_schemas.postgresql_backend',
|
|
238 |
'NAME': PROJECT_NAME.replace('-', '_'),
|
|
239 |
}
|
|
240 |
}
|
264 |
241 |
|
265 |
|
# Authentic2 role attributes for Publik
|
266 |
|
A2_MANAGER_ROLE_FORM_CLASS = 'hobo.agent.authentic2.role_forms.RoleForm'
|
|
242 |
DATABASE_ROUTERS = (
|
|
243 |
'tenant_schemas.routers.TenantSyncRouter',
|
|
244 |
)
|
|
245 |
|
|
246 |
TENANT_SETTINGS_LOADERS = (
|
|
247 |
'hobo.multitenant.settings_loaders.TemplateVars',
|
|
248 |
'hobo.multitenant.settings_loaders.KnownServices',
|
|
249 |
'hobo.multitenant.settings_loaders.CORSSettings',
|
|
250 |
'hobo.multitenant.settings_loaders.SharedThemeSettings',
|
|
251 |
'hobo.multitenant.settings_loaders.Mellon',
|
|
252 |
'hobo.multitenant.settings_loaders.SiteBaseUrl',
|
|
253 |
'hobo.multitenant.settings_loaders.SettingsJSON',
|
|
254 |
)
|
267 |
255 |
|
268 |
|
# cache by tenant
|
269 |
|
CACHES = {
|
270 |
|
'default': {
|
271 |
|
'BACKEND': 'hobo.multitenant.cache.TenantCache',
|
272 |
|
# add a real Django cache backend, with its parameters if needed
|
273 |
|
'REAL_BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
|
274 |
|
'LOCATION': '127.0.0.1:11211',
|
|
256 |
# templates in <tenant>/templates
|
|
257 |
TENANT_TEMPLATE_DIRS = (TENANT_BASE,)
|
|
258 |
|
|
259 |
# /media in <tenant>/media
|
|
260 |
DEFAULT_FILE_STORAGE = 'hobo.multitenant.storage.TenantFileSystemStorage'
|
|
261 |
|
|
262 |
# SAML2: search IdP in <tenant>
|
|
263 |
if 'authentic2' not in INSTALLED_APPS:
|
|
264 |
MELLON_ADAPTER = ('hobo.multitenant.mellon.MellonAdapter',)
|
|
265 |
MELLON_DEFAULT_ASSERTION_CONSUMER_BINDING = 'artifact'
|
|
266 |
MELLON_OPENED_SESSION_COOKIE_NAME = 'A2_OPENED_SESSION'
|
|
267 |
|
|
268 |
# cache by tenant
|
|
269 |
CACHES = {
|
|
270 |
'default': {
|
|
271 |
'BACKEND': 'hobo.multitenant.cache.TenantCache',
|
|
272 |
# add a real Django cache backend, with its parameters if needed
|
|
273 |
'REAL_BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
|
|
274 |
'LOCATION': '127.0.0.1:11211',
|
|
275 |
}
|
275 |
276 |
}
|
276 |
|
}
|
277 |
277 |
|
278 |
|
# haystack by tenant
|
279 |
|
HAYSTACK_CONNECTIONS = {
|
280 |
|
'default': {
|
281 |
|
'ENGINE': 'hobo.multitenant.haystack.WhooshEngine',
|
|
278 |
# haystack by tenant
|
|
279 |
HAYSTACK_CONNECTIONS = {
|
|
280 |
'default': {
|
|
281 |
'ENGINE': 'hobo.multitenant.haystack.WhooshEngine',
|
|
282 |
}
|
282 |
283 |
}
|
283 |
|
}
|
284 |
284 |
|
|
285 |
# multitenant SHARED_APPS/TENANT_APPS/INSTALLED_APPS organization
|
|
286 |
SHARED_APPS = ()
|
285 |
287 |
|
286 |
|
# multitenant SHARED_APPS/TENANT_APPS/INSTALLED_APPS organization
|
287 |
|
SHARED_APPS = ()
|
|
288 |
INSTALLED_APPS = ('hobo.agent.common',) + INSTALLED_APPS
|
288 |
289 |
|
289 |
|
INSTALLED_APPS = ('hobo.agent.common',) + INSTALLED_APPS
|
|
290 |
TENANT_APPS = INSTALLED_APPS
|
290 |
291 |
|
291 |
|
TENANT_APPS = INSTALLED_APPS
|
|
292 |
INSTALLED_APPS = ('hobo.multitenant',) + INSTALLED_APPS
|
292 |
293 |
|
293 |
|
INSTALLED_APPS = ('hobo.multitenant',) + INSTALLED_APPS
|
|
294 |
|
|
295 |
MIDDLEWARE_CLASSES = (
|
|
296 |
'hobo.middleware.utils.StoreRequestMiddleware',
|
|
297 |
'hobo.middleware.xforwardedfor.XForwardedForMiddleware',
|
|
298 |
) + MIDDLEWARE_CLASSES
|
294 |
299 |
|
295 |
300 |
HOBO_MANAGER_HOMEPAGE_URL_VAR = 'portal_agent_url'
|
296 |
301 |
HOBO_MANAGER_HOMEPAGE_TITLE_VAR = 'portal_agent_title'
|
297 |
302 |
|
|
303 |
# Authentic2 role attributes for Publik
|
|
304 |
A2_MANAGER_ROLE_FORM_CLASS = 'hobo.agent.authentic2.role_forms.RoleForm'
|
|
305 |
|
298 |
306 |
# Locale and timezone
|
299 |
307 |
LANGUAGE_CODE = 'fr-fr'
|
300 |
308 |
TIME_ZONE = 'Europe/Paris'
|
301 |
|
-
|