Skip to content

Commit

Permalink
Small fixes for Orient 1.0 compatibility.
Browse files Browse the repository at this point in the history
  • Loading branch information
s17t committed Jun 6, 2012
1 parent cb80f7e commit f9b8e30
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 10 deletions.
27 changes: 18 additions & 9 deletions client.py
Expand Up @@ -105,17 +105,17 @@ def disconnect(self):
url = self.action['disconnect'] % (self.url)
self.request.get(url)

def database(self, name, credentials=ADMIN, create=False):
def database(self, name, credentials=ADMIN, create=False, storage='memory'):
"""Sends a request the server for a database
will both add new and query existing databases.
Returns a Datase object
"""
if create:
url = Database.action['post'] % (self.url, name)
url = Database.action['post'] % (self.url, name, storage)
response, content = self.request.post(url=url, data=None)

if response.status == 204:
if response.status == 200:
return self.database(name=name, credentials=ADMIN)
else:
raise CompassException(content)
Expand All @@ -138,15 +138,16 @@ class Database(BaseObject):
action = {
'connect': '%s/connect/%s',
'get': '%s/database/%s',
'post': '%s/database/%s',
'post': '%s/database/%s/%s',
'query': '%s/command/%s/%s/%s',
'cluster': '%s/cluster/%s/%s'
}

def __init__(self, url, name, credentials, data=None):
def __init__(self, url, name, credentials, lang='sql', data=None):
super(Database, self).__init__(data=None)

self.url = url
self.lang = lang
self.name = name
self.credentials = credentials
self.request = Request(username=credentials[0],
Expand Down Expand Up @@ -215,15 +216,20 @@ def klass(self, name, limit=20, create=False):
if response.status == 200:
data = json.loads(content)

return Klass(database=self, name=name,
documents=data['result'])
else:
if data.has_key('result'):
data = data['result']
else:
data = None;

return Klass(database=self, name=name,
documents=data)
else:
raise CompassException(content)

def query(self, query, klass=None):
"""Sends a reqeust to the server based on a query"""
query = urllib.quote(query)
url = self.action['query'] % (self.url, self.name, self.name, query)
url = self.action['query'] % (self.url, self.name, self.lang, query)
response, content = self.request.post(url, data={})

if response.status == 200:
Expand All @@ -238,6 +244,7 @@ def query(self, query, klass=None):

def document(self, rid=None, class_name=None, **data):
if rid:
rid = rid.replace("#", "", 1)
url = Document.action['get'] % (self.url, self.name, rid)
response, content = self.request.get(url)

Expand Down Expand Up @@ -378,6 +385,8 @@ class Document(BaseObject):

def __init__(self, rid, data, database=None, klass=None):
super(Document, self).__init__(data)

rid = rid.replace("#", "", 1)

self.rid = rid
self.database = database
Expand Down
6 changes: 5 additions & 1 deletion request.py
Expand Up @@ -286,7 +286,11 @@ def _request(self, method, url, data={}, headers={}):
if isinstance(data, (str, unicode)) and data.startswith('http://'):
body = data
else:
body = self._json_encode(data, ensure_ascii=True)
## OrientDB reset Socket if body is '{}'
if data is not None and len(data) > 0 :
body = self._json_encode(data, ensure_ascii=True)
else:
body = '';
try:
response, content = http.request(url, method, headers=headers,
body=body)
Expand Down

0 comments on commit f9b8e30

Please sign in to comment.