from pathlib import Path import dj_database_url from decouple import config BASE_DIR = Path(__file__).resolve().parent.parent.parent SECRET_KEY = config('SECRET_KEY', default='django-insecure-change-me') INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'vergabe_teilnahme.apps.core', 'vergabe_teilnahme.apps.accounts', 'vergabe_teilnahme.apps.ausschreibungen', 'vergabe_teilnahme.apps.lose', 'vergabe_teilnahme.apps.aufgaben', 'vergabe_teilnahme.apps.dokumente', 'vergabe_teilnahme.apps.preise', 'vergabe_teilnahme.apps.partner', 'vergabe_teilnahme.apps.bibliothek', 'vergabe_teilnahme.apps.marktbegleiter', 'vergabe_teilnahme.apps.nachbetrachtung', 'vergabe_teilnahme.apps.feedback', ] MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'whitenoise.middleware.WhiteNoiseMiddleware', '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', ] ROOT_URLCONF = 'vergabe_teilnahme.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [BASE_DIR / 'vergabe_teilnahme' / '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', 'vergabe_teilnahme.apps.core.context_processors.vergabe_context', ], }, }, ] WSGI_APPLICATION = 'vergabe_teilnahme.wsgi.application' DATABASES = { 'default': dj_database_url.parse( config('DATABASE_URL', default='postgres://vergabe:vergabe@localhost:5432/vergabe_db') ) } AUTH_USER_MODEL = 'accounts.Mitarbeiter' DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' 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 = 'de-de' TIME_ZONE = 'Europe/Berlin' USE_I18N = True USE_TZ = True STATIC_URL = '/static/' STATIC_ROOT = BASE_DIR / 'staticfiles' STATICFILES_DIRS = [BASE_DIR / 'static'] MEDIA_URL = '/media/' MEDIA_ROOT = BASE_DIR / 'media' MAX_UPLOAD_SIZE = config('MAX_UPLOAD_SIZE', default=52428800, cast=int) # Issue Facade — lokales SQLite-Backend (immer aktiv) ISSUE_FACADE_LOCAL_DB = BASE_DIR / '.issue-facade' / 'issues.db' # Issue Facade — Gitea-Remote (optional, None = deaktiviert) ISSUE_FACADE_GITEA: dict | None = None # Beispiel: # ISSUE_FACADE_GITEA = { # 'base_url': 'https://gitea.example.com', # 'token': env('GITEA_TOKEN', default=''), # 'owner': 'org', # 'repo': 'vergabe', # }