Implementation of a Python client-side resource

The PYTHON client allow, as much as the previously explained Java client, communication with the Cytomine Web API. This client was developed to be integrated as a library in Python app. We use it the same way than the Java client :

The differences between the clients are mainly due to the respective language constraints. We will describe the way to define a model in Python for the resource User without the details common with the Java client and previously explained on its page.

#Models
class Model(object):

   def __init__(self, params = None):
       if (params != None):
           self.parse(params)

   def parse(self, params = None):
       obj = json.loads(params)
       print obj
       self.__dict__ = obj

   def toJSON(self):
       return json.dumps(self.__dict__)

   def isNew(self):
       return not hasattr(self, "id")


class User(Model):

   def __init__(self, params = None):
       super(User, self).__init__(params)
       self._callback_identifier = "user"

   def toURL(self):
       if (hasattr(self, "id")):
           return "user/%d.json" % self.id
       else:
           return "user.json"

   def __str__( self ):
       return "User : " + str(self.id)


[...]
cytomine = Cytomine("http://localhost:8080", "dupond", "pass") 

//Add the user johndoe
user = cytomine.addUser("johndoe", "Password","John", "Doe") 

//Display name/firstname of all the users
users = cytomine.getUsers()
for user in users.data():
    print "%s %s" % (user.firstname,user.lastname)

[...]