From f0642eddbc63ddce456c2e1e45759529319c2904 Mon Sep 17 00:00:00 2001
From: Swen Vermeul <swen@ethz.ch>
Date: Tue, 7 Feb 2017 15:01:45 +0100
Subject: [PATCH] added a __iter__ function to iterate through Samples,
 Experiments, DataSets etc.

---
 src/python/PyBis/pybis/pybis.py | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/src/python/PyBis/pybis/pybis.py b/src/python/PyBis/pybis/pybis.py
index de27079c3e2..2101c4bc97a 100644
--- a/src/python/PyBis/pybis/pybis.py
+++ b/src/python/PyBis/pybis/pybis.py
@@ -8,6 +8,7 @@ Work with openBIS from Python.
 
 """
 
+from __future__ import print_function
 import os
 import requests
 from requests.packages.urllib3.exceptions import InsecureRequestWarning
@@ -501,15 +502,16 @@ class Openbis:
     (minimum version 16.05).
     """
 
-    def __init__(self, url='https://localhost:8443', verify_certificates=True, token=None):
+    def __init__(self, url, verify_certificates=True, token=None):
         """Initialize a new connection to an openBIS server.
-
         :param host:
         """
 
         url_obj = urlparse(url)
         if  url_obj.netloc is None:
             raise ValueError("please provide the url in this format: https://openbis.host.ch:8443")
+        if url_obj.hostname is None:
+            raise ValueError("hostname is missing")
 
         self.url_obj = url_obj
         self.url     = url_obj.geturl()
@@ -1406,7 +1408,7 @@ class Openbis:
         if additional_attributes is None:
             additional_attributes = []
 
-        attributes = ['code', 'description', *additional_attributes, 'modificationDate']
+        attributes = ['code', 'description'] + additional_attributes + ['modificationDate']
 
         search_request = {}
         fetch_options = {}
@@ -2725,6 +2727,12 @@ class Things():
                 # invoke the openbis.get_entity() method
                 return getattr(self.openbis, 'get_'+self.entity)(row[self.identifier_name].values[0])
 
+    def __iter__(self):
+        for item in self.df[[self.identifier_name]][self.identifier_name].iteritems():
+            yield getattr(self.openbis, 'get_'+self.entity)(item[1]) 
+
+        #return self.df[[self.identifier_name]].to_dict()[self.identifier_name]
+
 
 class Experiment(OpenBisObject):
     """ 
-- 
GitLab