23
This commit is contained in:
@@ -1005,13 +1005,29 @@ class ContentIdeasViewSet(SiteSectorModelViewSet):
|
||||
)
|
||||
|
||||
queryset = self.get_queryset()
|
||||
ideas = queryset.filter(id__in=ids, status='new') # Only queue 'new' ideas
|
||||
# Get ALL requested ideas first (don't filter by status yet)
|
||||
all_ideas = queryset.filter(id__in=ids)
|
||||
|
||||
# Check which ones can be queued (status='new')
|
||||
queueable_ideas = all_ideas.filter(status='new')
|
||||
|
||||
from igny8_core.modules.writer.models import Tasks
|
||||
|
||||
created_tasks = []
|
||||
errors = []
|
||||
for idea in ideas:
|
||||
skipped = []
|
||||
|
||||
# Add skipped ideas (not 'new' status)
|
||||
for idea in all_ideas:
|
||||
if idea.status != 'new':
|
||||
skipped.append({
|
||||
'idea_id': idea.id,
|
||||
'title': idea.idea_title,
|
||||
'reason': f'Already {idea.status}'
|
||||
})
|
||||
|
||||
# Process queueable ideas
|
||||
for idea in queueable_ideas:
|
||||
try:
|
||||
# Direct copy - no mapping needed
|
||||
task = Tasks.objects.create(
|
||||
@@ -1037,23 +1053,43 @@ class ContentIdeasViewSet(SiteSectorModelViewSet):
|
||||
idea.status = 'scheduled'
|
||||
idea.save()
|
||||
except Exception as e:
|
||||
errors.append({'idea_id': idea.id, 'error': str(e)})
|
||||
errors.append({
|
||||
'idea_id': idea.id,
|
||||
'title': idea.idea_title,
|
||||
'error': str(e)
|
||||
})
|
||||
|
||||
if errors:
|
||||
# Return appropriate response based on results
|
||||
if len(created_tasks) == 0 and (errors or skipped):
|
||||
# Complete failure
|
||||
return error_response(
|
||||
error=f'Failed to create {len(errors)} tasks',
|
||||
errors=errors,
|
||||
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
||||
error=f'Failed to queue any ideas: {len(errors)} errors, {len(skipped)} skipped',
|
||||
errors=errors if errors else skipped,
|
||||
status_code=status.HTTP_400_BAD_REQUEST,
|
||||
request=request
|
||||
)
|
||||
elif errors:
|
||||
# Partial success - some created, some failed
|
||||
return success_response(
|
||||
data={
|
||||
'created_count': len(created_tasks),
|
||||
'task_ids': created_tasks,
|
||||
'errors': errors,
|
||||
'skipped': skipped,
|
||||
},
|
||||
message=f'Queued {len(created_tasks)} ideas ({len(errors)} failed, {len(skipped)} skipped)',
|
||||
request=request
|
||||
)
|
||||
else:
|
||||
# Complete success
|
||||
return success_response(
|
||||
data={
|
||||
'created_count': len(created_tasks),
|
||||
'task_ids': created_tasks,
|
||||
'skipped': skipped,
|
||||
},
|
||||
message=f'Successfully queued {len(created_tasks)} ideas to writer' + (f' ({len(skipped)} already scheduled)' if skipped else ''),
|
||||
request=request
|
||||
)
|
||||
|
||||
return success_response(
|
||||
data={
|
||||
'created_count': len(created_tasks),
|
||||
'task_ids': created_tasks,
|
||||
},
|
||||
message=f'Successfully queued {len(created_tasks)} ideas to writer',
|
||||
request=request
|
||||
)
|
||||
|
||||
# REMOVED: generate_idea action - idea generation function removed
|
||||
|
||||
Reference in New Issue
Block a user