aboutsummaryrefslogtreecommitdiff
path: root/h-client/hlibrary.py
diff options
context:
space:
mode:
authorAntonio Gallo <tonicucoz@gmail.com>2011-04-08 06:02:24 +0000
committerAntonio Gallo <tonicucoz@gmail.com>2011-04-08 06:02:24 +0000
commit014fe46a53d8aa387b3f9f145b8b0b0982f06aa9 (patch)
treeec36e8be3bb081229084483757190f7177fc43de /h-client/hlibrary.py
parentefe7068c82e2ab60b3735645a65730b25070f23a (diff)
h-client:improved errors handling
Diffstat (limited to 'h-client/hlibrary.py')
-rw-r--r--h-client/hlibrary.py141
1 files changed, 75 insertions, 66 deletions
diff --git a/h-client/hlibrary.py b/h-client/hlibrary.py
index 8388984..46454ea 100644
--- a/h-client/hlibrary.py
+++ b/h-client/hlibrary.py
@@ -425,14 +425,15 @@ class Client:
result = self.request.perform('users/login/en')
self.request.setPost(None)
if result:
- if self.isLogged():
- return True
- else:
- self.errors.append("wrong username or password")
+ result_login = self.isLogged()
+ if result_login != -2:
+ if result_login:
+ return True
+ else:
+ self.errors.append("wrong username or password")
else:
self.errors.append("unable to connect to server")
- return -1
-
+
return False
#log out
@@ -450,20 +451,23 @@ class Client:
result = self.request.perform('client/userinfo/en')
if result:
- xmldoc = minidom.parseString(self.request.contents)
- status = xmldoc.getElementsByTagName("status")[0].childNodes[0].data
+ try:
+ xmldoc = minidom.parseString(self.request.contents)
+ status = xmldoc.getElementsByTagName("status")[0].childNodes[0].data
- username = ''
- token = ''
- groups = ''
+ username = ''
+ token = ''
+ groups = ''
- if status == 'logged':
- username = xmldoc.getElementsByTagName("username")[0].childNodes[0].data
- token = xmldoc.getElementsByTagName("token")[0].childNodes[0].data
- groups = xmldoc.getElementsByTagName("groups")[0].childNodes[0].data
+ if status == 'logged':
+ username = xmldoc.getElementsByTagName("username")[0].childNodes[0].data
+ token = xmldoc.getElementsByTagName("token")[0].childNodes[0].data
+ groups = xmldoc.getElementsByTagName("groups")[0].childNodes[0].data
- return {'status':status,'username':username,'token':token,'groups':groups}
-
+ return {'status':status,'username':username,'token':token,'groups':groups}
+ except:
+ self.errors.append("the server is not up-to-date: unable to parse the xml database")
+ return -2
else:
self.errors.append("unable to connect to server")
return False
@@ -473,8 +477,11 @@ class Client:
info = self.getUserInfo()
if info != False:
- if info['status'] == 'logged':
- return True
+ if info != -2:
+ if info['status'] == 'logged':
+ return True
+ else:
+ return -2
return False
@@ -553,7 +560,7 @@ class Client:
self.request.contents = ''
result = self.request.perform('download/all/en')
-
+ #print result
if result:
#loop the found devices
@@ -568,54 +575,56 @@ class Client:
#self.request.contents = ''
#result = self.request.perform('download/' + controller + '/en')
-
+
#parse the xml database
- xmldoc = minidom.parseString(self.request.contents)
- devices = xmldoc.getElementsByTagName("device")
- for device in devices:
-
- #check it is not a notebook
- deviceType = device.getElementsByTagName("type")[0].childNodes[0].data.encode('utf-8')
-
- if deviceType != 'notebook':
- code = device.getElementsByTagName("vendorid_productid")[0]
- if code.hasChildNodes():
- if (code.childNodes[0].data == vendorid_productid):
-
- modelName = device.getElementsByTagName("model_name")[0].childNodes[0].data.encode('utf-8')
- interface = device.getElementsByTagName("interface")[0].childNodes[0].data.encode('utf-8')
- distribution = device.getElementsByTagName("distribution")[0].childNodes[0].data.encode('utf-8')
- idDevice = device.getElementsByTagName("id")[0].childNodes[0].data.encode('utf-8')
- works = device.getElementsByTagName("it_works")[0].childNodes[0].data.encode('utf-8')
- year = device.getElementsByTagName("year")[0].childNodes[0].data.encode('utf-8')
-
- if device.getElementsByTagName("description")[0].hasChildNodes():
- description = device.getElementsByTagName("description")[0].childNodes[0].data.encode('utf-8')
- dev[0].setDescription(dev[0].htmlentitiesDecode(description))
- else:
- dev[0].setDescription('')
-
- if device.getElementsByTagName("kernel_libre")[0].hasChildNodes():
- kernel_libre = device.getElementsByTagName("kernel_libre")[0].childNodes[0].data.encode('utf-8')
- dev[0].setKernel(kernel_libre)
-
- #driverNode = device.getElementsByTagName("driver")[0]
- #if driverNode:
- #if driverNode.hasChildNodes():
- #driver = driverNode.childNodes[0].data.encode('utf-8')
- #dev[0].setDriver(driver)
-
-
- #print modelName
- dev[0].setModel(modelName)
- dev[0].setInterface(interface)
- dev[0].addDistributions(distribution)
- dev[0].setHowItWorks(works)
- dev[0].setYear(year)
- dev[2] = 'update'
- dev[3] = idDevice
+ try:
+ xmldoc = minidom.parseString(self.request.contents)
+ devices = xmldoc.getElementsByTagName("device")
+ for device in devices:
+
+ #check it is not a notebook
+ deviceType = device.getElementsByTagName("type")[0].childNodes[0].data.encode('utf-8')
+
+ if deviceType != 'notebook':
+ code = device.getElementsByTagName("vendorid_productid")[0]
+ if code.hasChildNodes():
+ if (code.childNodes[0].data == vendorid_productid):
+
+ modelName = device.getElementsByTagName("model_name")[0].childNodes[0].data.encode('utf-8')
+ interface = device.getElementsByTagName("interface")[0].childNodes[0].data.encode('utf-8')
+ distribution = device.getElementsByTagName("distribution")[0].childNodes[0].data.encode('utf-8')
+ idDevice = device.getElementsByTagName("id")[0].childNodes[0].data.encode('utf-8')
+ works = device.getElementsByTagName("it_works")[0].childNodes[0].data.encode('utf-8')
+ year = device.getElementsByTagName("year")[0].childNodes[0].data.encode('utf-8')
+
+ if device.getElementsByTagName("description")[0].hasChildNodes():
+ description = device.getElementsByTagName("description")[0].childNodes[0].data.encode('utf-8')
+ dev[0].setDescription(dev[0].htmlentitiesDecode(description))
+ else:
+ dev[0].setDescription('')
+
+ if device.getElementsByTagName("kernel_libre")[0].hasChildNodes():
+ kernel_libre = device.getElementsByTagName("kernel_libre")[0].childNodes[0].data.encode('utf-8')
+ dev[0].setKernel(kernel_libre)
+
+ #driverNode = device.getElementsByTagName("driver")[0]
+ #if driverNode:
+ #if driverNode.hasChildNodes():
+ #driver = driverNode.childNodes[0].data.encode('utf-8')
+ #dev[0].setDriver(driver)
+
+
+ #print modelName
+ dev[0].setModel(modelName)
+ dev[0].setInterface(interface)
+ dev[0].addDistributions(distribution)
+ dev[0].setHowItWorks(works)
+ dev[0].setYear(year)
+ dev[2] = 'update'
+ dev[3] = idDevice
+ except:
+ self.errors.append("the server is not up-to-date: unable to parse the xml database")
else:
- self._status = False
self.errors.append("unable to connect to server")