|
@@ -92,6 +92,9 @@ class DigitalFactoryController(QObject):
|
|
|
"""Signal to inform about the state of user access."""
|
|
|
userAccessStateChanged = pyqtSignal(bool)
|
|
|
|
|
|
+ """Signal to inform whether the user is allowed to create more Library projects."""
|
|
|
+ userCanCreateNewLibraryProjectChanged = pyqtSignal(bool)
|
|
|
+
|
|
|
def __init__(self, application: CuraApplication) -> None:
|
|
|
super().__init__(parent = None)
|
|
|
|
|
@@ -136,6 +139,7 @@ class DigitalFactoryController(QObject):
|
|
|
self._application.initializationFinished.connect(self._applicationInitializationFinished)
|
|
|
|
|
|
self._user_has_access = False
|
|
|
+ self._user_account_can_create_new_project = False
|
|
|
|
|
|
def clear(self) -> None:
|
|
|
self._project_model.clearProjects()
|
|
@@ -166,6 +170,11 @@ class DigitalFactoryController(QObject):
|
|
|
subscriptions = self._account.userProfile.get("subscriptions", [])
|
|
|
if len(subscriptions) > 0:
|
|
|
return True
|
|
|
+ if self._user_has_access:
|
|
|
+ # The user has access even though they have no subscriptions. This means they are an Essential user and they
|
|
|
+ # have limited personal private projects available. In this case, we need to check whether they have already
|
|
|
+ # reached their limit.
|
|
|
+ self._api.checkUserCanCreateNewLibraryProject(callback = self.setCanCreateNewLibraryProject)
|
|
|
return self._user_has_access
|
|
|
|
|
|
def initialize(self, preselected_project_id: Optional[str] = None) -> None:
|
|
@@ -517,6 +526,7 @@ class DigitalFactoryController(QObject):
|
|
|
self._project_model.clearProjects()
|
|
|
self.setSelectedProjectIndex(-1)
|
|
|
self._api.getProjectsFirstPage(on_finished = self._onGetProjectsFirstPageFinished, failed = self._onGetProjectsFailed)
|
|
|
+ self._api.checkUserCanCreateNewLibraryProject(callback = self.setCanCreateNewLibraryProject)
|
|
|
self.setRetrievingProjectsStatus(RetrievalStatus.InProgress)
|
|
|
self._has_preselected_project = new_has_preselected_project
|
|
|
self.preselectedProjectChanged.emit()
|
|
@@ -525,6 +535,14 @@ class DigitalFactoryController(QObject):
|
|
|
def hasPreselectedProject(self) -> bool:
|
|
|
return self._has_preselected_project
|
|
|
|
|
|
+ def setCanCreateNewLibraryProject(self, can_create_new_library_project: bool) -> None:
|
|
|
+ self._user_account_can_create_new_project = can_create_new_library_project
|
|
|
+ self.userCanCreateNewLibraryProjectChanged.emit(self._user_account_can_create_new_project)
|
|
|
+
|
|
|
+ @pyqtProperty(bool, fset = setCanCreateNewLibraryProject, notify = userCanCreateNewLibraryProjectChanged)
|
|
|
+ def userAccountCanCreateNewLibraryProject(self) -> bool:
|
|
|
+ return self._user_account_can_create_new_project
|
|
|
+
|
|
|
@pyqtSlot(str, "QStringList")
|
|
|
def saveFileToSelectedProject(self, filename: str, formats: List[str]) -> None:
|
|
|
"""
|