Skip to content
This repository has been archived by the owner on Sep 20, 2024. It is now read-only.

Settings: Flag project as deactivated and hide from tools' view #2008

Merged
merged 22 commits into from
Sep 23, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
181c1fa
add project archive confirm setting attribute
davidlatwe Sep 11, 2021
394b714
Launcher ignore archived project
davidlatwe Sep 11, 2021
902334d
ProjectManager ignore archived project
davidlatwe Sep 11, 2021
07e248d
StandalonePublisher ignore archived project
davidlatwe Sep 11, 2021
1ec69c3
Settings ignore archived project
davidlatwe Sep 11, 2021
04d4afa
evaluate archive flag on saving anatomy
davidlatwe Sep 12, 2021
f817740
add archived sorting/filtering in Studio Settings
davidlatwe Sep 12, 2021
02937e3
SyncServer ignore archived project
davidlatwe Sep 12, 2021
c234cb9
register 'archived' to project anatomy schema
davidlatwe Sep 12, 2021
662e748
reset 'archived' to False if no confirmation string
davidlatwe Sep 12, 2021
921fc00
keep selected project in view when being archived
davidlatwe Sep 12, 2021
453a813
fix linter
davidlatwe Sep 12, 2021
b0d166f
reverse project 'archive' to 'active'
davidlatwe Sep 15, 2021
0bf84ad
refactor data role attrib to model
davidlatwe Sep 15, 2021
7ac2c04
remove project archive confirmation
davidlatwe Sep 15, 2021
db9e5fa
Rephrase 'archived' to 'inactive'
davidlatwe Sep 15, 2021
d0e0bcb
Update openpype/settings/entities/schemas/projects_schema/schemas/sch…
davidlatwe Sep 16, 2021
4fbf5dd
removed unused ProjectModel
iLLiCiTiT Sep 16, 2021
a67cfcd
delegate signal handler to method
iLLiCiTiT Sep 16, 2021
c5cc3fc
Transfer logic from settings project list widget to sync server
iLLiCiTiT Sep 16, 2021
cca2017
modified how projects are queried for sync server
iLLiCiTiT Sep 16, 2021
44c7b88
Merge pull request #1 from pypeclub/feature/sync_server_fix
davidlatwe Sep 16, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -815,17 +815,22 @@ def set_sync_project_settings(self, exclude_locals=False):
def _prepare_sync_project_settings(self, exclude_locals):
sync_project_settings = {}
system_sites = self.get_all_site_configs()
for collection in self.connection.database.collection_names(False):
project_docs = self.connection.projects(
projection={"name": 1},
only_active=True
)
for project_doc in project_docs:
project_name = project_doc["name"]
sites = copy.deepcopy(system_sites) # get all configured sites
proj_settings = self._parse_sync_settings_from_settings(
get_project_settings(collection,
get_project_settings(project_name,
exclude_locals=exclude_locals))
sites.update(self._get_default_site_configs(
proj_settings["enabled"], collection))
proj_settings["enabled"], project_name))
sites.update(proj_settings['sites'])
proj_settings["sites"] = sites

sync_project_settings[collection] = proj_settings
sync_project_settings[project_name] = proj_settings
if not sync_project_settings:
log.info("No enabled and configured projects for sync.")
return sync_project_settings
Expand Down
11 changes: 9 additions & 2 deletions openpype/modules/default_modules/sync_server/tray/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,8 +77,8 @@ def __init__(self, sync_server, parent=None):
self.setWindowTitle("Sync Queue")

self.projects.project_changed.connect(
lambda: repres.table_view.model().set_project(
self.projects.current_project))
self._on_project_change
)

self.pause_btn.clicked.connect(self._pause)
self.pause_btn.setAutoDefault(False)
Expand All @@ -87,6 +87,13 @@ def __init__(self, sync_server, parent=None):

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
)

def showEvent(self, event):
self.representationWidget.model.set_project(
self.projects.current_project)
Expand Down
19 changes: 0 additions & 19 deletions openpype/modules/default_modules/sync_server/tray/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,25 +17,6 @@
log = PypeLogger().get_logger("SyncServer")


class ProjectModel(QtCore.QAbstractListModel):
def __init__(self, *args, projects=None, **kwargs):
super(ProjectModel, self).__init__(*args, **kwargs)
self.projects = projects or []

def data(self, index, role):
if role == Qt.DisplayRole:
# See below for the data structure.
status, text = self.projects[index.row()]
# Return the todo text only.
return text

def rowCount(self, _index):
return len(self.todos)

def columnCount(self, _index):
return len(self._header)


class _SyncRepresentationModel(QtCore.QAbstractTableModel):

COLUMN_LABELS = []
Expand Down
52 changes: 38 additions & 14 deletions openpype/modules/default_modules/sync_server/tray/widgets.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,7 @@
from Qt import QtWidgets, QtCore, QtGui
from Qt.QtCore import Qt

from openpype.tools.settings import (
ProjectListWidget,
style
)
from openpype.tools.settings import style

from openpype.api import get_local_site_id
from openpype.lib import PypeLogger
Expand All @@ -28,28 +25,56 @@
log = PypeLogger().get_logger("SyncServer")


class SyncProjectListWidget(ProjectListWidget):
class SyncProjectListWidget(QtWidgets.QWidget):
"""
Lists all projects that are synchronized to choose from
"""
project_changed = QtCore.Signal()

def __init__(self, sync_server, parent):
super(SyncProjectListWidget, self).__init__(parent)
self.setObjectName("ProjectListWidget")

self._parent = parent

label_widget = QtWidgets.QLabel("Projects", self)
project_list = QtWidgets.QListView(self)
project_model = QtGui.QStandardItemModel()
project_list.setModel(project_model)
project_list.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)

# Do not allow editing
project_list.setEditTriggers(
QtWidgets.QAbstractItemView.EditTrigger.NoEditTriggers
)

layout = QtWidgets.QVBoxLayout(self)
layout.setContentsMargins(0, 0, 0, 0)
layout.setSpacing(3)
layout.addWidget(label_widget, 0)
layout.addWidget(project_list, 1)

project_list.customContextMenuRequested.connect(self._on_context_menu)
project_list.selectionModel().currentChanged.connect(
self._on_index_change
)

self.project_model = project_model
self.project_list = project_list
self.sync_server = sync_server
self.project_list.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
self.project_list.customContextMenuRequested.connect(
self._on_context_menu)
self.current_project = None
self.project_name = None
self.local_site = None
self.icons = {}

self.layout().setContentsMargins(0, 0, 0, 0)
def _on_index_change(self, new_idx, _old_idx):
project_name = new_idx.data(QtCore.Qt.DisplayRole)

def validate_context_change(self):
return True
self.current_project = project_name
self.project_changed.emit()

def refresh(self):
model = self.project_list.model()
model = self.project_model
model.clear()

project_name = None
Expand All @@ -70,8 +95,7 @@ def refresh(self):
QtCore.Qt.DisplayRole
)
if not self.current_project:
self.current_project = self.project_list.model().item(0). \
data(QtCore.Qt.DisplayRole)
self.current_project = model.item(0).data(QtCore.Qt.DisplayRole)

if project_name:
self.local_site = self.sync_server.get_active_site(project_name)
Expand Down
3 changes: 2 additions & 1 deletion openpype/settings/defaults/project_anatomy/attributes.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,6 @@
"aftereffects/2021",
"unreal/4-26"
],
"tools_env": []
"tools_env": [],
"active": true
}
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,11 @@
"type": "tools-enum",
"key": "tools_env",
"label": "Tools"
},
{
"type": "boolean",
"key": "active",
"label": "Active Project"
}
]
}
17 changes: 2 additions & 15 deletions openpype/tools/launcher/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -326,8 +326,6 @@ def __init__(self, dbcon, parent=None):
super(ProjectModel, self).__init__(parent=parent)

self.dbcon = dbcon

self.hide_invisible = False
self.project_icon = qtawesome.icon("fa.map", color="white")
self._project_names = set()

Expand Down Expand Up @@ -380,16 +378,5 @@ def refresh(self):
self.invisibleRootItem().insertRows(row, items)

def get_projects(self):
project_docs = []

for project_doc in sorted(
self.dbcon.projects(), key=lambda x: x["name"]
):
if (
self.hide_invisible
and not project_doc["data"].get("visible", True)
):
continue
project_docs.append(project_doc)

return project_docs
return sorted(self.dbcon.projects(only_active=True),
key=lambda x: x["name"])
1 change: 0 additions & 1 deletion openpype/tools/launcher/window.py
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,6 @@ def __init__(self, parent=None):
)

project_model = ProjectModel(self.dbcon)
project_model.hide_invisible = True
project_handler = ProjectHandler(self.dbcon, project_model)

project_panel = ProjectsPanel(project_handler)
Expand Down
16 changes: 6 additions & 10 deletions openpype/tools/project_manager/project_manager/model.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,18 +43,14 @@ def refresh(self):
none_project.setData(None)
project_items.append(none_project)

database = self.dbcon.database
project_names = set()
for project_name in database.collection_names():
# Each collection will have exactly one project document
project_doc = database[project_name].find_one(
{"type": "project"},
{"name": 1}
)
if not project_doc:
continue

project_name = project_doc.get("name")
for doc in sorted(
self.dbcon.projects(projection={"name": 1}, only_active=True),
key=lambda x: x["name"]
):

project_name = doc.get("name")
if project_name:
project_names.add(project_name)
project_items.append(QtGui.QStandardItem(project_name))
Expand Down
2 changes: 1 addition & 1 deletion openpype/tools/settings/local_settings/projects_widget.py
Original file line number Diff line number Diff line change
Expand Up @@ -809,7 +809,7 @@ def __init__(self, modules_manager, project_settings, parent):

self.modules_manager = modules_manager

projects_widget = _ProjectListWidget(self)
projects_widget = _ProjectListWidget(self, only_active=True)
roos_site_widget = RootSiteWidget(
modules_manager, project_settings, self
)
Expand Down
Loading