- 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
74 lines
2.3 KiB
Python
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'])
|