Skip to content

Commit a948f1b

Browse files
committedMar 2, 2018
Some clean
1 parent 957e92c commit a948f1b

File tree

5 files changed

+68
-45
lines changed

5 files changed

+68
-45
lines changed
 

‎python/plugins/db_manager/db_plugins/data_model.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@
3333
QStandardItem)
3434
from qgis.PyQt.QtWidgets import QApplication
3535

36+
from qgis.core import QgsTask
37+
3638
from .plugin import DbError, BaseError
3739

3840

@@ -173,6 +175,17 @@ def modelDone(self):
173175
self.done.emit()
174176

175177

178+
class SqlResultModelTask(QgsTask):
179+
180+
def __init__(self, db, sql, parent):
181+
QgsTask.__init__(self)
182+
self.db = db
183+
self.sql = sql
184+
self.parent = parent
185+
self.error = BaseError('')
186+
self.model = None
187+
188+
176189
class SqlResultModel(BaseTableModel):
177190

178191
def __init__(self, db, sql, parent=None):

‎python/plugins/db_manager/db_plugins/postgis/data_model.py

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,12 @@
2020
***************************************************************************/
2121
"""
2222

23-
from qgis.core import QgsTask
23+
from qgis.core import QgsMessageLog
2424
from ..plugin import BaseError
25-
from ..data_model import TableDataModel, SqlResultModel, SqlResultModelAsync
25+
from ..data_model import (TableDataModel,
26+
SqlResultModel,
27+
SqlResultModelAsync,
28+
SqlResultModelTask)
2629

2730

2831
class PGTableDataModel(TableDataModel):
@@ -80,25 +83,18 @@ def fetchMoreData(self, row_start):
8083
self.fetchedFrom = row_start
8184

8285

83-
class PGSqlResultModelTask(QgsTask):
86+
class PGSqlResultModelTask(SqlResultModelTask):
8487

8588
def __init__(self, db, sql, parent):
86-
QgsTask.__init__(self)
87-
self.db = db
88-
self.sql = sql
89-
self.parent = parent
90-
self.error = BaseError('')
91-
self.model = None
89+
SqlResultModelTask.__init__(self, db, sql, parent)
9290

9391
def run(self):
94-
9592
try:
96-
self.model = PGSqlResultModel(self.db, self.sql, self.parent)
93+
self.model = PGSqlResultModel(self.db, self.sql, None)
9794
except BaseError as e:
9895
self.error = e
9996
QgsMessageLog.logMessage(e.msg)
10097
return False
101-
10298
return True
10399

104100
def cancelQuery(self):

‎python/plugins/db_manager/db_plugins/spatialite/data_model.py

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,12 @@
2020
***************************************************************************/
2121
"""
2222

23-
from qgis.core import QgsTask
23+
from qgis.core import QgsMessageLog
2424
from ..plugin import BaseError
25-
from ..data_model import TableDataModel, SqlResultModel, SqlResultModelAsync
25+
from ..data_model import (TableDataModel,
26+
SqlResultModel,
27+
SqlResultModelAsync,
28+
SqlResultModelTask)
2629
from .plugin import SLDatabase
2730

2831

@@ -63,23 +66,18 @@ def rowCount(self, index=None):
6366
return self.fetchedCount
6467

6568

66-
class SLSqlResultModelTask(QgsTask):
69+
class SLSqlResultModelTask(SqlResultModelTask):
6770

6871
def __init__(self, db, sql, parent):
69-
QgsTask.__init__(self)
70-
self.db = db
71-
self.sql = sql
72-
self.parent = parent
73-
self.error = BaseError('')
74-
self.model = None
72+
SqlResultModelTask.__init__(self, db, sql, parent)
7573
self.clone = None
7674

7775
def run(self):
7876
try:
7977
self.clone = SLDatabase(None, self.db.connector.uri())
8078

81-
# import time
82-
# self.clone.connector.connection.create_function("sleep", 1, time.sleep)
79+
#import time
80+
#self.clone.connector.connection.create_function("sleep", 1, time.sleep)
8381

8482
self.model = SLSqlResultModel(self.clone, self.sql, None)
8583
except BaseError as e:

‎python/plugins/db_manager/db_plugins/vlayers/data_model.py

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,21 @@
1919
***************************************************************************/
2020
"""
2121

22-
from ..data_model import TableDataModel, BaseTableModel, SqlResultModelAsync
22+
from ..data_model import (TableDataModel,
23+
BaseTableModel,
24+
SqlResultModelAsync,
25+
SqlResultModelTask)
2326

2427
from .connector import VLayerRegistry, getQueryGeometryName
2528
from .plugin import LVectorTable
2629
from ..plugin import DbError, BaseError
2730

2831
from qgis.PyQt.QtCore import QTime, QTemporaryFile
29-
from qgis.core import QgsVectorLayer, QgsWkbTypes, QgsVirtualLayerDefinition, QgsVirtualLayerTask, QgsTask
32+
from qgis.core import (QgsVectorLayer,
33+
QgsWkbTypes,
34+
QgsVirtualLayerDefinition,
35+
QgsVirtualLayerTask,
36+
QgsTask)
3037

3138

3239
class LTableDataModel(TableDataModel):
@@ -63,13 +70,22 @@ def rowCount(self, index=None):
6370
return 0
6471

6572

66-
class LSqlResultModelTask(QgsTask):
73+
class LSqlResultModelTask(SqlResultModelTask):
6774

68-
def __init__(self, subtask, db):
69-
QgsTask.__init__(self)
70-
self.subtask = subtask
71-
self.db = db
72-
self.model = None
75+
def __init__(self, db, sql, parent):
76+
SqlResultModelTask.__init__(self, db, sql, parent)
77+
78+
tf = QTemporaryFile()
79+
tf.open()
80+
path = tf.fileName()
81+
tf.close()
82+
83+
df = QgsVirtualLayerDefinition()
84+
df.setFilePath(path)
85+
df.setQuery(sql)
86+
87+
self.subtask = QgsVirtualLayerTask(df)
88+
self.addSubTask(self.subtask, [], QgsTask.ParentDependsOnSubTask)
7389

7490
def run(self):
7591
try:
@@ -91,18 +107,7 @@ class LSqlResultModelAsync(SqlResultModelAsync):
91107
def __init__(self, db, sql, parent=None):
92108
SqlResultModelAsync.__init__(self, db, sql, parent)
93109

94-
tf = QTemporaryFile()
95-
tf.open()
96-
path = tf.fileName()
97-
tf.close()
98-
99-
df = QgsVirtualLayerDefinition()
100-
df.setFilePath(path)
101-
df.setQuery(self.sql)
102-
103-
self.subtask = QgsVirtualLayerTask(df)
104-
self.task = LSqlResultModelTask(self.subtask, db)
105-
self.task.addSubTask(self.subtask, [], QgsTask.ParentDependsOnSubTask)
110+
self.task = LSqlResultModelTask(db, sql, parent)
106111
self.task.taskCompleted.connect(self.modelDone)
107112
self.task.taskTerminated.connect(self.modelDone)
108113

‎src/core/qgsvirtuallayertask.cpp

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
***************************************************************************/
1717

1818
#include "qgsvirtuallayertask.h"
19+
#include "qgslogger.h"
1920

2021
QgsVirtualLayerTask::QgsVirtualLayerTask( const QgsVirtualLayerDefinition &definition )
2122
: QgsTask()
@@ -27,8 +28,18 @@ QgsVirtualLayerTask::QgsVirtualLayerTask( const QgsVirtualLayerDefinition &defin
2728

2829
bool QgsVirtualLayerTask::run()
2930
{
30-
mLayer->reload(); // blocking call because the loading is postponed
31-
return mLayer->isValid();
31+
bool rc = false;
32+
try
33+
{
34+
mLayer->reload(); // blocking call because the loading is postponed
35+
rc = mLayer->isValid();
36+
}
37+
catch ( std::exception &e )
38+
{
39+
QgsDebugMsg( tr( "Reload error: %1" ).arg( e.what() ) );
40+
rc = false;
41+
}
42+
return rc;
3243
}
3344

3445
QgsVirtualLayerDefinition QgsVirtualLayerTask::definition() const

0 commit comments

Comments
 (0)
Please sign in to comment.