Merge pull request #2063 from pypeclub/feature/project-archive-state

Fix Sync Queue when project disabled
This commit is contained in:
Petr Kalis 2021-09-24 10:36:22 +02:00 committed by GitHub
commit 630f804c95
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 22 additions and 3 deletions

View file

@ -84,19 +84,29 @@ class SyncServerWindow(QtWidgets.QDialog):
self.pause_btn.setAutoDefault(False)
self.pause_btn.setDefault(False)
repres.message_generated.connect(self._update_message)
self.projects.message_generated.connect(self._update_message)
self.representationWidget = repres
def _on_project_change(self):
if self.projects.current_project is None:
return
self.representationWidget.table_view.model().set_project(
self.projects.current_project
)
project_name = self.projects.current_project
if not self.sync_server.get_sync_project_setting(project_name):
self.projects.message_generated.emit(
"Project {} not active anymore".format(project_name))
self.projects.refresh()
return
def showEvent(self, event):
self.representationWidget.model.set_project(
self.projects.current_project)
self.projects.refresh()
self._set_running(True)
super().showEvent(event)

View file

@ -301,6 +301,10 @@ class _SyncRepresentationModel(QtCore.QAbstractTableModel):
"""
self._project = project
self.sync_server.set_sync_project_settings()
# project might have been deactivated in the meantime
if not self.sync_server.get_sync_project_setting(project):
return
self.active_site = self.sync_server.get_active_site(self.project)
self.remote_site = self.sync_server.get_remote_site(self.project)
self.refresh()

View file

@ -30,6 +30,7 @@ class SyncProjectListWidget(QtWidgets.QWidget):
Lists all projects that are synchronized to choose from
"""
project_changed = QtCore.Signal()
message_generated = QtCore.Signal(str)
def __init__(self, sync_server, parent):
super(SyncProjectListWidget, self).__init__(parent)
@ -65,6 +66,7 @@ class SyncProjectListWidget(QtWidgets.QWidget):
self.current_project = None
self.project_name = None
self.local_site = None
self.remote_site = None
self.icons = {}
def _on_index_change(self, new_idx, _old_idx):
@ -99,6 +101,11 @@ class SyncProjectListWidget(QtWidgets.QWidget):
if project_name:
self.local_site = self.sync_server.get_active_site(project_name)
self.remote_site = self.sync_server.get_remote_site(project_name)
def _can_edit(self):
"""Returns true if some site is user local site, eg. could edit"""
return get_local_site_id() in (self.local_site, self.remote_site)
def _get_icon(self, status):
if not self.icons.get(status):
@ -122,9 +129,7 @@ class SyncProjectListWidget(QtWidgets.QWidget):
menu = QtWidgets.QMenu(self)
actions_mapping = {}
can_edit = self.model.can_edit
if can_edit:
if self._can_edit():
if self.sync_server.is_project_paused(self.project_name):
action = QtWidgets.QAction("Unpause")
actions_mapping[action] = self._unpause