avatar
Untitled

Guest 96 5th Jul, 2024

MARKUP 6.52 KB
                                           
                         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
Ta strona używa plików cookie w celu usprawnienia i ułatwienia dostępu do serwisu oraz prowadzenia danych statystycznych. Dalsze korzystanie z tej witryny oznacza akceptację tego stanu rzeczy.
Wykorzystywanie plików Cookie
Jak wyłączyć cookies?
ROZUMIEM