Beispiel #1
0
def sftp_access(request):
    """
    Show dynamically generated instructions on how to connect to SFTP
    :param request: HttpRequest
    :return: HttpResponse
    """
    object_type = request.GET.get('object_type')
    object_id = request.GET.get('object_id')
    sftp_start_dir = ''
    if object_type and object_id:
        ct = ContentType.objects.get_by_natural_key(
            'tardis_portal', object_type)
        item = ct.model_class().objects.get(id=object_id)
        if object_type == 'experiment':
            exps = [item]
            dataset = None
            datafile = None
        else:
            if object_type == 'dataset':
                dataset = item
                datafile = None
            elif object_type == 'datafile':
                datafile = item
                dataset = datafile.dataset
            exps = dataset.experiments.all()
        allowed_exps = []
        for exp in exps:
            if has_experiment_download_access(request, exp.id):
                allowed_exps.append(exp)
        if len(allowed_exps) > 0:
            exp = allowed_exps[0]
            path_parts = ['/home', request.user.username, 'experiments',
                          dirname_with_id(exp.title, exp.id)]
            if dataset is not None:
                path_parts.append(
                    dirname_with_id(dataset.description, dataset.id))
            if datafile is not None:
                path_parts.append(datafile.directory)
            sftp_start_dir = path.join(*path_parts)

    if request.user.userprofile.isDjangoAccount:
        sftp_username = request.user.username
    else:
        login_attr = getattr(settings, 'SFTP_USERNAME_ATTRIBUTE', 'email')
        sftp_username = getattr(request.user, login_attr)
    c = {
        'sftp_host': request.get_host().split(':')[0],
        'sftp_port': getattr(settings, 'SFTP_PORT', 2200),
        'sftp_username': sftp_username,
        'sftp_start_dir': sftp_start_dir,
        'site_name': getattr(settings, 'SITE_TITLE', 'MyTardis'),
    }
    c['sftp_url'] = 'sftp://{}@{}:{}{}'.format(
        c['sftp_username'],
        c['sftp_host'],
        c['sftp_port'],
        c['sftp_start_dir'])
    return render(request, template_name='tardis_portal/sftp.html', context=c)
Beispiel #2
0
def sftp_access(request):
    """
    Show dynamically generated instructions on how to connect to SFTP
    :param request: HttpRequest
    :return: HttpResponse
    """
    object_type = request.GET.get('object_type')
    object_id = request.GET.get('object_id')
    sftp_start_dir = ''
    if object_type and object_id:
        ct = ContentType.objects.get_by_natural_key('tardis_portal',
                                                    object_type)
        item = ct.model_class().objects.get(id=object_id)
        if object_type == 'experiment':
            exps = [item]
            dataset = None
            datafile = None
        else:
            if object_type == 'dataset':
                dataset = item
                datafile = None
            elif object_type == 'datafile':
                datafile = item
                dataset = datafile.dataset
            exps = dataset.experiments.all()
        allowed_exps = []
        for exp in exps:
            if has_experiment_download_access(request, exp.id):
                allowed_exps.append(exp)
        if len(allowed_exps) > 0:
            exp = allowed_exps[0]
            path_parts = [
                '/home', request.user.username, 'experiments',
                dirname_with_id(exp.title, exp.id)
            ]
            if dataset is not None:
                path_parts.append(
                    dirname_with_id(dataset.description, dataset.id))
            if datafile is not None:
                path_parts.append(datafile.directory)
            sftp_start_dir = path.join(*path_parts)

    if request.user.userprofile.isDjangoAccount:
        sftp_username = request.user.username
    else:
        login_attr = getattr(settings, 'SFTP_USERNAME_ATTRIBUTE', 'email')
        sftp_username = getattr(request.user, login_attr)
    c = {
        'sftp_host': request.get_host().split(':')[0],
        'sftp_port': getattr(settings, 'SFTP_PORT', 2200),
        'sftp_username': sftp_username,
        'sftp_start_dir': sftp_start_dir,
        'site_name': getattr(settings, 'SITE_TITLE', 'MyTardis'),
    }
    c['sftp_url'] = 'sftp://{}@{}:{}{}'.format(c['sftp_username'],
                                               c['sftp_host'], c['sftp_port'],
                                               c['sftp_start_dir'])
    return render(request, template_name='tardis_portal/sftp.html', context=c)
Beispiel #3
0
 def update_experiments(self):
     exps = [(dirname_with_id(exp.title, exp.id), exp)
             for exp in self.host_obj.experiments]
     self.clear_children()
     for exp_name, exp in exps:
         child = self.children[exp_name]
         child.name = exp_name
         child.obj = exp
         child.update = child.update_datasets
Beispiel #4
0
 def update_experiments(self):
     exps = [(dirname_with_id(exp.title, exp.id), exp)
             for exp in self.host_obj.experiments]
     self.clear_children()
     for exp_name, exp in exps:
         child = self.children[exp_name]
         child.name = exp_name
         child.obj = exp
         child.update = child.update_datasets
Beispiel #5
0
 def update_datasets(self):
     all_files_name = '00_all_files'
     datasets = [(dirname_with_id(ds.description, ds.id), ds)
                 for ds in self.obj.datasets.all()]
     self.clear_children()
     for ds_name, ds in datasets:
         if ds_name == all_files_name:
             ds_name = '%s_dataset' % all_files_name
         child = self.children[ds_name]
         child.name = ds_name
         child.obj = ds
         child.update = child.update_dataset_files
     child = self.children[all_files_name]
     child.name = all_files_name
     child.obj = self.obj
     child.update = child.update_all_files
Beispiel #6
0
 def update_datasets(self):
     all_files_name = '00_all_files'
     datasets = [(dirname_with_id(ds.description, ds.id), ds)
                 for ds in self.obj.datasets.all()]
     self.clear_children()
     for ds_name, ds in datasets:
         if ds_name == all_files_name:
             ds_name = '%s_dataset' % all_files_name
         child = self.children[ds_name]
         child.name = ds_name
         child.obj = ds
         child.update = child.update_dataset_files
     child = self.children[all_files_name]
     child.name = all_files_name
     child.obj = self.obj
     child.update = child.update_all_files