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]
except KeyError:
self.messageHandler.warning(
"Tried to get entity with nonexistent UID.")
"Tried to get entity with nonexistent UID: " + uid)
finally:
self.dbLock.release()
return returnValue
@@ -394,9 +394,11 @@ class EntitiesDB:
)
])
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)
# 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 self.mainWindow.FCOM.isConnected():
# diffNew = nx.DiGraph()

View File

@@ -55,7 +55,8 @@ class CommunicationsHandler(QtCore.QObject):
open_project_canvas_signal = QtCore.Signal(str)
close_project_canvas_signal = QtCore.Signal(str)
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)
status_message_signal = QtCore.Signal(str, bool)
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_canvas_signal.connect(self.mainWindow.closeServerCanvasListener)
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_project_file_list.connect(self.mainWindow.receiveFileListListener)
self.file_upload_finished_signal.connect(self.mainWindow.fileUploadFinishedListener)
@@ -444,8 +446,11 @@ class CommunicationsHandler(QtCore.QObject):
"add": add}}
self.transmitMessage(message)
def receiveCanvasUpdateEvent(self, canvas_name: str, entity_or_link_uid: str):
self.receive_project_canvas_update.emit(canvas_name, entity_or_link_uid)
def receiveCanvasUpdateEvent(self, canvas_name: str, entity_or_link_uid: Union[str, tuple]):
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]):
message = {"Operation": "Update Canvas Entities",

View File

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

View File

@@ -848,7 +848,7 @@ class MenuBar(QtWidgets.QMenuBar):
progress.setValue(4)
def cookieFileHashHelper(self, filePath):
cookieHash = hashlib.md5()
cookieHash = hashlib.md5() # nosec
with open(filePath, 'rb') as cookieFile:
for chunk in iter(lambda: cookieFile.read(4096), b""):
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:
scene = self.centralWidget().tabbedPane.getSceneByName(canvas_name)
if scene is not None:
if isinstance(entity_or_link_uid, str):
# Add Entity
if entity_or_link_uid not in scene.nodesDict:
scene.addNodeProgrammatic(entity_or_link_uid, fromServer=True)
scene.rearrangeGraph()
else:
# Add Link
if entity_or_link_uid not in scene.linksDict:
scene.addLinkProgrammatic(entity_or_link_uid, fromServer=True)
scene.rearrangeGraph()
# Check that the argument in the update is not empty.
if entity_or_link_uid:
if isinstance(entity_or_link_uid, str):
# Add Entity
if entity_or_link_uid not in scene.nodesDict:
scene.addNodeProgrammatic(entity_or_link_uid, fromServer=True)
scene.rearrangeGraph()
else:
# Add Link
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: ' +
str(entity_or_link_uid))
@@ -1159,25 +1161,27 @@ class MainWindow(QtWidgets.QMainWindow):
str(add))
def receiveServerDatabaseUpdate(self, entityJson, add) -> None:
uid = entityJson['uid']
if add:
# Add item
if isinstance(uid, str):
# Add Entity
self.LENTDB.addEntity(entityJson, fromServer=True)
# Check that the JSON received is not empty.
if entityJson:
uid = entityJson['uid']
if add:
# Add item
if isinstance(uid, str):
# Add Entity
self.LENTDB.addEntity(entityJson, fromServer=True)
else:
# Add Link
self.centralWidget().tabbedPane.serverLinkAddHelper(entityJson)
else:
# Add Link
self.centralWidget().tabbedPane.serverLinkAddHelper(entityJson)
else:
# Remove item
if isinstance(uid, str):
# Remove Entity
self.centralWidget().tabbedPane.nodeRemoveAllHelper(uid)
self.LENTDB.removeEntity(uid, fromServer=True)
else:
# Remove Link
self.centralWidget().tabbedPane.linkRemoveAllHelper(uid)
self.LENTDB.removeLink(uid, fromServer=True)
# Remove item
if isinstance(uid, str):
# Remove Entity
self.centralWidget().tabbedPane.nodeRemoveAllHelper(uid)
self.LENTDB.removeEntity(uid, fromServer=True)
else:
# Remove Link
self.centralWidget().tabbedPane.linkRemoveAllHelper(uid)
self.LENTDB.removeLink(uid, fromServer=True)
self.MESSAGEHANDLER.debug('Received database update from server: ' + str(entityJson) + ' - Operation: ' +
str(add))