def get(self, path, local_path = None, num_threads = DEFAULT_NUMBER_OF_THREADS, **options): """ Get a reference to the data object at the specified `path'. Only download the object if the local_path is a string (specifying a path in the local filesystem to use as a destination file). """ parent = self.sess.collections.get(irods_dirname(path)) # TODO: optimize if local_path: self._download(path, local_path, num_threads = num_threads, **options) query = self.sess.query(DataObject)\ .filter(DataObject.name == irods_basename(path))\ .filter(DataObject.collection_id == parent.id)\ .add_keyword(kw.ZONE_KW, path.split('/')[1]) if hasattr(self.sess,'ticket__'): query = query.filter(Collection.id != 0) # a no-op, but necessary because CAT_SQL_ERR results if the ticket # is for a DataObject and we don't explicitly join to Collection results = query.all() # get up to max_rows replicas if len(results) <= 0: raise ex.DataObjectDoesNotExist() return iRODSDataObject(self, parent, results)
def data_objects(self): query = self.manager.sess.query(DataObject)\ .filter(DataObject.collection_id == self.id) results = query.all() return [ iRODSDataObject(self.manager.sess.data_objects, self, row) for row in results ]
def data_objects(self): query = self.manager.sess.query(DataObject)\ .filter(DataObject.collection_id == self.id) results = query.all() grouped = itertools.groupby(results, operator.itemgetter(DataObject.id)) return [ iRODSDataObject(self.manager.sess.data_objects, self, list(replicas)) for _, replicas in grouped ]
def get(self, path): parent = self.sess.collections.get(dirname(path)) query = self.sess.query(DataObject)\ .filter(DataObject.name == basename(path))\ .filter(DataObject.collection_id == parent.id) results = query.all() if len(results) <= 0: raise DataObjectDoesNotExist() return iRODSDataObject(self, parent, results)
def get(self, path): try: parent = self.sess.collections.get(dirname(path)) except CollectionDoesNotExist: raise DataObjectDoesNotExist() query = self.sess.query(DataObject)\ .filter(DataObject.name == basename(path))\ .filter(DataObject.collection_id == parent.id) results = query.all() if len(results) <= 0: raise DataObjectDoesNotExist() return iRODSDataObject(self, parent, results)
def get(self, path): try: parent = self.sess.collections.get(dirname(path)) except CollectionDoesNotExist: raise DataObjectDoesNotExist() query = self.sess.query(DataObject)\ .filter(DataObject.name == basename(path))\ .filter(DataObject.collection_id == parent.id) try: result = query.one() except NoResultFound: raise DataObjectDoesNotExist() return iRODSDataObject(self, parent, result)
def get(self, path, file=None, **options): parent = self.sess.collections.get(irods_dirname(path)) # TODO: optimize if file: self._download(path, file, **options) query = self.sess.query(DataObject)\ .filter(DataObject.name == irods_basename(path))\ .filter(DataObject.collection_id == parent.id) results = query.all() # get up to max_rows replicas if len(results) <= 0: raise ex.DataObjectDoesNotExist() return iRODSDataObject(self, parent, results)
def get(self, path, file=None, **options): parent = self.sess.collections.get(irods_dirname(path)) # TODO: optimize if file: self._download(path, file, **options) query = self.sess.query(DataObject)\ .filter(DataObject.name == irods_basename(path))\ .filter(DataObject.collection_id == parent.id)\ .add_keyword(kw.ZONE_KW, path.split('/')[1]) results = query.all() # get up to max_rows replicas if len(results) <= 0: raise ex.DataObjectDoesNotExist() # workaround incompatibility of irodsclient-0.8.2 and iRODS server 3.x for r in results: if DataObject.resc_hier not in r: r[DataObject.resc_hier] = None return iRODSDataObject(self, parent, results)
def get(self, path, local_path=None, num_threads=DEFAULT_NUMBER_OF_THREADS, **options): parent = self.sess.collections.get(irods_dirname(path)) # TODO: optimize if local_path: self._download(path, local_path, num_threads=num_threads, **options) query = self.sess.query(DataObject)\ .filter(DataObject.name == irods_basename(path))\ .filter(DataObject.collection_id == parent.id)\ .add_keyword(kw.ZONE_KW, path.split('/')[1]) results = query.all() # get up to max_rows replicas if len(results) <= 0: raise ex.DataObjectDoesNotExist() return iRODSDataObject(self, parent, results)