3

I am trying to close QgsProject on loading layer (if password and username from QgSProject - datasource are incorrect) before QgsCredentialDialog is shown.

on signal :

QgsProject.instance().loadingLayer.connect(self.load_log)

  • If password and user are correct -> pass

  • if password and user are not correct: close the project

I am using :

    project = QgsProject.instance()
    project.clear()

but QgsCredentialDialog still shows up.

enter image description here

after clear project if I use :

iface.actionExit().trigger()

This shows up:

enter image description here

If I click yes, QgsCredentialDialog is shown again

How do I close the project and everything connected with that project (signals,actions,tasks,connections,...)?

NOTE:

QgsTaskManager().cancelAll() # NOT WORKING
tasks = QgsApplication.taskManager().activeTasks()
for task in tasks:
    print (task.canCancel()) # False
    print (task.description()) # Loading “C:/Users/User/Desktop/some_project.qgs”
    print (task.flags()) # <qgis._core.QgsTask.Flags object at 0x000002330527E4C8>

    task.cancel() # NOT WORKING

Since task.canCancel() is FALSE (I think that is main problem here), is it possible to change task.canCancel() into TRUE?

3
  • 1
    If the tasks are contained in QgsTaskManager, you could try cancelling it using QgsTaskManager().cancelAll() before creating a new project.
    – Joseph
    Commented Apr 11, 2019 at 14:12
  • 1
    Unfortunately it does not work either :( If I click yes in dialog "Active Tasks" QgsCredentialDialog is shown again @Joseph
    – ncica
    Commented Apr 11, 2019 at 14:21
  • Duplicated gis.stackexchange.com/questions/318585/…
    – Fran Raga
    Commented Apr 17, 2019 at 12:18

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.