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:
124
app/stiftung/management/commands/init_config.py
Normal file
124
app/stiftung/management/commands/init_config.py
Normal file
@@ -0,0 +1,124 @@
|
||||
from django.core.management.base import BaseCommand
|
||||
from stiftung.models import AppConfiguration
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = 'Initialize default app configuration settings'
|
||||
|
||||
def handle(self, *args, **options):
|
||||
# Paperless Integration Settings
|
||||
paperless_settings = [
|
||||
{
|
||||
'key': 'paperless_api_url',
|
||||
'display_name': 'Paperless API URL',
|
||||
'description': 'The base URL for your Paperless-NGX API (e.g., http://paperless.example.com:8000)',
|
||||
'value': 'http://192.168.178.167:30070',
|
||||
'default_value': 'http://192.168.178.167:30070',
|
||||
'setting_type': 'url',
|
||||
'category': 'paperless',
|
||||
'order': 1
|
||||
},
|
||||
{
|
||||
'key': 'paperless_api_token',
|
||||
'display_name': 'Paperless API Token',
|
||||
'description': 'The authentication token for Paperless API access',
|
||||
'value': '',
|
||||
'default_value': '',
|
||||
'setting_type': 'text',
|
||||
'category': 'paperless',
|
||||
'order': 2
|
||||
},
|
||||
{
|
||||
'key': 'paperless_destinataere_tag',
|
||||
'display_name': 'Destinatäre Tag Name',
|
||||
'description': 'The tag name used to identify Destinatäre documents in Paperless',
|
||||
'value': 'Stiftung_Destinatäre',
|
||||
'default_value': 'Stiftung_Destinatäre',
|
||||
'setting_type': 'tag',
|
||||
'category': 'paperless',
|
||||
'order': 3
|
||||
},
|
||||
{
|
||||
'key': 'paperless_destinataere_tag_id',
|
||||
'display_name': 'Destinatäre Tag ID',
|
||||
'description': 'The numeric ID of the Destinatäre tag in Paperless',
|
||||
'value': '210',
|
||||
'default_value': '210',
|
||||
'setting_type': 'tag_id',
|
||||
'category': 'paperless',
|
||||
'order': 4
|
||||
},
|
||||
{
|
||||
'key': 'paperless_land_tag',
|
||||
'display_name': 'Land & Pächter Tag Name',
|
||||
'description': 'The tag name used to identify Land and Pächter documents in Paperless',
|
||||
'value': 'Stiftung_Land_und_Pächter',
|
||||
'default_value': 'Stiftung_Land_und_Pächter',
|
||||
'setting_type': 'tag',
|
||||
'category': 'paperless',
|
||||
'order': 5
|
||||
},
|
||||
{
|
||||
'key': 'paperless_land_tag_id',
|
||||
'display_name': 'Land & Pächter Tag ID',
|
||||
'description': 'The numeric ID of the Land & Pächter tag in Paperless',
|
||||
'value': '204',
|
||||
'default_value': '204',
|
||||
'setting_type': 'tag_id',
|
||||
'category': 'paperless',
|
||||
'order': 6
|
||||
},
|
||||
{
|
||||
'key': 'paperless_admin_tag',
|
||||
'display_name': 'Administration Tag Name',
|
||||
'description': 'The tag name used to identify Administration documents in Paperless',
|
||||
'value': 'Stiftung_Administration',
|
||||
'default_value': 'Stiftung_Administration',
|
||||
'setting_type': 'tag',
|
||||
'category': 'paperless',
|
||||
'order': 7
|
||||
},
|
||||
{
|
||||
'key': 'paperless_admin_tag_id',
|
||||
'display_name': 'Administration Tag ID',
|
||||
'description': 'The numeric ID of the Administration tag in Paperless',
|
||||
'value': '216',
|
||||
'default_value': '216',
|
||||
'setting_type': 'tag_id',
|
||||
'category': 'paperless',
|
||||
'order': 8
|
||||
}
|
||||
]
|
||||
|
||||
created_count = 0
|
||||
updated_count = 0
|
||||
|
||||
for setting_data in paperless_settings:
|
||||
setting, created = AppConfiguration.objects.get_or_create(
|
||||
key=setting_data['key'],
|
||||
defaults=setting_data
|
||||
)
|
||||
|
||||
if created:
|
||||
created_count += 1
|
||||
self.stdout.write(
|
||||
self.style.SUCCESS(f'Created setting: {setting.display_name}')
|
||||
)
|
||||
else:
|
||||
# Update existing setting with new defaults if needed
|
||||
if not setting.description:
|
||||
setting.description = setting_data['description']
|
||||
setting.save()
|
||||
updated_count += 1
|
||||
|
||||
self.stdout.write(
|
||||
self.style.SUCCESS(
|
||||
f'Configuration initialized successfully! '
|
||||
f'Created {created_count} new settings, updated {updated_count} existing settings.'
|
||||
)
|
||||
)
|
||||
self.stdout.write(
|
||||
self.style.WARNING(
|
||||
'You can now manage these settings in the Django Admin under "App Configurations"'
|
||||
)
|
||||
)
|
||||
Reference in New Issue
Block a user