Exemple #1
0
def dataset_aggregate_info(dataset):
    datafiles_all = DataFile.objects.filter(dataset=dataset)
    verified_datafiles_count = \
        DataFile.objects.filter(dataset=dataset) \
        .values('id') \
        .annotate(min_verified=Min(Case(When(file_objects__verified=True,
                                             then=1),
                                        default=0,
                                        output_field=IntegerField()))) \
        .filter(min_verified=1) \
        .order_by('id').count()
    verified_datafiles_size = \
        DataFile.objects.filter(dataset=dataset) \
            .values('id') \
            .annotate(min_verified=Min(Case(When(file_objects__verified=True,
                                                 then=1),
                                            default=0,
                                            output_field=IntegerField()))) \
            .filter(min_verified=1) \
            .order_by('id') \
            .aggregate(Sum('size'))['size__sum'] or 0
    return {
        "dataset_size": DataFile.sum_sizes(datafiles_all),
        "verified_datafiles_count": verified_datafiles_count,
        "verified_datafiles_size": verified_datafiles_size,
        "datafile_count": datafiles_all.count()
    }
def dataset_aggregate_info(dataset):
    datafiles_all = DataFile.objects.filter(dataset=dataset)
    verified_datafiles_count = \
        DataFile.objects.filter(dataset=dataset) \
        .values('id') \
        .annotate(min_verified=Min(Case(When(file_objects__verified=True,
                                             then=1),
                                        default=0,
                                        output_field=IntegerField()))) \
        .filter(min_verified=1) \
        .order_by('id').count()
    verified_datafiles_size = \
        DataFile.objects.filter(dataset=dataset) \
            .values('id') \
            .annotate(min_verified=Min(Case(When(file_objects__verified=True,
                                                 then=1),
                                            default=0,
                                            output_field=IntegerField()))) \
            .filter(min_verified=1) \
            .order_by('id') \
            .aggregate(Sum('size'))['size__sum'] or 0
    return {
        "dataset_size": DataFile.sum_sizes(datafiles_all),
        "verified_datafiles_count": verified_datafiles_count,
        "verified_datafiles_size": verified_datafiles_size,
        "datafile_count": datafiles_all.count()
    }
Exemple #3
0
def experiment_description(request, experiment_id):
    """View an existing experiment's description. To be loaded via ajax.

    :param request: a HTTP Request instance
    :type request: :class:`django.http.HttpRequest`
    :param experiment_id: the ID of the experiment to be edited
    :type experiment_id: string
    :rtype: :class:`django.http.HttpResponse`

    """
    c = {}

    try:
        experiment = Experiment.safe.get(request.user, experiment_id)
    except PermissionDenied:
        return return_response_error(request)
    except Experiment.DoesNotExist:
        return return_response_not_found(request)

    c['experiment'] = experiment
    c['subtitle'] = experiment.title
    c['nav'] = [{
        'name': 'Data',
        'link': '/experiment/view/'
    }, {
        'name': experiment.title,
        'link': experiment.get_absolute_url()
    }]

    c['authors'] = experiment.experimentauthor_set.all()

    c['datafiles'] = \
        DataFile.objects.filter(dataset__experiments=experiment_id)

    c['owners'] = experiment.get_owners()

    # calculate the sum of the datafile sizes
    c['size'] = DataFile.sum_sizes(c['datafiles'])

    c['has_download_permissions'] = \
        authz.has_experiment_download_access(request, experiment_id)

    c['has_write_permissions'] = \
        authz.has_write_permissions(request, experiment_id)

    if request.user.is_authenticated():
        c['is_owner'] = authz.has_experiment_ownership(request, experiment_id)

    _add_protocols_and_organizations(request, experiment, c)

    if 'status' in request.GET:
        c['status'] = request.GET['status']
    if 'error' in request.GET:
        c['error'] = request.GET['error']

    return HttpResponse(
        render_response_index(
            request, 'tardis_portal/ajax/experiment_description.html', c))
def experiment_description(request, experiment_id):
    """View an existing experiment's description. To be loaded via ajax.

    :param request: a HTTP Request instance
    :type request: :class:`django.http.HttpRequest`
    :param experiment_id: the ID of the experiment to be edited
    :type experiment_id: string
    :rtype: :class:`django.http.HttpResponse`

    """
    c = {}

    try:
        experiment = Experiment.safe.get(request.user, experiment_id)
    except PermissionDenied:
        return return_response_error(request)
    except Experiment.DoesNotExist:
        return return_response_not_found(request)

    c['experiment'] = experiment
    c['subtitle'] = experiment.title
    c['nav'] = [{'name': 'Data', 'link': '/experiment/view/'},
                {'name': experiment.title,
                 'link': experiment.get_absolute_url()}]

    c['authors'] = experiment.experimentauthor_set.all()

    c['datafiles'] = \
        DataFile.objects.filter(dataset__experiments=experiment_id)

    c['owners'] = experiment.get_owners()

    # calculate the sum of the datafile sizes
    c['size'] = DataFile.sum_sizes(c['datafiles'])

    c['has_download_permissions'] = \
        authz.has_experiment_download_access(request, experiment_id)

    c['has_write_permissions'] = \
        authz.has_write_permissions(request, experiment_id)

    if request.user.is_authenticated():
        c['is_owner'] = authz.has_experiment_ownership(request, experiment_id)

    _add_protocols_and_organizations(request, experiment, c)

    if 'status' in request.GET:
        c['status'] = request.GET['status']
    if 'error' in request.GET:
        c['error'] = request.GET['error']

    return HttpResponse(render_response_index(request,
                        'tardis_portal/ajax/experiment_description.html', c))
Exemple #5
0
def stats(request):
    # using count() is more efficient than using len() on a query set
    cursor = connection.cursor()
    if cursor.db.vendor == 'postgresql':
        cursor.execute("SELECT SUM(size::bigint) FROM tardis_portal_datafile")
        try:
            datafile_size = int(cursor.fetchone()[0])
        except TypeError:
            datafile_size = 0
    else:
        datafile_size = DataFile.sum_sizes(DataFile.objects.all())
    c = {
        'experiment_count': Experiment.objects.all().count(),
        'dataset_count': Dataset.objects.all().count(),
        'datafile_count': DataFile.objects.all().count(),
        'datafile_size': datafile_size,
    }
    return HttpResponse(
        render_response_index(request, 'tardis_portal/stats.html', c))
Exemple #6
0
def stats(request):
    # using count() is more efficient than using len() on a query set
    cursor = connection.cursor()
    if cursor.db.vendor == 'postgresql':
        cursor.execute("SELECT SUM(size::bigint) FROM tardis_portal_datafile")
        try:
            datafile_size = int(cursor.fetchone()[0])
        except TypeError:
            datafile_size = 0
    else:
        datafile_size = DataFile.sum_sizes(DataFile.objects.all())
    c = {
        'experiment_count': Experiment.objects.all().count(),
        'dataset_count': Dataset.objects.all().count(),
        'datafile_count': DataFile.objects.all().count(),
        'datafile_size': datafile_size,
    }
    return HttpResponse(render_response_index(request,
                        'tardis_portal/stats.html', c))