예제 #1
0
def dataset_taxonomy_tree(request, short_name):
    dataset = get_object_or_404(Dataset, short_name=short_name)
    taxonomy_tree = data_from_async_task(compute_taxonomy_tree, [], {},
                                         FSD_TAXONOMY_TREE, refresh_time=3600)
    if not taxonomy_tree:
        taxonomy_tree = dataset.taxonomy.get_taxonomy_as_tree()

    return JsonResponse(taxonomy_tree)
예제 #2
0
def monitor(request, short_name):
    dataset = get_object_or_404(Dataset, short_name=short_name)
    if not dataset.user_is_maintainer(request.user):
        return HttpResponseRedirect(reverse('dataset', args=[dataset.short_name]))
    top_contributed_categories = data_from_async_task(compute_dataset_top_contributed_categories, [dataset.id], {},
                                                      DATASET_TOP_CONTRIBUTED_CATEGORIES.format(dataset.id), 60)

    bad_mapping_categories = data_from_async_task(compute_dataset_bad_mapping, [dataset.id], {},
                                                  DATASET_BAD_MAPPING_CATEGORIES.format(dataset.id), 60)

    difficult_agreement_categories = data_from_async_task(compute_dataset_difficult_agreement, [dataset.id], {},
                                                          DATASET_DIFFICULT_AGREEMENT_CATEGORIES.format(dataset.id), 60)

    remaining_annotations = data_from_async_task(compute_remaining_annotations_with_duration, [dataset.id], {},
                                                 DATASET_REMAINING_CANDIDATE_ANNOTATIONS_PER_CATEGORIES
                                                 .format(dataset.id), 60)

    num_contributions_per_day = data_from_async_task(compute_dataset_num_contributions_per_day, [dataset.id], {},
                                                     DATASET_CONTRIBUTIONS_PER_DAY.format(dataset.id), 60)

    num_ground_truth_per_day = data_from_async_task(compute_dataset_num_ground_truth_per_day, [dataset.id], {},
                                                    DATASET_GROUND_TRUTH_PER_DAY.format(dataset.id), 60)

    users = User.objects.annotate(num_votes=Count('votes')).filter(num_votes__gt=0)

    return render(request, 'monitor/monitor.html', {'dataset': dataset,
                                                               'top_contributed': top_contributed_categories,
                                                               'bad_mapping': bad_mapping_categories,
                                                               'difficult_agreement': difficult_agreement_categories,
                                                               'remaining_annotations': remaining_annotations,
                                                               'num_contributions_per_day': num_contributions_per_day,
                                                               'num_ground_truth_per_day': num_ground_truth_per_day,
                                                               'users': users})
예제 #3
0
def dataset_state_table(request, short_name):
    dataset = get_object_or_404(Dataset, short_name=short_name)
    user_is_maintainer = dataset.user_is_maintainer(request.user)

    # Get previously stored dataset release stats
    dataset_basic_stats = data_from_async_task(compute_dataset_basic_stats, [dataset.id], {},
                                               DATASET_BASIC_STATS_KEY_TEMPLATE.format(dataset.id), 60)

    return render(request, 'datasets/dataset_state_table.html', {
        'dataset': dataset,
        'dataset_basic_stats': dataset_basic_stats,
        'user_is_maintainer': user_is_maintainer,
    })
예제 #4
0
def contribute(request, short_name, beginner_task_finished=False):
    dataset = get_object_or_404(Dataset, short_name=short_name)

    n_contributors = User.objects.annotate(num_votes=Count('votes')).filter(num_votes__gt=0).count()

    user_is_maintainer = dataset.user_is_maintainer(request.user)

    # Get previously stored annotators ranking
    annotators_ranking = data_from_async_task(compute_annotators_ranking, [dataset.id], {},
                                              DATASET_ANNOTATORS_RANKING_TEMPLATE.format(dataset.id), 60 * 1)

    return render(request, 'datasets/contribute.html', {'dataset': dataset, 'n_contributors': n_contributors, 'annotators_ranking': annotators_ranking,
                                                        'beginner_task_finished': beginner_task_finished,
                                                        'user_is_maintainer': user_is_maintainer})
예제 #5
0
def dataset(request, short_name):
    dataset = get_object_or_404(Dataset, short_name=short_name)
    user_is_maintainer = dataset.user_is_maintainer(request.user)
    random_taxonomy_nodes = dataset.get_random_taxonomy_node_with_examples()

    # Get previously stored dataset release stats
    dataset_basic_stats = data_from_async_task(compute_dataset_basic_stats, [dataset.id], {},
                                               DATASET_BASIC_STATS_KEY_TEMPLATE.format(dataset.id), 60)

    return render(request, 'datasets/dataset.html', {
        'dataset': dataset,
        'dataset_page': True,
        'user_is_maintainer': user_is_maintainer,
        'random_nodes': random_taxonomy_nodes,
        'dataset_basic_stats': dataset_basic_stats,
    })
예제 #6
0
def index(request):
    dataset = Dataset.objects.get(short_name='fsd')
    dataset_basic_stats = data_from_async_task(
        compute_dataset_basic_stats, [dataset.id], {},
        DATASET_BASIC_STATS_KEY_TEMPLATE.format(dataset.id), 60)
    num_categories_reached_goal = dataset_basic_stats.get(
        'num_categories_reached_goal', None)
    num_non_omitted_nodes = dataset_basic_stats.get('num_non_omitted_nodes',
                                                    None)

    return render(
        request, 'index.html', {
            'home': True,
            'num_categories_reached_goal': num_categories_reached_goal,
            'num_non_omitted_nodes': num_non_omitted_nodes
        })
예제 #7
0
def dataset_taxonomy_table(request, short_name):
    dataset = get_object_or_404(Dataset, short_name=short_name)

    # Get request info to chose which button to place per category
    category_link_to = {
        'e': ('dataset-explore-taxonomy-node', 'Explore'),
        'cva': ('contribute-validate-annotations-category', 'Choose'),
    }[request.GET.get('link_to', 'e')]

    # Get previously stored dataset taxonomy stats
    dataset_taxonomy_stats = data_from_async_task(compute_dataset_taxonomy_stats, [dataset.id], {},
                                                  DATASET_TAXONOMY_STATS_KEY_TEMPLATE.format(dataset.id), 60)

    return render(request, 'datasets/dataset_taxonomy_table.html', {
        'dataset': dataset,
        'category_link_to': category_link_to,
        'dataset_taxonomy_stats': dataset_taxonomy_stats})
예제 #8
0
def dataset_releases_table(request, short_name):
    dataset = get_object_or_404(Dataset, short_name=short_name)
    user_is_maintainer = dataset.user_is_maintainer(request.user)
    if user_is_maintainer:
        dataset_releases_for_user = dataset.releases
    else:
        dataset_releases_for_user = dataset.releases.filter(type="PU")  # Only get public releases

    # Get previously stored dataset release stats
    dataset_basic_stats = data_from_async_task(compute_dataset_basic_stats, [dataset.id], {},
                                               DATASET_BASIC_STATS_KEY_TEMPLATE.format(dataset.id), 60)

    return render(request, 'datasets/dataset_release_table.html', {
        'dataset': dataset,
        'dataset_basic_stats': dataset_basic_stats,
        'user_is_maintainer': user_is_maintainer,
        'dataset_releases_for_user': dataset_releases_for_user
    })
예제 #9
0
def dataset(request, short_name):
    dataset = get_object_or_404(Dataset, short_name=short_name)
    user_is_maintainer = dataset.user_is_maintainer(request.user)
    form_errors = False
    if request.method == 'POST':
        form = DatasetReleaseForm(request.POST)
        if form.is_valid():
            dataset_release = form.save(commit=False)
            dataset_release.dataset = dataset
            dataset_release.save()
            async_job = generate_release_index.delay(
                dataset.id, dataset_release.id,
                form.cleaned_data['max_number_of_sounds'])
            form = DatasetReleaseForm()  # Reset form
        else:
            form_errors = True
    else:
        form = DatasetReleaseForm()

    random_taxonomy_nodes = dataset.get_random_taxonomy_node_with_examples()

    # Get previously stored dataset release stats
    dataset_basic_stats = data_from_async_task(
        compute_dataset_basic_stats, [dataset.id], {},
        DATASET_BASIC_STATS_KEY_TEMPLATE.format(dataset.id), 60)

    return render(
        request, 'datasets/dataset.html', {
            'dataset': dataset,
            'dataset_page': True,
            'user_is_maintainer': user_is_maintainer,
            'dataset_release_form': form,
            'dataset_release_form_errors': form_errors,
            'random_nodes': random_taxonomy_nodes,
            'dataset_basic_stats': dataset_basic_stats,
        })