def deRegisterUser(self, userName): #(long userID):    
        
        ''' To do:
                Remove the entries for the userID from the DB
                Remember to deregister from the jabber server as well apart from this. 
            '''
        try:
            u = User.get(User.username==userName)
            sensorObjects = SensorUserRel.select().where(SensorUserRel.user==u)
            for i in sensorObjects:
                i.delete_instance()
            queryObjects = Query.select().where(Query.username==u)
            for i in queryObjects:
                i.delete_instance()
            u.delete_instance()
        except User.DoesNotExist:
            print 'User ' + str(userName) + ' does not exist. Returning delete ACK anyway.'
        except:
            print 'Unknown error; returning!'
            return
        
        print str(userName) + " deleted successfully!"
        self.msgHandler.send_message(mto=str(self.rMessage['from']).split("/")[0], msubject="De-Registration Successful", mbody="Thank you!")

        return
 def storeQueryInDB(self, qObj):
     ''' To do:
     Parse parameters of query from the received msg and store it in DB
     '''
     foundFlag = False
     try:
         uname = User.get(User.username==str(self.qMessage['from']).split("@")[0])
         foundFlag = True
     except User.DoesNotExist:
         print "User not in DB"
         return False
     
     qResults = Query.select().where(Query.queryNo==str(qObj['queryNo'])).count()
     if(qResults!=0):
         print 'Discarding message for queryNo: ' + str(qObj['queryNo']) + ' as it already existed in DB'
         return False
     
     if foundFlag:
         q = Query()
         q.username = uname
         q.queryNo = str(qObj['queryNo'])
         q.dataReqd = str(qObj['dataReqd'])
         if 'frequency' in qObj:
             q.frequency = eval(str(qObj['frequency']))
         else:
             q.frequency = 0
         if 'latitude' in qObj:
             q.Latitude = eval(str(qObj['latitude']))
         else:
             q.Latitude = -1.0
         if 'longitude' in qObj:
             q.Longitude = eval(str(qObj['longitude']))
         else:
             q.Longitude = -1.0
         q.fromTime = datetime.datetime.fromtimestamp(eval(str(qObj['fromTime']))/1000)
         q.toTime = datetime.datetime.fromtimestamp(eval(str(qObj['toTime']))/1000)
         q.expiryTime = datetime.datetime.fromtimestamp(eval(str(qObj['expiryTime']))/1000)
         q.Location = 'hardcoded'#str(qObj['location'])
         if 'activity' in qObj:
             q.Activity = str(qObj['activity'])
         else:
             q.Activity = "Don't Care"
         q.countMin = eval(str(qObj['countMin']))
         q.countMax = eval(str(qObj['countMax']))
         q.countReceived = 0
         if 'radius' in qObj:
             q.Radius = eval(str(qObj['radius']))
         else:
             q.Radius = -1
         
         q.save()    
         self.queryDBObject = q
                
         if(self.queryPossible()):
             self.sendAcknowledgement(True)
             return True
         else:
             self.sendAcknowledgement(False)
             return False