Small fixes with networking, and disabling inspection for the cookie database movement.
This commit is contained in:
@@ -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()
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
60
LinkScope.py
60
LinkScope.py
@@ -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))
|
||||||
|
|||||||
Reference in New Issue
Block a user