Untitled
Guest 261 5th Jul, 2024
import os
import environ
from pathlib import Path
CRISPY_TEMPLATE_PACK = 'bootstrap4'
# Pull environment variables
env = environ.Env()
environ.Env.read_env()
# NEXTCLOUD CONFIG
NEXTCLOUD_USER = env('NEXTCLOUD_USER')
NEXTCLOUD_PASS = env('NEXTCLOUD_PASS')
NEXTCLOUD_DB = env('NEXTCLOUD_DB')
NEXTCLOUDDB_USER = env('NEXTCLOUDDB_USER')
NEXTCLOUDDB_PASS = env('NEXTCLOUDDB_PASS')
NEXTCLOUDDB_HOST = env('NEXTCLOUDDB_HOST')
NEXTCLOUD_HOST = env('NEXTCLOUD_HOST')
NEXTCLOUD_URL = env('NEXTCLOUD_URL')
NEXTCLOUDDB_PORT = env('NEXTCLOUDDB_PORT')
# API TOKEN
SECRET_TOKEN = env('SECRET_TOKEN')
# KEYCLOAK CONFIG
# keycloak Conf
KEYCLOAK_CONFIG = {
'server_url': env('KEYCLOAK_URL'),
'realm_name': env('KEYCLOAK_REALM'),
'client_id': env('KEYCLOAK_CLIENT'),
'client_secret': env('KEYCLOAK_SECRET')
}
# do keycloaka dodatkowe opcje
# jeżeli 'local' tylko użytkownik stworzony lokalnie będzie mógł zalogowac się do panelu admina django
# jeżeli 'keycloak' użytkownik z keycloaka który ma odpowiednie uprawnienia będzie miał dostęp do panelu admina
DJANGO_ADMIN_CONTROL = env('DJANGO_ADMIN_CONTROL') # 'local' lub 'keycloak'
# ROLE lub GROUP jeżeli puste to admin nie bedzie działać
# Najpierw jest sprawdzana ROLA jeżeli jest TRUE to grupa nie jest sprawdzana,
# następnie sprawdzana jest GRUPA
DJANGO_ADMIN_BASE_ON = env('DJANGO_ADMIN_BASE_ON') # 'role' lub 'group'
DJANGO_ADMIN_AUTH_ROLE = env('DJANGO_ADMIN_AUTH_ROLE') # rola jaką musi mieć użytkownik by być administratorem w Django (role w keycloaku są lokalne dla jednego klienta/aplikacji)
DJANGO_ADMIN_AUTH_GROUP = env('DJANGO_ADMIN_AUTH_GROUP') # grupa do jakiej musi przynależeć użytkownik by być administratorem w Django (grupuy w keycloaku są globalne na cały realm/wszystkie aplikacje)
BASE_DIR = Path(__file__).resolve().parent.parent
SECRET_KEY = 'django-insecure-o**1mv8eu_=)3kyz#f(8lf#0gi6+y5z3q6b48*od8lb57wa=qh'
DEBUG = True
ALLOWED_HOSTS = ['*']
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'keycloak_auth.apps.KeycloakAuthConfig', # keycloak
'restapi.apps.RestapiConfig',
'file_assignment.apps.FileAssignmentConfig',
'merge_files.apps.MergeFilesConfig',
'nextcloud.apps.NextcloudConfig',
'crispy_forms',
'crispy_bootstrap4'
]
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',
'keycloak_auth.middleware.KeycloakAuthMiddleware' #keycloak
]
AUTHENTICATION_BACKENDS = [
'django.contrib.auth.backends.ModelBackend',
'keycloak_auth.backends.KeycloakAuthentication', #keycloak
]
ROOT_URLCONF = 'PralkaX.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 = 'PralkaX.wsgi.application'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'persistent/db.sqlite3',
},
'nextcloud_db': {
'ENGINE': 'django.db.backends.mysql',
'NAME': NEXTCLOUD_DB,
'USER': NEXTCLOUDDB_USER,
'PASSWORD': NEXTCLOUDDB_PASS,
'HOST': NEXTCLOUDDB_HOST,
'PORT': NEXTCLOUDDB_PORT,
},
}
DATABASE_ROUTERS = ['PralkaX.routers.NextcloudDatabaseRouter','PralkaX.routers.DefaultDatabaseRouter']
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',
},
]
LANGUAGE_CODE = env('LANGUAGE')
TIME_ZONE = env('TIMEZONE')
USE_I18N = True
USE_TZ = True
LOGIN_URL = 'keycloak_auth:login' #keycloak
LOGIN_REDIRECT_URL = 'index'
LOGOUT_REDIRECT_URL = 'index'
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
STATIC_ROOT = os.path.join(BASE_DIR, 'static_root')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
STATICFILES_FINDERS = [
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
]
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
LOGGING = {
'version': 1,
'disable_exisiting_loggers': False,
'formatters': {
'verbose': {
'format': '{asctime} {levelname} - {message} ',
'style': '{',
'datefmt': '%Y-%m-%d %H:%M:%S',
},
'simple': {
'format': '{levelname} - {pathname} - {message}',
'style': '{',
},
},
'filters': {
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue',
},
},
'handlers':{
'console': {
'level': 'DEBUG',
'filters': ['require_debug_true'],
'class': 'logging.StreamHandler',
'formatter': 'simple'
},
'file':{
'level':'INFO',
'class':'logging.FileHandler',
'filename': BASE_DIR / 'persistent/appevents.log',
'encoding':'utf-8',
'formatter': 'verbose'
},
},
'loggers':{
'globalEventsLoger':{
'handlers': ['console', 'file'],
'level': 'DEBUG',
'propagate': True,
},
},
}
To share this paste please copy this url and send to your friends
RAW Paste Data
Recent Pastes
- Untitled
Markup | 13 | 3 hours ago
- Коронка На Все Зубы
Stylus | 5 | 5 hours ago
- Выкуп Битых Автомобилей Отзывы
Visual Basic | 10 | 8 hours ago
- Untitled
Markup | 18 | 11 hours ago
- Продажа Насосного Оборудования
Perl | 8 | 14 hours ago
- Рулон Из Картона
GLSL | 11 | 15 hours ago
- Для Теплообменник
Icon | 16 | 1 day ago