- 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
125 lines
4.8 KiB
Python
125 lines
4.8 KiB
Python
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"'
|
|
)
|
|
)
|