From 105117ebccdf5cecb3e33416287bec3f44e6cf2b Mon Sep 17 00:00:00 2001 From: Antonio Gallo Date: Thu, 7 Apr 2011 20:19:06 +0000 Subject: h-client:implemented submit button --- h-client/hlibrary.py | 79 +++++++++++++++++++++++++++++++++------------------- 1 file changed, 50 insertions(+), 29 deletions(-) (limited to 'h-client/hlibrary.py') diff --git a/h-client/hlibrary.py b/h-client/hlibrary.py index 974fced..8388984 100644 --- a/h-client/hlibrary.py +++ b/h-client/hlibrary.py @@ -113,7 +113,7 @@ class Device(object): self._post['comm_year'] = self._year; self._post['pci_id'] = self._vendorId + ':' + self._productId; self._post['interface'] = self._interface; - self._post['description'] = self.htmlentitiesDecode(self._description.replace("\n","\r\n")); + self._post['description'] = self._description.replace("\n","\r\n"); self._post['driver'] = self._driver; #replace the HTML entitites with utf-8 characters @@ -143,8 +143,9 @@ class Device(object): dis = ' , '.join(cleanDistros) #correct a strange python behaviour - if dis[0] == ' , ': - dis = dis[3:] + if dis != '': + if dis[0] == ' , ': + dis = dis[3:] return dis #add a distribution @@ -436,7 +437,13 @@ class Client: #log out def logout(self): - self.request.perform('users/logout/en') + result = self.request.perform('users/logout/en') + + if result: + return True + else: + self.errors.append("unable to connect to server") + return False #get info about the user logged def getUserInfo(self): @@ -458,15 +465,14 @@ class Client: return {'status':status,'username':username,'token':token,'groups':groups} else: - self._status = False self.errors.append("unable to connect to server") - return -1 + return False #return True if the user is logged, else return False def isLogged(self): info = self.getUserInfo() - if info != -1: + if info != False: if info['status'] == 'logged': return True @@ -481,7 +487,7 @@ class Client: return notice else: self.errors.append("unable to connect to server") - return -1 + return False def createDevices(self): @@ -585,7 +591,7 @@ class Client: if device.getElementsByTagName("description")[0].hasChildNodes(): description = device.getElementsByTagName("description")[0].childNodes[0].data.encode('utf-8') - dev[0].setDescription(description) + dev[0].setDescription(dev[0].htmlentitiesDecode(description)) else: dev[0].setDescription('') @@ -611,30 +617,45 @@ class Client: else: self._status = False self.errors.append("unable to connect to server") - - def submit(self): + + + def submit(self,deviceCode = None): for key,dev in self.devices.iteritems(): - dev[0].setPost() - post = dev[0].getPost() + if key == deviceCode or deviceCode == None: + dev[0].setPost() + post = dev[0].getPost() - #get the node controller - controller = self.getController(dev[1]) + #get the node controller + controller = self.getController(dev[1]) - #get the user info - info = self.getUserInfo() - token = info['token'] - - if dev[2] == 'update': + #get the user info + info = self.getUserInfo() + token = info['token'] + + post['from_client'] = 'yes' - post['id_hard'] = dev[3] - post['updateAction'] = 'update' - url = controller + '/update/en/' + token + if dev[2] == 'update': - elif dev[2] == 'insert': + post['id_hard'] = dev[3] + post['updateAction'] = 'update' + url = controller + '/update/en/' + token - post['insertAction'] = 'insert' - url = controller + '/insert/en/' + token + elif dev[2] == 'insert': - self.request.setPost(post) - self.request.perform(url.encode('utf-8')) - #print self.request.contents \ No newline at end of file + post['insertAction'] = 'insert' + url = controller + '/insert/en/' + token + + self.request.setPost(post) + self.request.perform(url.encode('utf-8')) + + #parse the response + xmldoc = minidom.parseString(self.request.contents) + deviceType = xmldoc.getElementsByTagName("status")[0].childNodes[0].data.encode('utf-8') + + notice = xmldoc.getElementsByTagName("notice")[0].childNodes[1].data.encode('utf-8') + self.errors.append(notice.lstrip().rstrip()) + + if deviceType == 'executed': + return True + else: + return False \ No newline at end of file -- cgit v1.2.3