示例#1
0
    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': []
            }
        })
示例#3
0
    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
示例#4
0
    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
示例#5
0
 def getUserTasks(self):
     self.userDetails = ftrack.getUser(self.user)
     return self.userDetails
示例#6
0
    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)