"""This file and its contents are licensed under the Apache License 2.0. Please see the included NOTICE for copyright information and LICENSE for a copy of the license. """ import logging from core.permissions import all_permissions from data_manager.actions import DataManagerAction from data_manager.functions import filters_ordering_selected_items_exist from projects.functions.next_task import get_next_task from rest_framework.exceptions import NotFound from tasks.serializers import NextTaskSerializer logger = logging.getLogger(__name__) def next_task(project, queryset, **kwargs): """Generate next task for labeling stream :param project: project :param queryset: task ids to sample from :param kwargs: arguments from api request """ request = kwargs['request'] dm_queue = filters_ordering_selected_items_exist(request.data) next_task, queue_info = get_next_task(request.user, queryset, project, dm_queue) if next_task is None: raise NotFound(f'There are no tasks for {request.user}') # serialize task context = {'request': request, 'project': project, 'resolve_uri': True, 'annotations': False} serializer = NextTaskSerializer(next_task, context=context) response = serializer.data response['queue'] = queue_info return response actions: list[DataManagerAction] = [ { 'entry_point': next_task, 'permission': all_permissions.projects_view, 'title': 'Generate Next Task', 'order': 0, 'hidden': True, } ]