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
This commit is contained in:
73
app/stiftung/utils/config.py
Normal file
73
app/stiftung/utils/config.py
Normal file
@@ -0,0 +1,73 @@
|
||||
"""
|
||||
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'])
|
||||
Reference in New Issue
Block a user