コード例 #1
0
def test_pop_first_nonempty_queue_empty(db, test_project_data, test_queue, test_redis):
    init_redis()

    queue, data = pop_first_nonempty_queue(test_project_data)

    assert queue is None
    assert data is None
コード例 #2
0
def test_pop_first_nonempty_queue_multiple_queues(db, test_project_data,
                                                  test_queue, test_redis):
    test_queue2 = add_queue(test_project_data, 10)
    fill_queue(test_queue2, orderby='random')

    queue, data = pop_first_nonempty_queue(test_project_data)

    assert isinstance(queue, Queue)
    assert queue == test_queue2

    fill_queue(test_queue, orderby='random')

    queue, data = pop_first_nonempty_queue(test_project_data)

    assert isinstance(queue, Queue)
    assert queue == test_queue
コード例 #3
0
def test_pop_first_nonempty_queue_multiple_profile_queues(
        db, test_project_data, test_profile, test_profile_queue,
        test_profile_queue2, test_redis):
    fill_queue(test_profile_queue2, orderby='random')

    queue, data = pop_first_nonempty_queue(test_project_data,
                                           profile=test_profile)

    assert queue is None
    assert data is None

    fill_queue(test_profile_queue, orderby='random')

    queue, data = pop_first_nonempty_queue(test_project_data,
                                           profile=test_profile)

    assert isinstance(queue, Queue)
    assert queue == test_profile_queue
コード例 #4
0
def test_pop_first_nonempty_queue_single_queue(db, test_project_data,
                                               test_queue, test_redis):
    fill_queue(test_queue, orderby='random')

    queue, data = pop_first_nonempty_queue(test_project_data)

    assert isinstance(queue, Queue)
    assert queue == test_queue

    assert isinstance(data, Data)
コード例 #5
0
def assign_datum(profile, project, type="normal"):
    """Given a profile and project, figure out which queue to pull from; then pop a
    datum off that queue and assign it to the profile."""
    with transaction.atomic():
        queue, datum = pop_first_nonempty_queue(project,
                                                profile=profile,
                                                type=type)
        if datum is None:
            return None
        else:
            num_labeled = DataLabel.objects.filter(data=datum,
                                                   profile=profile).count()
            if num_labeled == 0:
                AssignedData.objects.create(data=datum,
                                            profile=profile,
                                            queue=queue)
                return datum
            else:
                return None