From 763e54d3ec788f0bd973a22759317cbaf9dcbcb0 Mon Sep 17 00:00:00 2001 From: Chandrasekhar Ramakrishnan <chandrasekhar.ramakrishnan@id.ethz.ch> Date: Tue, 10 May 2016 15:57:20 +0200 Subject: [PATCH] SSDM-3554: Templates for methods in the interface. Implementation still needs to be filled out. --- src/python/pybis/pybis.py | 51 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/src/python/pybis/pybis.py b/src/python/pybis/pybis.py index c968523d073..b3a970a580b 100644 --- a/src/python/pybis/pybis.py +++ b/src/python/pybis/pybis.py @@ -16,7 +16,7 @@ import os class OpenbisCredentials: """Credentials for communicating with openBIS.""" - def __init__(self, token = None, uname_and_pass = None): + def __init__(self, token=None, uname_and_pass=None): """A connection can be authenticated either by a token or a username and password combination :param token: An authentication token for openBIS, can be None. :param uname_and_pass: A tuple with username and password, in that order. @@ -90,8 +90,55 @@ class Openbis: def login(self): """Log into openBIS. Expects credentials with username and password and updates the token on the credentials object. + Clients may want to store the credentials object in a credentials store after successful login. Throw a ValueError with the error message if login failed. """ if not self.credentials.has_username_and_password: raise ValueError('Cannot log into openBIS without a username and password') - # TODO Implement the logic of this method. + # TODO Implement the logic of this method. + + def is_token_valid(self): + """Check if the connection to openBIS is valid. + This method is useful to check if a token is still valid or if it has timed out, requiring the + user to login again. + :return: Return True if the token is valid, False if it is not valid. + """ + if not self.credentials.has_token(): + return False + # TODO Implement the logic of this method. + + def get_samples(self, sample_identifiers): + """Retrieve metadata for the sample. + Get metadata for the sample and any directly connected parents of the sample to allow access + to the same information visible in the ELN UI. The metadata will be on the file system. + :param sample_identifiers: A list of sample identifiers to retrieve. + """ + pass + # TODO Implement the logic of this method + + def get_samples_with_data(self, sample_identifiers): + """Retrieve metadata for the sample, like get_sample_metadata, but retrieve any data sets as well, + like get_data_set. + :param sample_identifiers: A list of sample identifiers to retrieve. + """ + pass + # TODO Implement the logic of this method + + def get_data_sets(self, data_set_identifiers): + """Retrieve data set metadata and content. + The metadata will be on the file system. The file will also include the location of the data. + """ + pass + # TODO Implement the logic of this method + + def create_data_set_from_notebook(self, path_to_notebook, owner_identifier, paths_to_files, + parent_identifiers): + """Register a new data set with openBIS. + :param path_to_notebook: The path to the Jupyter notebook that created this data set + :param owner_identifier: The identifier of the sample that owns this data set. + :param paths_to_files: A list of paths to files that should be in the data set. + :param parent_identifiers: A list of parents for the data set. + :return: + """ + pass + # TODO Implement the logic of this method -- GitLab