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"' ) )