Пример #1
0
    def _rItem2Index(self, item, parent=None):
        if parent is None:
            parent = QModelIndex()
        if item == self.getItem(parent):
            return parent

        if not parent.isValid() or parent.internalPointer().populated:
            for i in range(self.rowCount(parent)):
                index = self.index(i, 0, parent)
                index = self._rItem2Index(item, index)
                if index.isValid():
                    return index

        return QModelIndex()
Пример #2
0
    def _rItem2Index(self, item, parent=None):
        if parent is None:
            parent = QModelIndex()
        if item == self.getItem(parent):
            return parent

        if not parent.isValid() or parent.internalPointer().populated:
            for i in range(self.rowCount(parent)):
                index = self.index(i, 0, parent)
                index = self._rItem2Index(item, index)
                if index.isValid():
                    return index

        return QModelIndex()
    def processJobResult(self, job):
        log("processJobResult job: %s" % job.getJobId())
        job_result = job.getResult()

        if job_result is None:
            # TODO Exception
            self._releaseIndexesByJob(job)
            return

        indexes = {}
        for ngw_resource in job_result.added_resources:
            if ngw_resource.common.parent is None:
                index = QModelIndex()
                new_index = self.addNGWResourceToTree(index, ngw_resource)
            else:
                index = indexes.get(ngw_resource.common.parent.id)
                if index is None:
                    index = self.getIndexByNGWResourceId(
                        ngw_resource.common.parent.id,
                        self.index(0, 0, QModelIndex()))
                    indexes[ngw_resource.common.parent.id] = index

                item = index.internalPointer()
                current_ids = [
                    item.child(i).ngw_resource_id()
                    for i in range(0, item.childCount())
                    if isinstance(item.child(i), QNGWResourceItem)
                ]
                if ngw_resource.common.id not in current_ids:
                    new_index = self.addNGWResourceToTree(index, ngw_resource)
                else:
                    continue

            if job_result.main_resource_id == ngw_resource.common.id:
                if job.model_response is not None:
                    job.model_response.done.emit(new_index)

        for ngw_resource in job_result.edited_resources:
            index = self.getIndexByNGWResourceId(
                ngw_resource.common.parent.id, self.index(0, 0, QModelIndex()))
            item = index.internalPointer()

            for i in range(0, item.childCount()):
                if item.child(i).ngw_resource_id() == ngw_resource.common.id:
                    self.beginRemoveRows(index, i, i)
                    item.removeChild(item.child(i))
                    self.endRemoveRows()
                    break
            else:
                # TODO exception: not find deleted resource in corrent tree
                self._releaseIndexesByJob(job)
                return

            new_index = self.addNGWResourceToTree(index, ngw_resource)

            if job.model_response is not None:
                job.model_response.done.emit(new_index)

        for ngw_resource in job_result.deleted_resources:
            # log(">>> delete ngw_resource: " + str(ngw_resource))
            index = self.getIndexByNGWResourceId(
                ngw_resource.common.parent.id, self.index(0, 0, QModelIndex()))
            item = index.internalPointer()

            for i in range(0, item.childCount()):
                if item.child(i).ngw_resource_id() == ngw_resource.common.id:
                    self.beginRemoveRows(index, i, i)
                    item.removeChild(item.child(i))
                    self.endRemoveRows()
                    break
            else:
                # TODO exception: not find deleted resource in corrent tree
                self._releaseIndexesByJob(job)
                return

            ngw_resource = item.data(0, QNGWResourceItem.NGWResourceRole)
            ngw_resource.update()

            if job.model_response is not None:
                job.model_response.done.emit(index)

        self._releaseIndexesByJob(job)