def main(): cm = ConnectionManager() connection = cm.get_connection() # create_classes(connection) insert_rows(connection, "descriptors", descriptors, "descriptor") insert_rows(connection, "schools", schools, "school") insert_rows(connection, "subschools", subschools, "subschool")
def main(): socketQue = myQueue() messenger = Messenger() randomM = RandomMatchMaker(socketQue, messenger) cManager = ConnectionManager(socketQue, messenger) randomM.start() cManager.start()
def testSendJob(): print '=' * 60 print '-' * 20, 'testSendJob', '-'* 20 manager = ConnectionManager() processor = Processor(4) protocol = Protocol() newSock = AsynClientSocket() connection = SocketConnection(newSock, protocol, processor) manager.addConnection(newSock.getFileNo(), connection) assert len(manager) == 1 newSock.status.addStatus(CONST.STATUS_WF) connection.genJobs() assert processor.list[-1].__doc__ == "Protocol.handleConnected" connection.send("test", 5) connection.genJobs() assert processor.list[-1].__doc__ == "AsynClientSocket.sendImpl" assert connection.status.has(CONST.STATUS_C) print newSock.dump() print processor.dump() print '-' * 20, 'test done', '-' * 20 print '=' * 60
class HazelcastClient: def __init__(self,host='localhost',port=5701,username='******',password='******'): self.__connectionManager = ConnectionManager() self.__connectionManager.setCredentials( (host, port) , username, password) self.__connection = self.__connectionManager.getConnection() self.__connection.connect() self.__generalClientProxy = GeneralClientProxy(self.__connection) def close(self): self.__connectionManager.closeAll() def instances(self): return self.__generalClientProxy.instances() def members(self): return self.__generalClientProxy.members() def ping(self): return self.__generalClientProxy.ping() def destroy(self, type, name): return self.__generalClientProxy.destroy(type,name) def getMap(self,name): return MapClientProxy(name,self.__connection) def getQueue(self,name): return QueueClientProxy(name,self.__connection) def clusterTime(self): return self.__generalClientProxy.clusterTime() def partitions(self,key=None): return self.__generalClientProxy.partitions(key)
def apriScheda(self, uvID=None): if uvID == None: self.isApriScheda = True return self.identificaSchedaEsistente() else: if not self.checkActionSpatialFromId( "Apri scheda", uvID, True ): return QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) self.chiudiSchedaAperta() self.uvScheda = uvID self.scheda = self.recuperaScheda( uvID ) self.connect( self.scheda, SIGNAL("closed()"), self.onSchedaChiusa) if self.scheda._ID == None: # salva la scheda e imposta la geometria come abbinata a scheda try: QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) ConnectionManager.startTransaction() self.scheda.save() AutomagicallyUpdater._updateValue( { "ABBINATO_A_SCHEDA" : '1' }, "GEOMETRIE_RILEVATE_NUOVE_O_MODIFICATE", "ID_UV_NEW", uvID ) except ConnectionManager.AbortedException, e: QMessageBox.critical(self, "Errore", e.toString()) return finally:
def testModificaVia(self, comune, via, ID): via = QString( via ).toUpper() try: QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) ConnectionManager.startTransaction() # verifica se il nuovo indirizzo esiste già nuovoID = AutomagicallyUpdater.Query( "SELECT ID_INDIRIZZO FROM INDIRIZZO_VIA WHERE ZZ_COMUNIISTATCOM = ? AND VIA = ?", [comune, via] ).getFirstResult() if nuovoID == None: # il nuovo non esiste, aggiorna il vecchio self._updateValue( { 'VIA' : via, 'ZZ_COMUNIISTATCOM' : comune }, 'INDIRIZZO_VIA', 'ID_INDIRIZZO', ID ) elif nuovoID == ID: # nessuna modifica, non salvare return False else: # aggiorna i valori nella tabella di normalizzazione # se duplicati non aggiornarli (verranno rimossi nella query successiva) self._updateValue( { 'INDIRIZZO_VIAID_INDIRIZZO' : nuovoID }, 'LOCALIZZAZIONE_EDIFICIO_INDIRIZZO_VIA', 'INDIRIZZO_VIAID_INDIRIZZO', ID, "LOCALIZZAZIONE_EDIFICIOIDLOCALIZZ NOT IN (SELECT LOCALIZZAZIONE_EDIFICIOIDLOCALIZZ FROM LOCALIZZAZIONE_EDIFICIO_INDIRIZZO_VIA WHERE INDIRIZZO_VIAID_INDIRIZZO = ?)", [nuovoID] ) # rimuovi quelli non aggiornati nella query precedente poiché sarebbero stati dei duplicati self._deleteValue( 'LOCALIZZAZIONE_EDIFICIO_INDIRIZZO_VIA', { 'INDIRIZZO_VIAID_INDIRIZZO' : ID } ) # aggiorna i civici self._updateValue( { 'INDIRIZZO_VIAID_INDIRIZZO' : nuovoID }, 'NUMERI_CIVICI', 'INDIRIZZO_VIAID_INDIRIZZO', ID ) # elimina il vecchio indirizzo self._deleteValue( 'INDIRIZZO_VIA', { 'ID_INDIRIZZO' : ID } ) except ConnectionManager.AbortedException, e: QMessageBox.critical(self, "Errore", e.toString()) return False
def rimuoviVoce(self, row=None): if row == None: selItems = self.table.selectedRanges() if len(selItems) <= 0: return row = selItems[0].topRow() if self._ID != None: # rimuovi dal db item = self.table.item(row, 0) if item != None: ID = item.data(Qt.UserRole).toString() if ID != None: ConnectionManager.startTransaction() # elimina il valore self._deleteValue(self._tableWithValues, {self._tableWithValuesPkColumn: ID}) # elimina la riga dalla tabella di normalizzazione values = { self._pkColumn: self._ID, self._parentPkColumn: ID } self._deleteValue(self._tableName, values) ConnectionManager.endTransaction() # rimuovi dalla vista self.table.removeRow(row) self.dataChanged()
def creaNuovaGeometria(self, polygon=None): action = self.btnCreaNuovaGeometria.toolTip() if not self.checkActionScale( action, self.SCALE_MODIFY ): self.polygonDrawer.startCapture() self.polygonDrawer.stopCapture() self.btnCreaNuovaGeometria.setChecked(False) return if polygon == None: return self.polygonDrawer.startCapture() wkb = QByteArray(polygon.asWkb()) # TODO: fai qui i test sul poligono if not self.checkActionSpatialFromWkb( action, wkb, self.srid ): self.btnCreaNuovaGeometria.setChecked(False) return try: QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) ConnectionManager.startTransaction() # inserisce la nuova geometria nel layer if None == AutomagicallyUpdater._insertGeometriaNuova( wkb, self.srid ): return False except ConnectionManager.AbortedException, e: QMessageBox.critical(self, "Errore", e.toString()) return False
def _onQueryError(self, query, error, widget=None): msg = u"ERROR executing a query:\n\tquery: %s\n\terror: %s\n\twidget: %s" % ( query, error, widget) if self.DEBUG: print msg.encode('utf-8') else: ConnectionManager.abortTransaction(msg)
def rimuoviVoce(self, row=None): if row == None: selItems = self.table.selectedRanges() if len(selItems) <= 0: return row = selItems[0].topRow() if self._ID != None: # rimuovi dal db item = self.table.item(row, 0) if item != None: ID = item.data( Qt.UserRole ).toString() if ID != None: ConnectionManager.startTransaction() # elimina il valore self._deleteValue( self._tableWithValues, { self._tableWithValuesPkColumn : ID } ) # elimina la riga dalla tabella di normalizzazione values = { self._pkColumn : self._ID, self._parentPkColumn : ID } self._deleteValue( self._tableName, values ) ConnectionManager.endTransaction() # rimuovi dalla vista self.table.removeRow(row) self.dataChanged()
def closeEvent(self, event): self.disconnect(self.iface, SIGNAL("projectRead()"), self.reloadLayersFromProject) self.disconnect(self.iface, SIGNAL("newProjectCreated()"), self.close) self.destroyPrinter() self.storeLastUsedExtent() self.chiudiSchedaAperta() self.removeLayersFromCanvas() TemporaryFile.clear() ConnectionManager.closeConnection() self.disconnect(self.iface.mapCanvas(), SIGNAL( "mapToolSet(QgsMapTool *)" ), self.toolChanged) del self.status self.nuovaPointEmitter.deleteLater() del self.nuovaPointEmitter self.esistentePointEmitter.deleteLater() del self.esistentePointEmitter self.fotoPointEmitter.deleteLater() del self.fotoPointEmitter self.polygonDrawer.deleteLater() del self.polygonDrawer self.lineDrawer.deleteLater() del self.lineDrawer ManagerWindow.instance = None self.emit( SIGNAL("closed()") ) return QDockWidget.closeEvent(self, event)
def ripulisciGeometrie(self): try: QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) # avvisa l'utente segnalando quante UV si stanno per eliminare # quindi chiedi se vuole davvero eliminarle numUV = AutomagicallyUpdater.Query( "SELECT count(*) FROM GEOMETRIE_RILEVATE_NUOVE_O_MODIFICATE AS gm1 WHERE (gm1.ZZ_STATO_GEOMETRIAID <> '2' /* non spezzate */ AND gm1.ID_UV_NEW NOT IN (SELECT GEOMETRIE_RILEVATE_NUOVE_O_MODIFICATEID_UV_NEW FROM SCHEDA_UNITA_VOLUMETRICA) /* senza scheda associata */ ) OR (gm1.ZZ_STATO_GEOMETRIAID = '2' /* spezzate */ AND 0 = (SELECT count(*) FROM GEOMETRIE_RILEVATE_NUOVE_O_MODIFICATE as gm2 JOIN SCHEDA_UNITA_VOLUMETRICA AS uv ON gm2.ID_UV_NEW = uv.GEOMETRIE_RILEVATE_NUOVE_O_MODIFICATEID_UV_NEW WHERE gm1.GEOMETRIE_UNITA_VOLUMETRICHE_ORIGINALI_DI_PARTENZACODICE = gm2.GEOMETRIE_UNITA_VOLUMETRICHE_ORIGINALI_DI_PARTENZACODICE) /* fanno parte dello stesso edificio */ ) /* i cui pezzi sono tutti senza geometria associata */" ).getFirstResult() except: raise finally: QApplication.restoreOverrideCursor() if numUV == None: return if int(numUV) <= 0: QMessageBox.information(self, "Nessuna geometria trovata", "Non esistono geometrie senza scheda associata." ) return if QMessageBox.Ok != QMessageBox.warning(self, "Eliminazione geometrie non associate", u"Esistono %s geometrie senza alcuna scheda associata. Vuoi eliminarle? L'operazione non è reversibile." % numUV, QMessageBox.Ok|QMessageBox.Cancel ): return try: QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) ConnectionManager.startTransaction() # eliminazione geometrie non associate ad alcuna scheda: vedi query precedente AutomagicallyUpdater._deleteGeometria( None, "ID_UV_NEW IN (SELECT gm1.ID_UV_NEW FROM GEOMETRIE_RILEVATE_NUOVE_O_MODIFICATE AS gm1 WHERE (gm1.ZZ_STATO_GEOMETRIAID <> '2' /* non spezzate */ AND gm1.ID_UV_NEW NOT IN (SELECT GEOMETRIE_RILEVATE_NUOVE_O_MODIFICATEID_UV_NEW FROM SCHEDA_UNITA_VOLUMETRICA) /* senza scheda associata */ ) OR (gm1.ZZ_STATO_GEOMETRIAID = '2' AND 0 = (SELECT count(*) FROM GEOMETRIE_RILEVATE_NUOVE_O_MODIFICATE as gm2 JOIN SCHEDA_UNITA_VOLUMETRICA AS uv ON gm2.ID_UV_NEW = uv.GEOMETRIE_RILEVATE_NUOVE_O_MODIFICATEID_UV_NEW WHERE gm1.GEOMETRIE_UNITA_VOLUMETRICHE_ORIGINALI_DI_PARTENZACODICE = gm2.GEOMETRIE_UNITA_VOLUMETRICHE_ORIGINALI_DI_PARTENZACODICE)))" ) except ConnectionManager.AbortedException, e: QMessageBox.critical(self, "Errore", e.toString()) return
def run(self): print("Server Starting Up.") self.connection_manager = ConnectionManager() print("Connection Manager Started") self.connection_manager.start_accepting_connections() print("Connection Manager is now Accepting New Connections") while True: self.connection_manager.manage_connections() stackless.run()
def __init__(self, my_port=50082, core_node_host=None, core_node_port=None): self.server_state = STATE_INIT print("initializing server") self.my_ip = self.__get_myip() print('Server IP address is set to ... ', self.my_ip) self.my_port = my_port self.cm = ConnectionManager(self.my_ip, self.my_port) self.core_node_host = core_node_host self.core_node_port = core_node_port
def btnDeleteTabClicked(self): try: QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) ConnectionManager.startTransaction() self.deleteTab() except Exception, e: if isinstance(e, ConnectionManager.AbortedException): QMessageBox.critical(self, "Errore", e.toString()) return False raise
def btnDeleteTabClicked(self): refreshCanvas = False try: QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) ConnectionManager.startTransaction() refreshCanvas = self.deleteTab() except ConnectionManager.AbortedException, e: QMessageBox.critical(self, "Errore", e.toString()) return False
def aggiungiRilevatore(self): if self.nomeEdit.text().isEmpty() or self.cognomeEdit.text().isEmpty(): return try: QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) ConnectionManager.startTransaction() self._insertRilevatore(self.nomeEdit.text(), self.cognomeEdit.text(), self.getValue(self.comuneCombo)) except ConnectionManager.AbortedException, e: QMessageBox.critical(self, "Errore", e.toString()) return False
def __init__(self): self.tcpCon = ConnectionManager('tcp') self.tcpCon.addClient('169.254.99.212', 9003) #self.tcpCon.addClient('192.168.2.5', 9002) self.pub = rospy.Publisher('/RosAria/cmd_vel', Twist, queue_size=10) self.subscriber = rospy.Subscriber("/camera/image_raw", Image, self.callback, queue_size=1) rospy.on_shutdown(self.shutdown)
def testProxy(keyword, fileReader): cm = ConnectionManager() cm._get_connection() response = cm.request("**REDACTED**").read() # TODO: hardcoded # response = cm.request("http://icanhazip.com/").read() # TODO: change soup = BeautifulSoup(response, "lxml") data = "" for extract in soup.find_all(text=re.compile(keyword + '*')): data += str(extract) + '\n' for extract in soup.find_all('a'): if re.search(keyword, str(extract), re.IGNORECASE): data += str(extract) + '\n' for extract in soup.find_all('href'): if re.search(keyword, str(extract), re.IGNORECASE): data += str(extract) + '\n' for extract in soup.find_all('span'): if re.search(keyword, str(extract), re.IGNORECASE): data += str(extract) + '\n' for extract in soup.find_all('button'): if re.search(keyword, str(extract), re.IGNORECASE): data += str(extract) + '\n' # append comparitor so is included in gitignore fileReader = fileReader + "_comparitor" comparitor = "" # determine if file exist if os.path.isfile(fileReader) == True: # required for reading. there might be a more optimum step to do this r = open(fileReader, "r") comparitor = r.read() else: # this is the first run, no need to alert file = open(fileReader, "w") file.write(data) comparitor = data return 0 try: file = open(fileReader, "w") if data != comparitor: file.write(data) return 1 else: file.write(data) return 0 except: file.write(data) return 0
def assegnaGeomEsistenteByUvID(self, uvID=None): QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) index = self.addTab() currentTab = self.tabWidget.widget(index) currentTab.setUV( uvID ) # aggiorna le info di DEBUG sulla UV # imposta la geometria come abbinata a scheda try: QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) ConnectionManager.startTransaction() AutomagicallyUpdater._updateValue( { "ABBINATO_A_SCHEDA" : '1' }, "GEOMETRIE_RILEVATE_NUOVE_O_MODIFICATE", "ID_UV_NEW", uvID ) except ConnectionManager.AbortedException, e: QMessageBox.critical(self, "Errore", e.toString()) return
def eliminaRilevatore(self): ID = self.getValue(self.rilevatoriTable) if ID == None: return # elimina il rilevatore try: QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) ConnectionManager.startTransaction() if not self._deleteValue('RILEVATORE', {'ID': ID}): return except ConnectionManager.AbortedException, e: QMessageBox.critical(self, "Errore", e.toString()) return False
def eliminaRilevatore(self): ID = self.getValue(self.rilevatoriTable) if ID == None: return # elimina il rilevatore try: QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) ConnectionManager.startTransaction() if not self._deleteValue( 'RILEVATORE', { 'ID' : ID } ): return except ConnectionManager.AbortedException, e: QMessageBox.critical(self, "Errore", e.toString()) return False
class Server: def __init__(self): self.connection_manager = None self.logger = None def run(self): print("Server Starting Up.") self.connection_manager = ConnectionManager() print("Connection Manager Started") self.connection_manager.start_accepting_connections() print("Connection Manager is now Accepting New Connections") while True: self.connection_manager.manage_connections() stackless.run()
class BountyCloudVS: def __init__(self): self.tcpCon = ConnectionManager('tcp') self.tcpCon.addClient('169.254.99.212', 9003) #self.tcpCon.addClient('192.168.2.5', 9002) self.pub = rospy.Publisher('/RosAria/cmd_vel', Twist, queue_size=10) self.subscriber = rospy.Subscriber("/camera/image_raw", Image, self.callback, queue_size = 1) rospy.on_shutdown(self.shutdown) def shutdown(self): # stop the robot self.robot_vel(0,0) # write out the success and fails? def robot_vel(self, forward, angular): twist = Twist() twist.linear.x = forward twist.linear.y = 0 twist.linear.z = 0 twist.angular.x = 0 twist.angular.y = 0 twist.angular.z = angular self.pub.publish(twist) ## t0 -----callback----- def callback(self, ros_data): print("got an image!!!") #self.curTime = time.time() #self.timeDelta = self.curTime - self.prevTime #self.prevTime = self.curTime #print("time from last image is {}".format(self.timeDelta)) ### get image data from camera and process it (don't use ROS just use openCV) self.image = bytearray(ros_data.data) self.image = np.array(self.image, dtype="uint8").reshape(HEIGHT,WIDTH,CHANNELS) hsv = cv2.cvtColor(self.image,cv2.COLOR_BGR2HSV) ORANGE_MIN = np.array([5, 125, 100],np.uint8) ORANGE_MAX = np.array([20, 255, 255],np.uint8) reducedimg = cv2.inRange(hsv,ORANGE_MIN, ORANGE_MAX) self.tcpCon.send(str(reducedimg))
def eliminaScheda(self, codice=None): if codice == None: self.isApriScheda = False return self.identificaSchedaEsistente() else: if not self.checkActionSpatialFromId( "Elimina scheda", codice, True ): return # se c'è una scheda aperta verifica se si stia per eliminare quella if self.scheda != None: schedaID = AutomagicallyUpdater.Query( "SELECT SCHEDA_EDIFICIOID FROM SCHEDA_UNITA_VOLUMETRICA WHERE GEOMETRIE_RILEVATE_NUOVE_O_MODIFICATEID_UV_NEW = ?", [ codice ] ).getFirstResult() if schedaID != None: # esiste una scheda uv associata alla geometria aperta = schedaID == self.scheda._ID else: # geometria non associata a una scheda uv # potrebbe però essere una nuova uv selezionata nella scheda # aperta e per questo non ancora salvata aperta = AutomagicallyUpdater.Query( "SELECT ABBINATO_A_SCHEDA FROM GEOMETRIE_RILEVATE_NUOVE_O_MODIFICATE WHERE ID_UV_NEW = ?", [ codice ] ).getFirstResult() == '1' if aperta: QMessageBox.warning( self, "Eliminazione scheda", u"La geometria selezionata appartiene alla scheda edificio aperta. Prima di proseguire è necessario chiudere la scheda.", QMessageBox.Ok ) self.scheda.setMinimized( False ) return QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) # avvisa l'utente segnalando quante UV sono collegate a questa scheda # quindi chiedi se vuole davvero eliminare la scheda numUV = AutomagicallyUpdater.Query( "SELECT count(*) FROM SCHEDA_UNITA_VOLUMETRICA WHERE SCHEDA_EDIFICIOID IN (SELECT ed.ID FROM SCHEDA_EDIFICIO AS ed JOIN SCHEDA_UNITA_VOLUMETRICA AS uv ON uv.SCHEDA_EDIFICIOID = ed.ID WHERE uv.GEOMETRIE_RILEVATE_NUOVE_O_MODIFICATEID_UV_NEW = ?)", [codice] ).getFirstResult() QApplication.restoreOverrideCursor() if numUV == None: return if QMessageBox.Ok != QMessageBox.warning( self, "Eliminazione scheda", u"La scheda ha %s UV associate. Eliminare? L'operazione non è reversibile." % numUV, QMessageBox.Ok|QMessageBox.Cancel ): return # elimina la scheda scheda = self.recuperaScheda( codice ) try: QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) ConnectionManager.startTransaction() scheda.delete() except ConnectionManager.AbortedException, e: QMessageBox.critical(self, "Errore", e.toString()) return
def __init__(self,protoPathList, mesgHandle, excludeProtos, sourceId, requestId=0): self.messageDict = MessageSpecDict() inputImpl = ControlInputer() outputImpl = ControlOutputer(sys.stdout) self.inputer = MessageInputCore(inputImpl) self.outputer = MessageOutputCore(outputImpl) self.foutputer = MessageOutputCore(JsonOutputer(None)) self.finputer = MessageInputCore(JsonInputer(None)) from ConnectionManager import ConnectionManager self.connectionManager = ConnectionManager(self) self.variables = {} self.sourceId = sourceId self.onConnected = DSignal() self.onConnectFailed = DSignal() ######## self.requsetId = requestId ######## try: parser = ProtoParser() for p in protoPathList: parser.parse(p,self.messageDict,excludeProtos) except exceptions.Exception,ex: print(str(type(ex)) + ":" + str(ex))
def _insertValue(self, name2valueDict, table, pk): query = ConnectionManager.getNewQuery( AutomagicallyUpdater.EDIT_CONN_TYPE ) if query == None: return if name2valueDict == None: name2valueDict = {} IDComune = self._getIDComune() IDRilevatore = self._getIDRilevatore() progressivo = self._getProgressivoID() macAddress = self._getMacAddress() fields = QStringList() values = QStringList() bindValues = [] if pk != None: fields << pk values << "'" + IDComune + "-'||strftime('%Y%m%d%H%M%S', 'now')||'-" + macAddress + "-" + str(progressivo) + "_" + IDRilevatore + "'" for name, value in name2valueDict.iteritems(): fields << name if value == None and QString(name).startsWith( "ZZ" ): value = self.VALORE_NON_INSERITO elif isinstance(value, (buffer, QByteArray)): bindValues.append( value ) value = '?' else: value = self._getDBStrValue(value) values << value # memorizza la riga query.prepare( "INSERT INTO " + table + " (" + fields.join(", ") + ") VALUES (" + values.join(", ") + ")" ) for v in bindValues: query.addBindValue( QVariant(v) if v != None else QVariant() ) if not query.exec_(): self._onQueryError( query.lastQuery(), query.lastError().text(), self ) return ROWID = query.lastInsertId().toString() # restituisce ROWID if pk == None: ROWID = None if ROWID.isEmpty() else ROWID if self.DEBUG: print ">>>", query.lastQuery().toUtf8(), " >>> ROWID = ", ROWID return ROWID # recupera il valore della pk insertQuery = query.lastQuery() query.prepare( "SELECT " + pk + " FROM " + table + " WHERE ROWID = ?" ) query.addBindValue( ROWID ) if not query.exec_() or not query.next(): self._onQueryError( query.lastQuery(), query.lastError().text(), self ) return ID = query.value(0).toString() if self.DEBUG: print ">>>", insertQuery.toUtf8(), " >>> pk = ", ID, ">>> ROWID =", ROWID return ID
def loadLayerFoto(self): # carica il layer con le foto if QgsMapLayerRegistry.instance().mapLayer( ManagerWindow.VLID_FOTO ) == None: ManagerWindow.VLID_FOTO = '' query = "SELECT ROWID AS pk, ID, MakePoint(GEOREF_PROIET_X, GEOREF_PROIET_Y, 3003) AS geometria FROM FOTO_GEOREF WHERE geometria IS NOT NULL" conn = ConnectionManager.getConnection() uri = QgsDataSourceURI() uri.setDatabase(conn.databaseName()) uri.setDataSource('', "(%s)" % query, 'geometria', '', 'pk') vl = QgsVectorLayer( uri.uri(), self.LAYER_FOTO, "spatialite" ) if vl == None or not vl.isValid() or not vl.setReadOnly(True): return False # imposta lo stile del layer style_path = os.path.join( currentPath, ManagerWindow.STYLE_FOLDER, ManagerWindow.STYLE_FOTO ) (errorMsg, result) = vl.loadNamedStyle( style_path ) self.iface.legendInterface().refreshLayerSymbology(vl) ManagerWindow.VLID_FOTO = self._getLayerId(vl) self._addMapLayer(vl) # set custom property vl.setCustomProperty( "loadedByOmeroRTPlugin", QVariant("VLID_FOTO") ) return True
class BountyCloudVS: def __init__(self): self.tcpCon = ConnectionManager('tcp') self.tcpCon.addClient('169.254.99.212', 9003) #self.tcpCon.addClient('192.168.2.5', 9002) self.pub = rospy.Publisher('/RosAria/cmd_vel', Twist, queue_size=10) self.subscriber = rospy.Subscriber("/camera/image_raw", Image, self.callback, queue_size=1) rospy.on_shutdown(self.shutdown) def shutdown(self): # stop the robot self.robot_vel(0, 0) # write out the success and fails? def robot_vel(self, forward, angular): twist = Twist() twist.linear.x = forward twist.linear.y = 0 twist.linear.z = 0 twist.angular.x = 0 twist.angular.y = 0 twist.angular.z = angular self.pub.publish(twist) ## t0 -----callback----- def callback(self, ros_data): print("got an image!!!") #self.curTime = time.time() #self.timeDelta = self.curTime - self.prevTime #self.prevTime = self.curTime #print("time from last image is {}".format(self.timeDelta)) ### get image data from camera and process it (don't use ROS just use openCV) self.image = bytearray(ros_data.data) self.image = np.array(self.image, dtype="uint8").reshape(HEIGHT, WIDTH, CHANNELS) hsv = cv2.cvtColor(self.image, cv2.COLOR_BGR2HSV) ORANGE_MIN = np.array([5, 125, 100], np.uint8) ORANGE_MAX = np.array([20, 255, 255], np.uint8) reducedimg = cv2.inRange(hsv, ORANGE_MIN, ORANGE_MAX) self.tcpCon.send(str(reducedimg))
def assegnaGeomEsistenteByUvID(self, uvID=None): QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) index = self.addTab() currentTab = self.tabWidget.widget(index) currentTab.setUV(uvID) # aggiorna le info di DEBUG sulla UV # imposta la geometria come abbinata a scheda try: QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) ConnectionManager.startTransaction() AutomagicallyUpdater._updateValue( {"ABBINATO_A_SCHEDA": '1'}, "GEOMETRIE_RILEVATE_NUOVE_O_MODIFICATE", "ID_UV_NEW", uvID) except ConnectionManager.AbortedException, e: QMessageBox.critical(self, "Errore", e.toString()) return
def copiaGeometria(self, feat): if feat == None: return try: QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) ConnectionManager.startTransaction() # copia la geometria selezionata nel layer delle geometrie nuove o modificate codice = feat.attributeMap()[0].toString() ID = AutomagicallyUpdater._insertGeometriaCopiata( codice ) if ID == None: return except ConnectionManager.AbortedException, e: QMessageBox.critical(None, "Errore", e.toString()) return
def testAddSocket(): print '=' * 60 print '-' * 20, 'testAddSocket', '-'* 20 manager = ConnectionManager() processor = Processor(4) protocol = Protocol() newSock = AsynClientSocket() connection = SocketConnection(newSock, protocol, processor) manager.addConnection(newSock.getFileNo(), connection) assert len(manager) == 1 newSock.status.addStatus(CONST.STATUS_UD) manager.clean() assert len(manager) == 0 print '-' * 20, 'test done', '-' * 20 print '=' * 60
def testModificaVia(self, comune, via, ID): via = QString(via).toUpper() try: QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) ConnectionManager.startTransaction() # verifica se il nuovo indirizzo esiste già nuovoID = AutomagicallyUpdater.Query( "SELECT ID_INDIRIZZO FROM INDIRIZZO_VIA WHERE ZZ_COMUNIISTATCOM = ? AND VIA = ?", [comune, via]).getFirstResult() if nuovoID == None: # il nuovo non esiste, aggiorna il vecchio self._updateValue({ 'VIA': via, 'ZZ_COMUNIISTATCOM': comune }, 'INDIRIZZO_VIA', 'ID_INDIRIZZO', ID) elif nuovoID == ID: # nessuna modifica, non salvare return False else: # aggiorna i valori nella tabella di normalizzazione # se duplicati non aggiornarli (verranno rimossi nella query successiva) self._updateValue( {'INDIRIZZO_VIAID_INDIRIZZO': nuovoID}, 'LOCALIZZAZIONE_EDIFICIO_INDIRIZZO_VIA', 'INDIRIZZO_VIAID_INDIRIZZO', ID, "LOCALIZZAZIONE_EDIFICIOIDLOCALIZZ NOT IN (SELECT LOCALIZZAZIONE_EDIFICIOIDLOCALIZZ FROM LOCALIZZAZIONE_EDIFICIO_INDIRIZZO_VIA WHERE INDIRIZZO_VIAID_INDIRIZZO = ?)", [nuovoID]) # rimuovi quelli non aggiornati nella query precedente poiché sarebbero stati dei duplicati self._deleteValue('LOCALIZZAZIONE_EDIFICIO_INDIRIZZO_VIA', {'INDIRIZZO_VIAID_INDIRIZZO': ID}) # aggiorna i civici self._updateValue({'INDIRIZZO_VIAID_INDIRIZZO': nuovoID}, 'NUMERI_CIVICI', 'INDIRIZZO_VIAID_INDIRIZZO', ID) # elimina il vecchio indirizzo self._deleteValue('INDIRIZZO_VIA', {'ID_INDIRIZZO': ID}) except ConnectionManager.AbortedException, e: QMessageBox.critical(self, "Errore", e.toString()) return False
def getQuery(self): query = ConnectionManager.getNewQuery(self.connType) if query == None: return query.prepare(self.query) for p in self.params: query.addBindValue( "%s" % p if p != None else QVariant() ) return query
def getQuery(self): query = ConnectionManager.getNewQuery(self.connType) if query == None: return query.prepare(self.query) for p in self.params: query.addBindValue("%s" % p if p != None else QVariant()) return query
def __init__(self,protoPathList,metaPath,mesgHandle): self.messageDict = MessageSpecDict() inputImpl = ControlInputer() outputImpl = ControlOutputer(sys.stdout) self.inputer = MessageInputCore(inputImpl) self.outputer = MessageOutputCore(outputImpl) self.foutputer = MessageOutputCore(JsonOutputer(None)) self.finputer = MessageInputCore(JsonInputer(None)) from ConnectionManager import ConnectionManager self.connectionManager = ConnectionManager(self) self.variables = {} parser = ProtoParser() for p in protoPathList: parser.parse(p,self.messageDict) #print self.messageDict.codeDict self.customHandle = mesgHandle self.customHandle.setView(self)
def setDBConnection(self): path = self.getPathToDB() while( path != None ): if ConnectionManager.setConnection(path): return True QMessageBox.critical(self, "RT Omero", "Connessione non riuscita. \nImpossibile collegarsi al database %s" % path ) path = self.getPathToDB(True) return False
def __init__(self): self.tcpCon = ConnectionManager('tcp') self.tcpCon.addClient('169.254.99.212', 9003) #self.tcpCon.addClient('192.168.2.5', 9002) self.pub = rospy.Publisher('/RosAria/cmd_vel', Twist, queue_size=10) self.subscriber = rospy.Subscriber("/camera/image_raw", Image, self.callback, queue_size = 1) rospy.on_shutdown(self.shutdown)
def _updateValue(self, name2valueDict, table, pk, ID, filterStr=None, filterParams=None): query = ConnectionManager.getNewQuery( AutomagicallyUpdater.EDIT_CONN_TYPE) if query == None: return if name2valueDict == None or len(name2valueDict) <= 0: return ID assignments = QStringList() bindValues = [] for name, value in name2valueDict.iteritems(): if value == None and QString(name).startsWith("ZZ"): value = self.VALORE_NON_INSERITO elif isinstance(value, (buffer, QByteArray)): bindValues.append(value) value = '?' else: value = self._getDBStrValue(value) assignments << "%s = %s" % (name, value) whereClauses = QStringList() if pk != None: whereClauses << pk + " = ?" bindValues.append(ID) if filterStr != None: whereClauses << "%s" % filterStr if filterParams != None: bindValues.extend(filterParams) whereStr = '' if whereClauses.count() > 0: whereStr = " WHERE " + whereClauses.join(" AND ") # aggiorna la riga query.prepare("UPDATE " + table + " SET " + assignments.join(", ") + whereStr) for v in bindValues: query.addBindValue(QVariant(v) if v != None else QVariant()) if not query.exec_(): self._onQueryError(query.lastQuery(), query.lastError().text(), self) return if self.DEBUG: print ">>>", query.lastQuery().toUtf8(), " >>> pk = ", ID return ID
def login(self): QtGui.QApplication.setOverrideCursor( QtGui.QCursor(QtCore.Qt.WaitCursor)) address = str(self.diag_ui.address.text()) port = str(self.diag_ui.port.text()) username = str(self.diag_ui.userName.text()) if not self.diag_ui.cartaoAuth.isChecked() and not username: QtGui.QApplication.restoreOverrideCursor() return if not address or not port: QtGui.QApplication.restoreOverrideCursor() return if not ConnectionManager.is_ip_address(address) or not self.valid_port( port): QtGui.QApplication.restoreOverrideCursor() return if self.diag_ui.cartaoAuth.isChecked(): user = SuperUser(ccutils=self.ccutils) else: user = SuperUser(username) try: self.comm = ConnectionManager(address, port, self, user) except ConnectionManagerError: QtGui.QApplication.restoreOverrideCursor() self.show_error("Connection ERROR") return else: self.connect(self.comm, self.comm.signal, self.updateChat) self.connect(self.comm, self.comm.list_signal, self.list_users) self.connect(self.comm, self.comm.error_signal, self.show_error) self.connect(self.comm, self.comm.change_list, self.change_listitem) self.connect(self.comm, self.comm.append_msg_id, self.append_id) self.connect(self.comm, self.comm.append_self_msg, self.append_self_msg) if self.diag_ui.radioButton.isChecked(): self.cipher_suite = 1 else: self.cipher_suite = 2 QtGui.QApplication.restoreOverrideCursor() return self.login_dialog.accept()
def get_spells(): cm = ConnectionManager() es = Elasticsearch() sql = """ SELECT s.id, s.name, s.description, s.action, s.components, s.`range`, s.effect, s.duration, s.saving_throw, s.spell_resistance, s.source_book, sch.school, sub.subschool, group_concat(c.class) as class, group_concat(sbc.spell_level) as spell_level FROM spells s INNER JOIN spells_by_class sbc ON sbc.spell_id = s.id inner join classes c on sbc.class_id = c.id inner join schools sch on sch.id = s.school_id left join subschools sub on s.subschool_id = sub.id GROUP BY s.id; """ connection = cm.get_connection() cursor = connection.cursor(MySQLdb.cursors.DictCursor) cursor.execute(sql) resultSet = cursor.fetchall() for row in resultSet: row["class_levels"] = dict( zip(row["class"].split(","), row["spell_level"].split(","))) row["components"] = row["components"].decode('string_escape') del (row["class"]) del (row["spell_level"]) es.index(index="pfspells", doc_type='spell', id=row["id"], body=row)
def __init__(self): UPnPDevice.__init__(self, AVTransport(), ConnectionManager(), RenderingControl()) self.set_prop(self.PROP_UPNP_FRIENDLY_NAME, "MediaBox Media Renderer") self.set_prop(self.PROP_UPNP_UDN, "uuid:e09c6bee-7939-4fff-bf26-8d1f30ca6153") self.set_prop(self.PROP_UPNP_DEVICE_TYPE, "urn:schemas-upnp-org:device:MediaRenderer:2") self.set_prop(self.PROP_UPNP_SERVICE_PORT, 47806)
def get_spells(): cm = ConnectionManager() es = Elasticsearch() sql = """ SELECT s.id, s.name, s.description, s.action, s.components, s.`range`, s.effect, s.duration, s.saving_throw, s.spell_resistance, s.source_book, sch.school, sub.subschool, group_concat(c.class) as class, group_concat(sbc.spell_level) as spell_level FROM spells s INNER JOIN spells_by_class sbc ON sbc.spell_id = s.id inner join classes c on sbc.class_id = c.id inner join schools sch on sch.id = s.school_id left join subschools sub on s.subschool_id = sub.id GROUP BY s.id; """ connection = cm.get_connection() cursor = connection.cursor(MySQLdb.cursors.DictCursor) cursor.execute(sql) resultSet = cursor.fetchall() for row in resultSet: row["class_levels"] = dict(zip(row["class"].split(","),row["spell_level"].split(","))) row["components"] = row["components"].decode('string_escape') del(row["class"]) del(row["spell_level"]) es.index(index="pfspells", doc_type='spell', id=row["id"], body=row)
def ServiceEntryPoint(self): ConnectionManager().checkServer() lastProgressUpdate = datetime.today() startupComplete = False #interval_FullSync = 600 #interval_IncrementalSync = 300 #cur_seconds_fullsync = interval_FullSync #cur_seconds_incrsync = interval_IncrementalSync user = UserClient() player = Player() ws = WebSocketThread() lastFile = None while not self.KodiMonitor.abortRequested(): if self.KodiMonitor.waitForAbort(1): # Abort was requested while waiting. We should exit break if xbmc.Player().isPlaying(): try: playTime = xbmc.Player().getTime() totalTime = xbmc.Player().getTotalTime() currentFile = xbmc.Player().getPlayingFile() if(player.played_information.get(currentFile) != None): player.played_information[currentFile]["currentPosition"] = playTime # send update td = datetime.today() - lastProgressUpdate secDiff = td.seconds if(secDiff > 3): try: player.reportPlayback() except Exception, msg: self.logMsg("Exception reporting progress: %s" % msg) pass lastProgressUpdate = datetime.today() # only try autoplay when there's 20 seconds or less remaining and only once! if (totalTime - playTime <= 20 and (lastFile==None or lastFile!=currentFile)): lastFile = currentFile player.autoPlayPlayback() except Exception, e: self.logMsg("Exception in Playback Monitor Service: %s" % e) pass
def _insertGeometria(self, wkb=None, srid=-1, codice=None, stato=1): query = ConnectionManager.getNewQuery( AutomagicallyUpdater.EDIT_CONN_TYPE ) if query == None: return IDComune = self._getIDComune() IDRilevatore = self._getIDRilevatore() progressivo = self._getProgressivoID() macAddress = self._getMacAddress() IDGeometria = "'" + IDComune + "-'||strftime('%Y%m%d%H%M%S', 'now')||'-" + macAddress + "-" + str(progressivo) + "_" + IDRilevatore + "'" # costruisci la query insertStr = "INSERT INTO GEOMETRIE_RILEVATE_NUOVE_O_MODIFICATE (ID_UV_NEW, GEOMETRIE_UNITA_VOLUMETRICHE_ORIGINALI_DI_PARTENZACODICE, ZZ_STATO_GEOMETRIAID, ABBINATO_A_SCHEDA, geometria)" if wkb != None: query.prepare( insertStr + " VALUES ( %s, ?, ?, '0', ST_GeomFromWKB(?, ?) )" % IDGeometria ) query.addBindValue( codice if codice != None else QVariant() ) query.addBindValue( stato if stato != None else self.VALORE_NON_INSERITO ) query.addBindValue( wkb ) query.addBindValue( srid ) elif codice != None: query.prepare( insertStr + " SELECT %s, CODICE, ?, '0', geometria FROM GEOMETRIE_UNITA_VOLUMETRICHE_ORIGINALI_DI_PARTENZA WHERE CODICE = ?" % IDGeometria ) query.addBindValue( stato if stato != None else self.VALORE_NON_INSERITO ) query.addBindValue( codice ) else: raise Exception( "AutomagicallyUpdater._insertGeometria() chiamata senza i dovuti parametri" ) # memorizza la geometria if not query.exec_(): self._onQueryError( query.lastQuery(), query.lastError().text(), self ) return ROWID = query.lastInsertId().toString() # restituisce ROWID # recupera il valore della pk insertQuery = query.lastQuery() query.prepare( "SELECT ID_UV_NEW FROM GEOMETRIE_RILEVATE_NUOVE_O_MODIFICATE WHERE ROWID = ?" ) query.addBindValue( ROWID ) if not query.exec_() or not query.next(): self._onQueryError( query.lastQuery(), query.lastError().text(), self ) return ID = query.value(0).toString() if self.DEBUG: print ">>>", insertQuery.toUtf8(), ">>> pk =", ID, ">>> ROWID =", ROWID return ID
def _deleteValue(self, table, name2valueDict=None, filterStr=None, filterParams=None): query = ConnectionManager.getNewQuery( AutomagicallyUpdater.EDIT_CONN_TYPE) if query == None: return False if name2valueDict == None: name2valueDict = {} whereClauses = QStringList() bindValues = [] for name, value in name2valueDict.iteritems(): if value == None and QString(name).startsWith("ZZ"): value = self.VALORE_NON_INSERITO elif isinstance(value, (buffer, QByteArray)): bindValues.append(value) value = '?' else: value = self._getDBStrValue(value) if value != None: whereClauses << "%s = %s" % (name, value) else: whereClauses << "%s IS %s" % (name, value) if filterStr != None: whereClauses << "%s" % filterStr if filterParams != None: bindValues.extend(filterParams) whereStr = '' if whereClauses.count() > 0: whereStr = " WHERE " + whereClauses.join(" AND ") query.prepare("DELETE FROM " + table + whereStr) for v in bindValues: query.addBindValue(QVariant(v) if v != None else QVariant()) # elimina if not query.exec_(): self._onQueryError(query.lastQuery(), query.lastError().text(), self) return False if self.DEBUG: print ">>>", query.lastQuery().toUtf8() return True
def startPlugin(self): if not self.setDBConnection(): return False AutomagicallyUpdater._reset() from DlgSceltaRilevatore import DlgSceltaRilevatore if not DlgSceltaRilevatore().exec_(): if not self.startedYet: ConnectionManager.closeConnection() return False self.startedYet = True # try to restore position from stored main window state if not self.iface.mainWindow().restoreDockWidget(self): self.iface.mainWindow().addDockWidget(Qt.LeftDockWidgetArea, self) # force show even if it was restored as hidden self.show() self.activateWindow() self.raise_() QApplication.processEvents( QEventLoop.ExcludeUserInputEvents ) return True
def _updateValue(self, name2valueDict, table, pk, ID, filterStr=None, filterParams=None): query = ConnectionManager.getNewQuery( AutomagicallyUpdater.EDIT_CONN_TYPE ) if query == None: return if name2valueDict == None or len(name2valueDict) <= 0: return ID assignments = QStringList() bindValues = [] for name, value in name2valueDict.iteritems(): if value == None and QString(name).startsWith( "ZZ" ): value = self.VALORE_NON_INSERITO elif isinstance(value, (buffer, QByteArray)): bindValues.append( value ) value = '?' else: value = self._getDBStrValue(value) assignments << "%s = %s" % (name, value) whereClauses = QStringList() if pk != None: whereClauses << pk + " = ?" bindValues.append( ID ) if filterStr != None: whereClauses << "%s" % filterStr if filterParams != None: bindValues.extend( filterParams ) whereStr = '' if whereClauses.count() > 0: whereStr = " WHERE " + whereClauses.join(" AND ") # aggiorna la riga query.prepare( "UPDATE " + table + " SET " + assignments.join(", ") + whereStr ) for v in bindValues: query.addBindValue( QVariant(v) if v != None else QVariant() ) if not query.exec_(): self._onQueryError( query.lastQuery(), query.lastError().text(), self ) return if self.DEBUG: print ">>>", query.lastQuery().toUtf8(), " >>> pk = ", ID return ID
def _deleteValue(self, table, name2valueDict=None, filterStr=None, filterParams=None): query = ConnectionManager.getNewQuery( AutomagicallyUpdater.EDIT_CONN_TYPE ) if query == None: return False if name2valueDict == None: name2valueDict = {} whereClauses = QStringList() bindValues = [] for name, value in name2valueDict.iteritems(): if value == None and QString(name).startsWith( "ZZ" ): value = self.VALORE_NON_INSERITO elif isinstance(value, (buffer, QByteArray)): bindValues.append( value ) value = '?' else: value = self._getDBStrValue(value) if value != None: whereClauses << "%s = %s" % (name, value) else: whereClauses << "%s IS %s" % (name, value) if filterStr != None: whereClauses << "%s" % filterStr if filterParams != None: bindValues.extend( filterParams ) whereStr = '' if whereClauses.count() > 0: whereStr = " WHERE " + whereClauses.join(" AND ") query.prepare( "DELETE FROM " + table + whereStr ) for v in bindValues: query.addBindValue( QVariant(v) if v != None else QVariant() ) # elimina if not query.exec_(): self._onQueryError( query.lastQuery(), query.lastError().text(), self ) return False if self.DEBUG: print ">>>", query.lastQuery().toUtf8() return True
def _insertRilevatore(self, nome, cognome, IDComune): query = ConnectionManager.getNewQuery( AutomagicallyUpdater.EDIT_CONN_TYPE ) if query == None: return if IDComune == None: IDComune = self._getIDComune() IDRilevatore = "'" + IDComune + "-'|| CASE WHEN count(ID) > 0 THEN max(SUBSTR(ID, 10))+1 ELSE 1 END" # memorizza il rilevatore query.prepare( "INSERT INTO RILEVATORE (ID, NOME, COGNOME) SELECT " + IDRilevatore + ", ?, ? FROM RILEVATORE WHERE ID LIKE '" + IDComune + "%'" ) query.addBindValue( QString(nome).toUpper() ) query.addBindValue( QString(cognome).toUpper() ) if not query.exec_(): self._onQueryError( query.lastQuery(), query.lastError().text(), self ) return return query.lastInsertId().toString()
def _updateGeometria(self, ID, wkb, srid=-1): if ID == None: return query = ConnectionManager.getNewQuery( AutomagicallyUpdater.EDIT_CONN_TYPE ) if query == None: return query.prepare( "UPDATE GEOMETRIE_RILEVATE_NUOVE_O_MODIFICATE SET geometria = ST_GeomFromWKB(?, ?) WHERE ID_UV_NEW = ?" ) query.addBindValue( wkb ) query.addBindValue( srid ) query.addBindValue( ID ) if not query.exec_(): self._onQueryError( query.lastQuery(), query.lastError().text(), self ) return if self.DEBUG: print ">>>", query.lastQuery().toUtf8(), ">>> pk =", ID return ID
class Models(object): def __init__(self): self.cm = ConnectionManager() self.es = Elasticsearch() self.builder = Builder() self.connection = self.cm.get_connection() def save_to_mysql(self, sql): cursor = self.connection.cursor() cursor.execute(sql) return cursor def save_to_elastic_search(self, index, doc_type, body): self.es.index(index=index, doc_type=doc_type, body=body) def get_from_es(self, index, doc_type, body): return self.es.search(index=index, doc_type=doc_type, body=body) def get_exact_from_es(self, field, term): return self.builder.constant_score().filter().term(field, term).build()
def Initialize(port, functionMap={}, asyncHandler = None): global __executors, __connMan, __parser, __p, __initialized, __ready __executors = { 'busy' : (lambda x: Response('busy'), False), 'ready' : (__isReady, False), 'alive' : (lambda x: Response('alive', True), False) } for m in functionMap: if isinstance(functionMap[m], types.FunctionType): __executors[m] = (functionMap[m], False) elif isinstance(functionMap[m], tuple): __executors[m] = functionMap[m] else: print 'Element in function map is not a function nor a tuple: ' + repr(functionMap[m]) __connMan = ConnectionManager(port) __parser = CommandParser(asyncHandler) __p = threading.Thread(target=__MainThread) __p.daemon = True __initialized = True
def _insertRilevatore(self, nome, cognome, IDComune): query = ConnectionManager.getNewQuery( AutomagicallyUpdater.EDIT_CONN_TYPE) if query == None: return if IDComune == None: IDComune = self._getIDComune() IDRilevatore = "'" + IDComune + "-'|| CASE WHEN count(ID) > 0 THEN max(SUBSTR(ID, 10))+1 ELSE 1 END" # memorizza il rilevatore query.prepare("INSERT INTO RILEVATORE (ID, NOME, COGNOME) SELECT " + IDRilevatore + ", ?, ? FROM RILEVATORE WHERE ID LIKE '" + IDComune + "%'") query.addBindValue(QString(nome).toUpper()) query.addBindValue(QString(cognome).toUpper()) if not query.exec_(): self._onQueryError(query.lastQuery(), query.lastError().text(), self) return return query.lastInsertId().toString()
def _updateGeometria(self, ID, wkb, srid=-1): if ID == None: return query = ConnectionManager.getNewQuery( AutomagicallyUpdater.EDIT_CONN_TYPE) if query == None: return query.prepare( "UPDATE GEOMETRIE_RILEVATE_NUOVE_O_MODIFICATE SET geometria = ST_GeomFromWKB(?, ?) WHERE ID_UV_NEW = ?" ) query.addBindValue(wkb) query.addBindValue(srid) query.addBindValue(ID) if not query.exec_(): self._onQueryError(query.lastQuery(), query.lastError().text(), self) return if self.DEBUG: print ">>>", query.lastQuery().toUtf8(), ">>> pk =", ID return ID
class ServerCore: def __init__(self, my_port=50082, core_node_host=None, core_node_port=None): self.server_state = STATE_INIT print("initializing server") self.my_ip = self.__get_myip() print('Server IP address is set to ... ', self.my_ip) self.my_port = my_port self.cm = ConnectionManager(self.my_ip, self.my_port) self.core_node_host = core_node_host self.core_node_port = core_node_port def start(self): self.server_state = STATE_STANDBY self.cm.start() def join_network(self): if self.central_host is not None: self.server_state = STATE_CONNECTED_TO_NETWORK self.cm.join_network(self.core_node_host, self.core_node_port) else : print('This server is running as Genesis Core Node ...') def shutdown(self): self.server_state = STATE_SHUTTING_DOWN print('shutdown server') self.cm.connection_close() def get_my_current_state(self): return self.server_state def __get_muip(self): s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect(('8.8.8.8',80)) return s.getsockname()[0]
class AppChat(QtGui.QMainWindow, t.Ui_MainWindow): def __init__(self, parent=None, ccutils=None): super(AppChat, self).__init__(parent) self.ccutils = ccutils self.comm = None self.messages = [] self.setupUi(self) self.login_dialog = QtGui.QDialog() self.diag_ui = Ui_Dialog() self.diag_ui.setupUi(self.login_dialog) self.diag_ui.pushButton.clicked.connect(self.login) self.diag_ui.cartaoAuth.clicked.connect(self.ccChoose) self.sendButton.clicked.connect(self.sendMsg) self.listWidget.itemDoubleClicked.connect(self.connect_to_user) self.msgBox.installEventFilter(self) self.actionRSA_WITH_AES_128.triggered.connect( self.change_client_clientRSA) self.actionECDHE_WITH_AES_128.triggered.connect( self.change_client_clientDH) self.cipher_suite = None if ccutils is None: self.diag_ui.cartaoAuth.setDisabled(True) accept = self.login_dialog.exec_() if accept == 0: quit() if not self.comm.s_connect(cipher_suite=self.cipher_suite): self.show_error("ERRO a ligar ao servidor") quit() self.comm.get_user_lists() def login(self): QtGui.QApplication.setOverrideCursor( QtGui.QCursor(QtCore.Qt.WaitCursor)) address = str(self.diag_ui.address.text()) port = str(self.diag_ui.port.text()) username = str(self.diag_ui.userName.text()) if not self.diag_ui.cartaoAuth.isChecked() and not username: QtGui.QApplication.restoreOverrideCursor() return if not address or not port: QtGui.QApplication.restoreOverrideCursor() return if not ConnectionManager.is_ip_address(address) or not self.valid_port( port): QtGui.QApplication.restoreOverrideCursor() return if self.diag_ui.cartaoAuth.isChecked(): user = SuperUser(ccutils=self.ccutils) else: user = SuperUser(username) try: self.comm = ConnectionManager(address, port, self, user) except ConnectionManagerError: QtGui.QApplication.restoreOverrideCursor() self.show_error("Connection ERROR") return else: self.connect(self.comm, self.comm.signal, self.updateChat) self.connect(self.comm, self.comm.list_signal, self.list_users) self.connect(self.comm, self.comm.error_signal, self.show_error) self.connect(self.comm, self.comm.change_list, self.change_listitem) self.connect(self.comm, self.comm.append_msg_id, self.append_id) self.connect(self.comm, self.comm.append_self_msg, self.append_self_msg) if self.diag_ui.radioButton.isChecked(): self.cipher_suite = 1 else: self.cipher_suite = 2 QtGui.QApplication.restoreOverrideCursor() return self.login_dialog.accept() def change_client_clientRSA(self): if self.actionECDHE_WITH_AES_128.isChecked(): self.actionECDHE_WITH_AES_128.toggle() def change_client_clientDH(self): if self.actionRSA_WITH_AES_128.isChecked(): self.actionRSA_WITH_AES_128.toggle() def sendMsg(self): text = self.msgBox.toPlainText() if not text or text == "\n": return self.comm.send_client_comm(text) self.msgBox.clear() def list_users(self, user_list): self.listWidget.clear() for user in user_list: if user['id'] == self.comm.user.id: continue item = UserListItem(user['name'], user['id']) self.listWidget.addItem(item) def ccChoose(self): if self.diag_ui.cartaoAuth.isChecked(): self.diag_ui.userName.setDisabled(True) else: self.diag_ui.userName.setDisabled(False) def append_self_msg(self, msg, id): if msg == QtCore.QString.fromLatin1("/top", len("/top")): self.messages.append(["<p><img src=\"a.png\"/></p>", id, False]) self.textBrowser.append("<p style=\"color:red\">(eu)> " + "<p><img src=\"a.png\"/></p>" + "</p>") else: self.messages.append([msg, id, False]) self.textBrowser.append("<span><p style=\"color:red\">(eu)> " + msg + "</p><span>") def append_id(self, id, recieved): self.textBrowser.clear() for i in self.messages: if i[2] is None: self.textBrowser.append( "<span><p>" + i[1] + "> " + QtCore.QString.fromLatin1(i[0], len(i[0])) + "</p></span>") else: if i[1] == id: i[2] = True if i[2]: self.textBrowser.append( "<span><p style=\"color:green\">(eu)> " + QtCore.QString.fromLatin1(i[0], len(i[0])) + "</p><span>") elif not i[2]: self.textBrowser.append( "<span><p style=\"color:red\">(eu)> " + QtCore.QString.fromLatin1(i[0], len(i[0])) + "</p><span>") return def change_listitem(self, uid): for i in xrange(self.listWidget.count()): item = self.listWidget.item(i) if item.user_id == uid: if item.num == 0: new_text = item.user_name + " (new messages)" item.setText(new_text) item.num += 1 else: new_text = item.user_name + " (" + str(item.num) + ")" item.setText(new_text) item.num += 1 item.setTextColor(QtGui.QColor(_fromUtf8("red"))) def connect_to_user(self, item): self.messages = [] self.textBrowser.clear() self.textBrowser.setPlainText("Connecting to " + item.user_name) if self.actionRSA_WITH_AES_128.isChecked(): self.comm.start_client_connect(item.user_id, cipher_suite=1) elif self.actionECDHE_WITH_AES_128.isChecked(): self.comm.start_client_connect(item.user_id, cipher_suite=2) else: self.comm.start_client_connect(item.user_id, cipher_suite=1) item.setText(item.user_name) item.num = 0 item.setTextColor(QtGui.QColor(_fromUtf8("black"))) self.setWindowTitle("I am " + QtCore.QString.fromLatin1( self.comm.user.name, len(self.comm.user.name)) + ", talking to " + item.user_name) def updateChat(self, text): if repr(text) == repr('/\x00t\x00o\x00p\x00'): self.messages.append([ "<p><img src=\"a.png\"/></p>", self.comm.peers[self.comm.peer_connected].name, None ]) self.textBrowser.append( self.comm.peers[self.comm.peer_connected].name + "> <p><img src=\"a.png\"/></p>") else: self.messages.append( [text, self.comm.peers[self.comm.peer_connected].name, None]) self.textBrowser.append( "<span><p>" + self.comm.peers[self.comm.peer_connected].name + "> " + QtCore.QString.fromLatin1(text, len(text)) + "</p></span>") def show_error(self, error): errorDiag = QtGui.QMessageBox() errorDiag.setIcon(QtGui.QMessageBox.Critical) errorDiag.setText(error) errorDiag.setWindowTitle("Error") errorDiag.setStandardButtons(QtGui.QMessageBox.Ok) errorDiag.exec_() def eventFilter(self, obj, event): if event.type() == QtCore.QEvent.KeyPress and obj == self.msgBox: if event.key() == QtCore.Qt.Key_Return: self.sendMsg() return True return QtGui.QMainWindow.eventFilter(self, obj, event) @staticmethod def valid_port(s): try: p = int(s) if 0 < p <= 65535: return True else: return False except ValueError: return False