image generation function implementation
This commit is contained in:
@@ -514,6 +514,51 @@ class ImagesViewSet(SiteSectorModelViewSet):
|
||||
'results': grouped_data
|
||||
}, status=status.HTTP_200_OK)
|
||||
|
||||
@action(detail=False, methods=['post'], url_path='generate_images', url_name='generate_images')
|
||||
def generate_images(self, request):
|
||||
"""Generate images from prompts - queues Celery task for sequential processing"""
|
||||
from igny8_core.ai.tasks import process_image_generation_queue
|
||||
|
||||
account = getattr(request, 'account', None)
|
||||
image_ids = request.data.get('ids', [])
|
||||
content_id = request.data.get('content_id')
|
||||
|
||||
if not image_ids:
|
||||
return Response({
|
||||
'error': 'No image IDs provided',
|
||||
'type': 'ValidationError'
|
||||
}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
account_id = account.id if account else None
|
||||
|
||||
# Queue Celery task
|
||||
try:
|
||||
if hasattr(process_image_generation_queue, 'delay'):
|
||||
task = process_image_generation_queue.delay(
|
||||
image_ids=image_ids,
|
||||
account_id=account_id,
|
||||
content_id=content_id
|
||||
)
|
||||
return Response({
|
||||
'success': True,
|
||||
'task_id': str(task.id),
|
||||
'message': 'Image generation started'
|
||||
}, status=status.HTTP_200_OK)
|
||||
else:
|
||||
# Fallback to synchronous execution (for testing)
|
||||
result = process_image_generation_queue(
|
||||
image_ids=image_ids,
|
||||
account_id=account_id,
|
||||
content_id=content_id
|
||||
)
|
||||
return Response(result, status=status.HTTP_200_OK)
|
||||
except Exception as e:
|
||||
logger.error(f"[generate_images] Error: {str(e)}", exc_info=True)
|
||||
return Response({
|
||||
'error': str(e),
|
||||
'type': 'ExecutionError'
|
||||
}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
|
||||
|
||||
class ContentViewSet(SiteSectorModelViewSet):
|
||||
"""
|
||||
ViewSet for managing task content
|
||||
|
||||
Reference in New Issue
Block a user