def constructWidget(self): '''Return widget instance to test.''' ftrack.setup() self.eventHubThread = ftrack_connect.event_hub_thread.EventHubThread() self.eventHubThread.start() self.users = [ user for user in ftrack.getUsers() if (user.get('username') != getpass.getuser()) ] self.groups = ('Assigned', 'Related', 'Contributors', 'Others') widget = QtGui.QWidget() widget.setLayout(QtGui.QVBoxLayout()) widget.setMinimumSize(QtCore.QSize(600, 600)) user = ftrack.getUser(getpass.getuser()) self.crewHub = MyCrewHub() self.crew = ftrack_connect.ui.widget.crew.Crew(self.groups, user, hub=self.crewHub) widget.layout().addWidget(self.crew) userIds = [] for user in self.users: userIds.append(user.getId()) self.crew.addUser(user.getName(), user.getId()) user = ftrack.getUser(getpass.getuser()) self.crewHub.populateUnreadConversations(user.getId(), userIds) data = { 'user': { 'name': user.getName(), 'id': user.getId() }, 'application': { 'identifier': 'ftrack', 'label': 'ftrack' }, 'context': { 'project_id': 'my_project_id', 'containers': [] } } self.crewHub.enter(data) widget.activateWindow() widget.show() widget.raise_() ftrack_connect.ui.theme.applyTheme(widget, 'integration') return widget
def __init__(self, *args, **kwargs): '''Instantiate CrewHub.''' super(CrewHub, self).__init__(*args, **kwargs) user = ftrack.getUser(getpass.getuser()) self.enter({ 'user': { 'name': user.getName(), 'id': user.getId() }, 'application': { 'identifier': 'nuke', 'label': 'Nuke {0}'.format(nuke.NUKE_VERSION_STRING) }, 'context': { 'project_id': 'my_project_id', 'containers': [] } })
def getUserTasks(self, username, project): user = ftrack.getUser(username) tasks = user.getTasks() taskList = [] for task in tasks: taskDict = {} proj = task.getProject().getName() if proj == project: parents = task.getParents() taskName = task.getName() for count in xrange(0, len(parents)-1): taskName = '%s/%s' % (parents[count].getName(), taskName) taskDict['taskName'] = taskName taskDict['priority'] = task.getPriority().getName() taskDict['taskID'] = task.getId() taskDict['status'] = task.getStatus().getName() taskDict['parentType'] = task.getParent().getType().getName() taskDict['path'] = self.buildTemplateData(taskDict,proj) #self.makeDirs(taskDict['path']) taskList.append(taskDict) return taskList
def getUserTasks(self, username, project): user = ftrack.getUser(username) tasks = user.getTasks() taskList = [] for task in tasks: taskDict = {} proj = task.getProject().getName() if proj == project: parents = task.getParents() taskName = task.getName() for count in xrange(0, len(parents) - 1): taskName = '%s/%s' % (parents[count].getName(), taskName) taskDict['taskName'] = taskName taskDict['priority'] = task.getPriority().getName() taskDict['taskID'] = task.getId() taskDict['status'] = task.getStatus().getName() taskDict['parentType'] = task.getParent().getType().getName() taskDict['path'] = self.buildTemplateData(taskDict, proj) #self.makeDirs(taskDict['path']) taskList.append(taskDict) return taskList
def getUserTasks(self): self.userDetails = ftrack.getUser(self.user) return self.userDetails
def getUserDetails(self): self.userDetails = ftrack.getUser(self.user) return self.userDetails
def __init__(self, parent=None): '''Initialise widget with *parent*.''' super(NukeCrew, self).__init__(parent=parent) ftrack_connect.ui.theme.applyTheme(self, 'integration') self.setMinimumWidth(400) self.setSizePolicy( QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)) self.vertical_layout = QtWidgets.QVBoxLayout(self) self.horizontal_layout = QtWidgets.QHBoxLayout() self.header = Header(username=getpass.getuser(), parent=self) self.vertical_layout.addWidget(self.header) self.notification_list = _notification_list.Notification(self) self._hub = ftrack_connect_nuke.crew_hub.crew_hub self._classifier = UserClassifier() self._classifier.update_context(self._read_context_from_environment()) current_user = ftrack.getUser(getpass.getuser()) groups = ['Assigned', 'Contributors', 'Supervisors'] self.chat = _crew.Crew(groups, current_user, hub=self._hub, classifier=self._classifier, parent=self) self.chat.chat.busyOverlay.setStyleSheet(NUKE_OVERLAY_STYLE) added_user_ids = [] for _user in session.query('select id, username, first_name, last_name' ' from User where is_active is True'): if _user['id'] != current_user.getId(): self.chat.addUser( u'{0} {1}'.format(_user['first_name'], _user['last_name']), _user['id']) added_user_ids.append(_user['id']) self.tab_panel = QtWidgets.QTabWidget(parent=self) self.tab_panel.addTab(self.chat, 'Chat') self.tab_panel.addTab(self.notification_list, 'Notifications') self.horizontal_layout.addWidget(self.tab_panel) # TODO: This styling should probably be done in a global stylesheet # for the entire Nuke plugin. self.notification_list.overlay.setStyleSheet(NUKE_OVERLAY_STYLE) self.vertical_layout.setContentsMargins(0, 0, 0, 0) self.vertical_layout.addLayout(self.horizontal_layout) self.setObjectName('Crew') self.setWindowTitle('Crew') # Import inline to avoid mysterious segfault in nuke 9.1dev build. from ftrack_connect.connector.panelcom import (PanelComInstance as _PanelComInstance) panel_communication_singleton = _PanelComInstance.instance() panel_communication_singleton.addRefreshListener(self.on_refresh_event) self.on_refresh_event() if not self._hub.compatibleServerVersion: logging.info('Incompatible server version.') self.blockingOverlay = ftrack_connect.ui.widget.overlay.BlockingOverlay( self, message='Incompatible server version.') self.blockingOverlay.setStyleSheet(NUKE_OVERLAY_STYLE) self.blockingOverlay.show() else: self._hub.populateUnreadConversations(current_user.getId(), added_user_ids)