Files
stiftung-management-system/app/stiftung/utils/config.py
Stiftung Development 35ba089a84 fix: configure CI database connection properly
- Add dotenv loading to Django settings
- Update CI workflow to use correct environment variables
- Set POSTGRES_* variables instead of DATABASE_URL
- Add environment variables to all Django management commands
- Fixes CI test failures due to database connection issues
2025-09-06 18:47:23 +02:00

74 lines
2.3 KiB
Python

"""
Configuration utilities for the Stiftung application
"""
from django.conf import settings
from stiftung.models import AppConfiguration
def get_config(key, default=None, fallback_to_settings=True):
"""
Get a configuration value from the database or fall back to Django settings
Args:
key: The configuration key
default: Default value if not found
fallback_to_settings: If True, try to get from Django settings using the key in uppercase
Returns:
The configuration value
"""
# Try to get from AppConfiguration first
value = AppConfiguration.get_setting(key, None)
# Fall back to Django settings if value is None or empty string
if not value and fallback_to_settings:
settings_key = key.upper()
return getattr(settings, settings_key, default)
return value if value is not None else default
def get_paperless_config():
"""
Get all Paperless-related configuration values
Returns:
dict: Dictionary containing all Paperless configuration
"""
return {
'api_url': get_config('paperless_api_url', 'http://192.168.178.167:30070'),
'api_token': get_config('paperless_api_token', ''),
'destinataere_tag': get_config('paperless_destinataere_tag', 'Stiftung_Destinatäre'),
'destinataere_tag_id': get_config('paperless_destinataere_tag_id', '210'),
'land_tag': get_config('paperless_land_tag', 'Stiftung_Land_und_Pächter'),
'land_tag_id': get_config('paperless_land_tag_id', '204'),
'admin_tag': get_config('paperless_admin_tag', 'Stiftung_Administration'),
'admin_tag_id': get_config('paperless_admin_tag_id', '216'),
}
def set_config(key, value, **kwargs):
"""
Set a configuration value
Args:
key: The configuration key
value: The value to set
**kwargs: Additional parameters for AppConfiguration.set_setting
Returns:
AppConfiguration: The configuration object
"""
return AppConfiguration.set_setting(key, value, **kwargs)
def is_paperless_configured():
"""
Check if Paperless is properly configured
Returns:
bool: True if API URL and token are configured
"""
config = get_paperless_config()
return bool(config['api_url'] and config['api_token'])