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() }
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))
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))
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))