Small fixes with networking, and disabling inspection for the cookie database movement.

This commit is contained in:
AccentuSoft
2022-01-02 16:09:27 +02:00
parent a17452d53c
commit 10d291a6df
5 changed files with 50 additions and 36 deletions

View File

@@ -159,7 +159,7 @@ class EntitiesDB:
returnValue = self.database.nodes[uid] returnValue = self.database.nodes[uid]
except KeyError: except KeyError:
self.messageHandler.warning( self.messageHandler.warning(
"Tried to get entity with nonexistent UID.") "Tried to get entity with nonexistent UID: " + uid)
finally: finally:
self.dbLock.release() self.dbLock.release()
return returnValue return returnValue
@@ -394,9 +394,11 @@ class EntitiesDB:
) )
]) ])
if differenceGraph.number_of_nodes() > 0: if differenceGraph.number_of_nodes() > 0:
for node in differenceGraph.nodes:
self.mainWindow.populateEntitiesWidget(differenceGraph.nodes[node], add=True)
self.database = nx.compose(self.database, differenceGraph) self.database = nx.compose(self.database, differenceGraph)
# Some nodes given by differenceGraph may be empty dicts, with an existing node's uid as the key.
for node in differenceGraph.nodes:
self.mainWindow.populateEntitiesWidget(self.database.nodes[node], add=True)
if not fromServer: if not fromServer:
if self.mainWindow.FCOM.isConnected(): if self.mainWindow.FCOM.isConnected():
# diffNew = nx.DiGraph() # diffNew = nx.DiGraph()

View File

@@ -55,7 +55,8 @@ class CommunicationsHandler(QtCore.QObject):
open_project_canvas_signal = QtCore.Signal(str) open_project_canvas_signal = QtCore.Signal(str)
close_project_canvas_signal = QtCore.Signal(str) close_project_canvas_signal = QtCore.Signal(str)
receive_project_database_update = QtCore.Signal(dict, bool) receive_project_database_update = QtCore.Signal(dict, bool)
receive_project_canvas_update = QtCore.Signal(str, str) receive_project_canvas_update_node = QtCore.Signal(str, str)
receive_project_canvas_update_link = QtCore.Signal(str, tuple)
receive_sync_database = QtCore.Signal(dict, dict) receive_sync_database = QtCore.Signal(dict, dict)
status_message_signal = QtCore.Signal(str, bool) status_message_signal = QtCore.Signal(str, bool)
receive_project_file_list = QtCore.Signal(list) receive_project_file_list = QtCore.Signal(list)
@@ -88,7 +89,8 @@ class CommunicationsHandler(QtCore.QObject):
self.close_project_signal.connect(self.mainWindow.closeCurrentServerProject) self.close_project_signal.connect(self.mainWindow.closeCurrentServerProject)
self.close_project_canvas_signal.connect(self.mainWindow.closeServerCanvasListener) self.close_project_canvas_signal.connect(self.mainWindow.closeServerCanvasListener)
self.receive_project_database_update.connect(self.mainWindow.receiveServerDatabaseUpdate) self.receive_project_database_update.connect(self.mainWindow.receiveServerDatabaseUpdate)
self.receive_project_canvas_update.connect(self.mainWindow.receiveServerCanvasUpdate) self.receive_project_canvas_update_node.connect(self.mainWindow.receiveServerCanvasUpdate)
self.receive_project_canvas_update_link.connect(self.mainWindow.receiveServerCanvasUpdate)
self.receive_sync_database.connect(self.mainWindow.receiveSyncDatabaseListener) self.receive_sync_database.connect(self.mainWindow.receiveSyncDatabaseListener)
self.receive_project_file_list.connect(self.mainWindow.receiveFileListListener) self.receive_project_file_list.connect(self.mainWindow.receiveFileListListener)
self.file_upload_finished_signal.connect(self.mainWindow.fileUploadFinishedListener) self.file_upload_finished_signal.connect(self.mainWindow.fileUploadFinishedListener)
@@ -444,8 +446,11 @@ class CommunicationsHandler(QtCore.QObject):
"add": add}} "add": add}}
self.transmitMessage(message) self.transmitMessage(message)
def receiveCanvasUpdateEvent(self, canvas_name: str, entity_or_link_uid: str): def receiveCanvasUpdateEvent(self, canvas_name: str, entity_or_link_uid: Union[str, tuple]):
self.receive_project_canvas_update.emit(canvas_name, entity_or_link_uid) if isinstance(entity_or_link_uid, str):
self.receive_project_canvas_update_node.emit(canvas_name, entity_or_link_uid)
else:
self.receive_project_canvas_update_link.emit(canvas_name, entity_or_link_uid)
def sendCanvasUpdateEvent(self, project_name: str, canvas_name: str, entity_or_link_uid: Union[str, tuple]): def sendCanvasUpdateEvent(self, project_name: str, canvas_name: str, entity_or_link_uid: Union[str, tuple]):
message = {"Operation": "Update Canvas Entities", message = {"Operation": "Update Canvas Entities",

View File

@@ -441,6 +441,9 @@ class TabbedPane(QtWidgets.QTabWidget):
nodeJSON = self.entityDB.getEntity(uid) nodeJSON = self.entityDB.getEntity(uid)
# This is more efficient for large canvases than syncing afterwards.
self.mainWindow.sendLocalCanvasUpdateToServer(canvas, uid)
picture = nodeJSON.get('Icon') picture = nodeJSON.get('Icon')
scene.sceneGraph.add_node(uid) scene.sceneGraph.add_node(uid)

View File

@@ -848,7 +848,7 @@ class MenuBar(QtWidgets.QMenuBar):
progress.setValue(4) progress.setValue(4)
def cookieFileHashHelper(self, filePath): def cookieFileHashHelper(self, filePath):
cookieHash = hashlib.md5() cookieHash = hashlib.md5() # nosec
with open(filePath, 'rb') as cookieFile: with open(filePath, 'rb') as cookieFile:
for chunk in iter(lambda: cookieFile.read(4096), b""): for chunk in iter(lambda: cookieFile.read(4096), b""):
cookieHash.update(chunk) cookieHash.update(chunk)

View File

@@ -1131,16 +1131,18 @@ class MainWindow(QtWidgets.QMainWindow):
def receiveServerCanvasUpdate(self, canvas_name: str, entity_or_link_uid: Union[str, tuple]) -> None: def receiveServerCanvasUpdate(self, canvas_name: str, entity_or_link_uid: Union[str, tuple]) -> None:
scene = self.centralWidget().tabbedPane.getSceneByName(canvas_name) scene = self.centralWidget().tabbedPane.getSceneByName(canvas_name)
if scene is not None: if scene is not None:
if isinstance(entity_or_link_uid, str): # Check that the argument in the update is not empty.
# Add Entity if entity_or_link_uid:
if entity_or_link_uid not in scene.nodesDict: if isinstance(entity_or_link_uid, str):
scene.addNodeProgrammatic(entity_or_link_uid, fromServer=True) # Add Entity
scene.rearrangeGraph() if entity_or_link_uid not in scene.nodesDict:
else: scene.addNodeProgrammatic(entity_or_link_uid, fromServer=True)
# Add Link scene.rearrangeGraph()
if entity_or_link_uid not in scene.linksDict: else:
scene.addLinkProgrammatic(entity_or_link_uid, fromServer=True) # Add Link
scene.rearrangeGraph() if entity_or_link_uid not in scene.linksDict:
scene.addLinkProgrammatic(entity_or_link_uid, fromServer=True)
scene.rearrangeGraph()
self.MESSAGEHANDLER.debug('Received update to canvas: ' + canvas_name + ' for entity / link: ' + self.MESSAGEHANDLER.debug('Received update to canvas: ' + canvas_name + ' for entity / link: ' +
str(entity_or_link_uid)) str(entity_or_link_uid))
@@ -1159,25 +1161,27 @@ class MainWindow(QtWidgets.QMainWindow):
str(add)) str(add))
def receiveServerDatabaseUpdate(self, entityJson, add) -> None: def receiveServerDatabaseUpdate(self, entityJson, add) -> None:
uid = entityJson['uid'] # Check that the JSON received is not empty.
if add: if entityJson:
# Add item uid = entityJson['uid']
if isinstance(uid, str): if add:
# Add Entity # Add item
self.LENTDB.addEntity(entityJson, fromServer=True) if isinstance(uid, str):
# Add Entity
self.LENTDB.addEntity(entityJson, fromServer=True)
else:
# Add Link
self.centralWidget().tabbedPane.serverLinkAddHelper(entityJson)
else: else:
# Add Link # Remove item
self.centralWidget().tabbedPane.serverLinkAddHelper(entityJson) if isinstance(uid, str):
else: # Remove Entity
# Remove item self.centralWidget().tabbedPane.nodeRemoveAllHelper(uid)
if isinstance(uid, str): self.LENTDB.removeEntity(uid, fromServer=True)
# Remove Entity else:
self.centralWidget().tabbedPane.nodeRemoveAllHelper(uid) # Remove Link
self.LENTDB.removeEntity(uid, fromServer=True) self.centralWidget().tabbedPane.linkRemoveAllHelper(uid)
else: self.LENTDB.removeLink(uid, fromServer=True)
# Remove Link
self.centralWidget().tabbedPane.linkRemoveAllHelper(uid)
self.LENTDB.removeLink(uid, fromServer=True)
self.MESSAGEHANDLER.debug('Received database update from server: ' + str(entityJson) + ' - Operation: ' + self.MESSAGEHANDLER.debug('Received database update from server: ' + str(entityJson) + ' - Operation: ' +
str(add)) str(add))