import os
from django.core.management.base import BaseCommand, CommandError
from django.conf import settings
from gpt_po_translator.main import translate_po_files

class Command(BaseCommand):
    help = 'Translates PO files using gpt-po-translator configured with OpenRouter.'

    def add_arguments(self, parser):
        parser.add_argument(
            '--folder',
            type=str,
            default=getattr(settings, 'LOCALE_PATHS', ['locale'])[0],
            help='Path to the folder containing .po files (default is the first LOCALE_PATHS entry).',
        )
        parser.add_argument(
            '--lang',
            type=str,
            help='Comma-separated target language codes (e.g., de,fr,es).',
            required=True,
        )
        parser.add_argument(
            '--model',
            type=str,
            default='mistralai/mistral-nemo', # Example OpenRouter model
            help='The OpenRouter model to use (e.g., openai/gpt-4o, mistralai/mistral-nemo).',
        )
        parser.add_argument(
            '--bulk',
            action='store_true',
            help='Enable bulk translation mode for efficiency.',
        )
        parser.add_argument(
            '--bulksize',
            type=int,
            default=50,
            help='Entries per batch in bulk mode (default: 50).',
        )

    def handle(self, *args, **options):
        # --- OpenRouter Configuration ---
        # 1. Get API Key from environment variable
        api_key = os.environ.get('OPENROUTER_API_KEY')
        if not api_key:
            raise CommandError("The OPENROUTER_API_KEY environment variable is not set.")

        # 2. Set the base URL for OpenRouter
        openrouter_base_url = "https://openrouter.ai/api/v1"

        # 3. Call the core translation function, passing OpenRouter specific config
        try:
            self.stdout.write(self.style.NOTICE(f"Starting translation with model: {options['model']} via OpenRouter..."))

            translate_po_files(
                folder=options['folder'],
                lang_codes=options['lang'].split(','),
                provider='openai', # gpt-po-translator uses 'openai' provider for OpenAI-compatible APIs
                api_key=api_key,
                model_name=options['model'],
                bulk=options['bulk'],
                bulk_size=options['bulksize'],
                # Set the base_url for the OpenAI client to point to OpenRouter
                base_url=openrouter_base_url,
                # OpenRouter often requires a referrer for API usage
                extra_headers={"HTTP-Referer": "http://your-django-app.com"},
            )

            self.stdout.write(self.style.SUCCESS(f"Successfully translated PO files for languages: {options['lang']}"))

        except Exception as e:
            raise CommandError(f"An error occurred during translation: {e}")