Exemple #1
0
    def testTaskFromFunctionWithFlags(self):
        """ test creating task from function with flags"""

        task = QgsTask.fromFunction('test task', run, 20, flags=QgsTask.Flags())
        self.assertFalse(task.canCancel())
        task2 = QgsTask.fromFunction('test task', run, 20, flags=QgsTask.CanCancel)
        self.assertTrue(task2.canCancel())
Exemple #2
0
    def test_flags(self):
        """
        Test task flags
        """
        thread_safe_alg = QgsApplication.processingRegistry().algorithmById(
            'native:buffer')
        nonthread_safe_alg = QgsApplication.processingRegistry().algorithmById(
            'native:setprojectvariable')
        context = QgsProcessingContext()
        context.setProject(QgsProject.instance())
        feedback = ConsoleFeedBack()

        task = QgsProcessingAlgRunnerTask(thread_safe_alg, {},
                                          context=context,
                                          feedback=feedback)
        self.assertEqual(task.flags(), QgsTask.CanCancel)
        task = QgsProcessingAlgRunnerTask(thread_safe_alg, {},
                                          context=context,
                                          feedback=feedback,
                                          flags=QgsTask.Flags())
        self.assertEqual(task.flags(), QgsTask.Flags())
        task = QgsProcessingAlgRunnerTask(thread_safe_alg, {},
                                          context=context,
                                          feedback=feedback,
                                          flags=QgsTask.CanCancel)
        self.assertEqual(task.flags(), QgsTask.CanCancel)
        task = QgsProcessingAlgRunnerTask(thread_safe_alg, {},
                                          context=context,
                                          feedback=feedback,
                                          flags=QgsTask.CancelWithoutPrompt)
        self.assertEqual(task.flags(), QgsTask.CancelWithoutPrompt)
        task = QgsProcessingAlgRunnerTask(thread_safe_alg, {},
                                          context=context,
                                          feedback=feedback,
                                          flags=QgsTask.CancelWithoutPrompt
                                          | QgsTask.CanCancel)
        self.assertEqual(task.flags(),
                         QgsTask.CancelWithoutPrompt | QgsTask.CanCancel)

        # alg which can't be canceled
        task = QgsProcessingAlgRunnerTask(nonthread_safe_alg, {},
                                          context=context,
                                          feedback=feedback)
        self.assertEqual(task.flags(), QgsTask.Flags())
        # we clear the CanCancel flag automatically, since the algorithm itself cannot be canceled
        task = QgsProcessingAlgRunnerTask(nonthread_safe_alg, {},
                                          context=context,
                                          feedback=feedback,
                                          flags=QgsTask.CanCancel)
        self.assertEqual(task.flags(), QgsTask.Flags())

        # hidden task
        task = QgsProcessingAlgRunnerTask(thread_safe_alg, {},
                                          context=context,
                                          feedback=feedback,
                                          flags=QgsTask.Hidden)
        self.assertEqual(task.flags(), QgsTask.Hidden)
        task = QgsProcessingAlgRunnerTask(thread_safe_alg, {},
                                          context=context,
                                          feedback=feedback,
                                          flags=QgsTask.Hidden
                                          | QgsTask.CanCancel)
        self.assertEqual(task.flags(), QgsTask.Hidden | QgsTask.CanCancel)
        task = QgsProcessingAlgRunnerTask(thread_safe_alg, {},
                                          context=context,
                                          feedback=feedback,
                                          flags=QgsTask.Hidden
                                          | QgsTask.CanCancel
                                          | QgsTask.CancelWithoutPrompt)
        self.assertEqual(
            task.flags(),
            QgsTask.Hidden | QgsTask.CanCancel | QgsTask.CancelWithoutPrompt)

        task = QgsProcessingAlgRunnerTask(nonthread_safe_alg, {},
                                          context=context,
                                          feedback=feedback,
                                          flags=QgsTask.Hidden)
        self.assertEqual(task.flags(), QgsTask.Hidden)
        task = QgsProcessingAlgRunnerTask(nonthread_safe_alg, {},
                                          context=context,
                                          feedback=feedback,
                                          flags=QgsTask.Hidden
                                          | QgsTask.CanCancel)
        self.assertEqual(task.flags(), QgsTask.Hidden)