def view_full_dataset(request, dataset_id): """Displays a MX Dataset and associated information. Shows a full (hundreds of images) dataset its metadata and a list of associated files with the option to show metadata of each file and ways to download those files. With write permission this page also allows uploading and metadata editing. Settings for this view: INSTALLED_APPS += ("tardis.apps.mx_views",) DATASET_VIEWS = [("http://synchrotron.org.au/views/dataset/full", "tardis.apps.mx_views.views.view_full_dataset"),] """ dataset = Dataset.objects.get(id=dataset_id) def get_datafiles_page(): # pagination was removed by someone in the interface but not here. # need to fix. pgresults = 100 paginator = Paginator(dataset.dataset_file_set.all(), pgresults) try: page = int(request.GET.get('page', '1')) except ValueError: page = 1 # If page request (9999) is out of range, deliver last page of results. try: return paginator.page(page) except (EmptyPage, InvalidPage): return paginator.page(paginator.num_pages) display_images = dataset.get_images() image_count = len(display_images) if image_count > 4: # take 4 evenly spaced images from the set display_images = display_images[0::image_count / 4][:4] c = Context({ 'dataset': dataset, 'datafiles': get_datafiles_page(), 'parametersets': dataset.getParameterSets() .exclude(schema__hidden=True), 'has_download_permissions': authz.has_dataset_download_access(request, dataset_id), 'has_write_permissions': authz.has_dataset_write(request, dataset_id), 'from_experiment': \ get_experiment_referer(request, dataset_id), 'other_experiments': \ authz.get_accessible_experiments_for_dataset(request, dataset_id), 'display_images': display_images, }) return HttpResponse(render_response_index( request, 'mx_views/view_full_dataset.html', c))
def view_full_dataset(request, dataset_id): """Displays a HRMC Dataset as a single scatter plot of x,y values from grfinalXX.dat and gerr.dat files Requires BDPMytardis with single Settings for this view: INSTALLED_APPS += ("tardis.apps.hrmc_views",) DATASET_VIEWS = [("http://rmit.edu.au/schemas/hrmcdataset", "tardis.apps.hrmc_views.views.view_full_dataset"),] """ logger.debug("got to hrmc views") dataset = Dataset.objects.get(id=dataset_id) # FIXME: as single image, can remove this def get_datafiles_page(): # pagination was removed by someone in the interface but not here. # need to fix. pgresults = 100 paginator = Paginator(dataset.dataset_file_set.all(), pgresults) try: page = int(request.GET.get('page', '1')) except ValueError: page = 1 # If page request (9999) is out of range, deliver last page of results. try: return paginator.page(page) except (EmptyPage, InvalidPage): return paginator.page(paginator.num_pages) display_images = [] image_to_show = get_image_to_show(dataset) if image_to_show: display_images.append(image_to_show) c = Context({ 'dataset': dataset, 'datafiles': get_datafiles_page(), 'parametersets': dataset.getParameterSets() .exclude(schema__hidden=True), 'has_download_permissions': authz.has_dataset_download_access(request, dataset_id), 'has_write_permissions': authz.has_dataset_write(request, dataset_id), 'from_experiment': \ get_experiment_referer(request, dataset_id), 'other_experiments': \ authz.get_accessible_experiments_for_dataset(request, dataset_id), 'display_images': display_images, }) return HttpResponse(render_response_index( request, 'hrmc_views/view_full_dataset.html', c))
def view_full_dataset(request, dataset_id): """Displays a HRMC Dataset as a single scatter plot of x,y values from grfinalXX.dat and gerr.dat files Requires BDPMytardis with single Settings for this view: INSTALLED_APPS += ("tardis.apps.hrmc_views",) DATASET_VIEWS = [("http://rmit.edu.au/schemas/hrmcdataset", "tardis.apps.hrmc_views.views.view_full_dataset"),] """ logger.debug("got to hrmc views") dataset = Dataset.objects.get(id=dataset_id) # FIXME: as single image, can remove this def get_datafiles_page(): # pagination was removed by someone in the interface but not here. # need to fix. pgresults = 100 paginator = Paginator(dataset.dataset_file_set.all(), pgresults) try: page = int(request.GET.get('page', '1')) except ValueError: page = 1 # If page request (9999) is out of range, deliver last page of results. try: return paginator.page(page) except (EmptyPage, InvalidPage): return paginator.page(paginator.num_pages) display_images = [] image_to_show = get_image_to_show(dataset) if image_to_show: display_images.append(image_to_show) c = Context({ 'dataset': dataset, 'datafiles': get_datafiles_page(), 'parametersets': dataset.getParameterSets() .exclude(schema__hidden=True), 'has_download_permissions': authz.has_dataset_download_access(request, dataset_id), 'has_write_permissions': authz.has_dataset_write(request, dataset_id), 'from_experiment': \ get_experiment_referer(request, dataset_id), 'other_experiments': \ authz.get_accessible_experiments_for_dataset(request, dataset_id), 'display_images': display_images, }) return HttpResponse( render_response_index(request, 'hrmc_views/view_full_dataset.html', c))
def view_full_dataset(request, dataset_id): """Displays a MX Dataset and associated information. Shows a full (hundreds of images) dataset its metadata and a list of associated files with the option to show metadata of each file and ways to download those files. With write permission this page also allows uploading and metadata editing. Settings for this view: INSTALLED_APPS += ("tardis.apps.mx_views",) DATASET_VIEWS = [("http://synchrotron.org.au/views/dataset/full", "tardis.apps.mx_views.views.view_full_dataset"),] """ dataset = Dataset.objects.get(id=dataset_id) def get_datafiles_page(): # pagination was removed by someone in the interface but not here. # need to fix. pgresults = 100 paginator = Paginator(dataset.datafile_set.all(), pgresults) try: page = int(request.GET.get('page', '1')) except ValueError: page = 1 # If page request (9999) is out of range, deliver last page of results. try: return paginator.page(page) except (EmptyPage, InvalidPage): return paginator.page(paginator.num_pages) display_images = dataset.get_images() image_count = len(display_images) if image_count > 4: # take 4 evenly spaced images from the set display_images = display_images[0::image_count / 4][:4] upload_method = getattr(settings, "UPLOAD_METHOD", "uploadify") c = { 'dataset': dataset, 'datafiles': get_datafiles_page(), 'parametersets': dataset.getParameterSets() .exclude(schema__hidden=True), 'has_download_permissions': authz.has_dataset_download_access(request, dataset_id), 'has_write_permissions': authz.has_dataset_write(request, dataset_id), 'from_experiment': \ get_experiment_referer(request, dataset_id), 'other_experiments': \ authz.get_accessible_experiments_for_dataset(request, dataset_id), 'display_images': display_images, 'upload_method': upload_method, 'default_organization': getattr(settings, 'DEFAULT_ARCHIVE_ORGANIZATION', 'classic'), 'default_format': getattr(settings, 'DEFAULT_ARCHIVE_FORMATS', ['tgz', 'tar'])[0] } return HttpResponse( render_response_index(request, 'mx_views/view_full_dataset.html', c))
def get_context_data(self, request, dataset, **kwargs): """ Prepares the values to be passed to the default dataset view, respecting authorization rules. Returns a dict of values (the context). :param request: a HTTP request object :type request: :class:`django.http.HttpRequest` :param dataset: the Dataset model instance :type dataset: tardis.tardis_portal.models.dataset.Dataset :return: A dictionary of values for the view/template. :rtype: dict """ def get_datafiles_page(): # pagination was removed by someone in the interface but not here. # need to fix. pgresults = 100 paginator = Paginator(dataset.datafile_set.all(), pgresults) try: page = int(request.GET.get('page', '1')) except ValueError: page = 1 # If page request is out of range (eg 9999), deliver last page of # results. try: return paginator.page(page) except (EmptyPage, InvalidPage): return paginator.page(paginator.num_pages) c = super(DatasetView, self).get_context_data(**kwargs) dataset_id = dataset.id upload_method = getattr(settings, "UPLOAD_METHOD", False) max_images_in_carousel = getattr(settings, "MAX_IMAGES_IN_CAROUSEL", 0) if max_images_in_carousel: carousel_slice = ":%s" % max_images_in_carousel else: carousel_slice = ":" c.update( {'dataset': dataset, 'datafiles': get_datafiles_page(), 'parametersets': dataset.getParameterSets().exclude( schema__hidden=True), 'has_download_permissions': authz.has_dataset_download_access( request, dataset_id), 'has_write_permissions': authz.has_dataset_write(request, dataset_id), 'from_experiment': get_experiment_referer(request, dataset_id), 'other_experiments': authz.get_accessible_experiments_for_dataset( request, dataset_id), 'upload_method': upload_method, 'push_to_enabled': PushToConfig.name in settings.INSTALLED_APPS, 'carousel_slice': carousel_slice, } ) # Enables UI elements for the push_to app if c['push_to_enabled']: push_to_args = { 'dataset_id': dataset.pk } c['push_to_url'] = reverse(initiate_push_dataset, kwargs=push_to_args) _add_protocols_and_organizations(request, dataset, c) return c
def get_context_data(self, request, dataset, **kwargs): """ Prepares the values to be passed to the default dataset view, respecting authorization rules. Returns a dict of values (the context). :param request: a HTTP request object :type request: :class:`django.http.HttpRequest` :param dataset: the Dataset model instance :type dataset: tardis.tardis_portal.models.dataset.Dataset :return: A dictionary of values for the view/template. :rtype: dict """ def get_datafiles_page(): # pagination was removed by someone in the interface but not here. # need to fix. pgresults = 100 paginator = Paginator(dataset.datafile_set.all(), pgresults) try: page = int(request.GET.get('page', '1')) except ValueError: page = 1 # If page request is out of range (eg 9999), deliver last page of # results. try: return paginator.page(page) except (EmptyPage, InvalidPage): return paginator.page(paginator.num_pages) c = super(DatasetView, self).get_context_data(**kwargs) dataset_id = dataset.id upload_method = getattr(settings, "UPLOAD_METHOD", False) max_images_in_carousel = getattr(settings, "MAX_IMAGES_IN_CAROUSEL", 0) if max_images_in_carousel: carousel_slice = ":%s" % max_images_in_carousel else: carousel_slice = ":" c.update({ 'dataset': dataset, 'datafiles': get_datafiles_page(), 'parametersets': dataset.getParameterSets().exclude(schema__hidden=True), 'has_download_permissions': authz.has_dataset_download_access(request, dataset_id), 'has_write_permissions': authz.has_dataset_write(request, dataset_id), 'from_experiment': get_experiment_referer(request, dataset_id), 'other_experiments': authz.get_accessible_experiments_for_dataset(request, dataset_id), 'upload_method': upload_method, 'push_to_enabled': PushToConfig.name in settings.INSTALLED_APPS, 'carousel_slice': carousel_slice, }) # Enables UI elements for the push_to app if c['push_to_enabled']: push_to_args = {'dataset_id': dataset.pk} c['push_to_url'] = reverse(initiate_push_dataset, kwargs=push_to_args) _add_protocols_and_organizations(request, dataset, c) return c