This commit is contained in:
Desktop
2025-11-12 04:54:12 +05:00
parent b132099e66
commit 4373657147
4 changed files with 190 additions and 80 deletions

View File

@@ -182,29 +182,25 @@ def process_image_generation_queue(self, image_ids: list, account_id: int = None
logger.error("Image generation settings not found")
return {'success': False, 'error': 'Image generation settings not found'}
# Get provider API key
# Get provider API key (using same approach as test image generation)
# Note: API key is stored as 'apiKey' (camelCase) in IntegrationSettings.config
try:
if provider == 'openai':
provider_settings = IntegrationSettings.objects.get(
account=account,
integration_type='openai',
is_active=True
)
api_key = provider_settings.config.get('api_key') if provider_settings.config else None
elif provider == 'runware':
provider_settings = IntegrationSettings.objects.get(
account=account,
integration_type='runware',
is_active=True
)
api_key = provider_settings.config.get('api_key') if provider_settings.config else None
else:
return {'success': False, 'error': f'Unknown provider: {provider}'}
provider_settings = IntegrationSettings.objects.get(
account=account,
integration_type=provider, # 'openai' or 'runware'
is_active=True
)
api_key = provider_settings.config.get('apiKey') if provider_settings.config else None
if not api_key:
return {'success': False, 'error': f'{provider} API key not configured'}
logger.error(f"[process_image_generation_queue] {provider.upper()} API key not found in config")
return {'success': False, 'error': f'{provider.upper()} API key not configured'}
logger.info(f"[process_image_generation_queue] {provider.upper()} API key retrieved successfully")
except IntegrationSettings.DoesNotExist:
return {'success': False, 'error': f'{provider} integration not found'}
logger.error(f"[process_image_generation_queue] {provider.upper()} integration settings not found")
return {'success': False, 'error': f'{provider.upper()} integration not found or not active'}
except Exception as e:
logger.error(f"[process_image_generation_queue] Error getting {provider} API key: {e}", exc_info=True)
return {'success': False, 'error': f'Error retrieving {provider} API key: {str(e)}'}
# Get image prompt template (has placeholders: {image_type}, {post_title}, {image_prompt})
try:
@@ -291,8 +287,12 @@ def process_image_generation_queue(self, image_ids: list, account_id: int = None
logger.warning(f"Prompt template formatting failed: {e}, using image prompt directly")
formatted_prompt = image.prompt
# Generate image
logger.info(f"Generating image {index}/{total_images} (ID: {image_id})")
# Generate image (using same approach as test image generation)
logger.info(f"[process_image_generation_queue] Generating image {index}/{total_images} (ID: {image_id})")
logger.info(f"[process_image_generation_queue] Provider: {provider}, Model: {model}")
logger.info(f"[process_image_generation_queue] Prompt length: {len(formatted_prompt)}")
logger.info(f"[process_image_generation_queue] Image type: {image_type}")
result = ai_core.generate_image(
prompt=formatted_prompt,
provider=provider,
@@ -303,6 +303,8 @@ def process_image_generation_queue(self, image_ids: list, account_id: int = None
function_name='generate_images_from_prompts'
)
logger.info(f"[process_image_generation_queue] Image generation result: has_url={bool(result.get('url'))}, has_error={bool(result.get('error'))}")
# Check for errors
if result.get('error'):
logger.error(f"Image generation failed for {image_id}: {result.get('error')}")

View File

@@ -437,6 +437,7 @@ class IntegrationSettingsViewSet(viewsets.ViewSet):
model = request.data.get('model', 'dall-e-3')
logger.info(f"[generate_image] Request parameters: provider={provider}, model={model}, image_type={image_type}, image_size={image_size}, prompt_length={len(prompt)}")
logger.info(f"[generate_image] IMPORTANT: Using ONLY {provider.upper()} provider for this request. NOT using both providers.")
if not prompt:
logger.error("[generate_image] ERROR: Prompt is empty")
@@ -445,79 +446,50 @@ class IntegrationSettingsViewSet(viewsets.ViewSet):
'error': 'Prompt is required'
}, status=status.HTTP_400_BAD_REQUEST)
# Get API keys from saved settings
logger.info("[generate_image] Step 3: Getting API keys from saved settings")
# Get API key from saved settings for the specified provider only
logger.info(f"[generate_image] Step 3: Getting API key for provider: {provider}")
from .models import IntegrationSettings
# Get OpenAI settings
openai_api_key = None
openai_enabled = False
try:
openai_settings = IntegrationSettings.objects.get(
integration_type='openai',
account=account
)
openai_api_key = openai_settings.config.get('apiKey')
openai_enabled = openai_settings.is_active
logger.info(f"[generate_image] OpenAI settings found: enabled={openai_enabled}, has_key={bool(openai_api_key)}")
except IntegrationSettings.DoesNotExist:
logger.warning("[generate_image] OpenAI settings not found in database")
openai_api_key = None
openai_enabled = False
except Exception as e:
logger.error(f"[generate_image] Error getting OpenAI settings: {e}")
openai_api_key = None
openai_enabled = False
# Only fetch settings for the specified provider
api_key = None
integration_enabled = False
integration_type = provider # 'openai' or 'runware'
# Get Runware settings
runware_api_key = None
runware_enabled = False
try:
runware_settings = IntegrationSettings.objects.get(
integration_type='runware',
integration_settings = IntegrationSettings.objects.get(
integration_type=integration_type,
account=account
)
runware_api_key = runware_settings.config.get('apiKey')
runware_enabled = runware_settings.is_active
logger.info(f"[generate_image] Runware settings found: enabled={runware_enabled}, has_key={bool(runware_api_key)}")
api_key = integration_settings.config.get('apiKey')
integration_enabled = integration_settings.is_active
logger.info(f"[generate_image] {integration_type.upper()} settings found: enabled={integration_enabled}, has_key={bool(api_key)}")
except IntegrationSettings.DoesNotExist:
logger.warning("[generate_image] Runware settings not found in database")
runware_api_key = None
runware_enabled = False
logger.warning(f"[generate_image] {integration_type.upper()} settings not found in database")
api_key = None
integration_enabled = False
except Exception as e:
logger.error(f"[generate_image] Error getting Runware settings: {e}")
runware_api_key = None
runware_enabled = False
logger.error(f"[generate_image] Error getting {integration_type.upper()} settings: {e}")
api_key = None
integration_enabled = False
# Validate provider and API key
logger.info("[generate_image] Step 4: Validating provider and API key")
if provider == 'openai':
logger.info(f"[generate_image] Provider is OpenAI, checking API key: has_key={bool(openai_api_key)}, enabled={openai_enabled}")
if not openai_api_key or not openai_enabled:
logger.error("[generate_image] ERROR: OpenAI API key not configured or integration not enabled")
return Response({
'success': False,
'error': 'OpenAI API key not configured or integration not enabled'
}, status=status.HTTP_400_BAD_REQUEST)
api_key = openai_api_key
logger.info("[generate_image] OpenAI API key validated")
elif provider == 'runware':
logger.info(f"[generate_image] Provider is Runware, checking API key: has_key={bool(runware_api_key)}, enabled={runware_enabled}")
if not runware_api_key or not runware_enabled:
logger.error("[generate_image] ERROR: Runware API key not configured or integration not enabled")
return Response({
'success': False,
'error': 'Runware API key not configured or integration not enabled'
}, status=status.HTTP_400_BAD_REQUEST)
api_key = runware_api_key
logger.info("[generate_image] Runware API key validated")
else:
logger.info(f"[generate_image] Step 4: Validating {provider} provider and API key")
if provider not in ['openai', 'runware']:
logger.error(f"[generate_image] ERROR: Invalid provider: {provider}")
return Response({
'success': False,
'error': f'Invalid provider: {provider}'
'error': f'Invalid provider: {provider}. Must be "openai" or "runware"'
}, status=status.HTTP_400_BAD_REQUEST)
if not api_key or not integration_enabled:
logger.error(f"[generate_image] ERROR: {provider.upper()} API key not configured or integration not enabled")
return Response({
'success': False,
'error': f'{provider.upper()} API key not configured or integration not enabled'
}, status=status.HTTP_400_BAD_REQUEST)
logger.info(f"[generate_image] {provider.upper()} API key validated successfully")
# Generate image using AIProcessor
logger.info("[generate_image] Step 5: Creating AIProcessor and generating image")
try: