mirror of
https://github.com/qgis/QGIS.git
synced 2025-11-22 00:14:55 -05:00
db_manager: cleanups
This commit is contained in:
parent
d25c253d87
commit
c55f8b73f0
@ -24,7 +24,7 @@ The content of this file is based on
|
||||
|
||||
import functools
|
||||
|
||||
from PyQt.QtCore import QObject, Qt, QSettings, QByteArray, QSize
|
||||
from PyQt.QtCore import Qt, QSettings, QByteArray, QSize
|
||||
from PyQt.QtWidgets import QMainWindow, QApplication, QMenu, QTabWidget, QGridLayout, QSpacerItem, QSizePolicy, QDockWidget, QStatusBar, QMenuBar, QToolBar, QTabBar
|
||||
from PyQt.QtGui import QIcon, QKeySequence
|
||||
|
||||
@ -214,7 +214,8 @@ class DBManager(QMainWindow):
|
||||
self._registeredDbActions = {}
|
||||
|
||||
if callback is not None:
|
||||
invoke_callback = lambda x: self.invokeCallback(callback)
|
||||
def invoke_callback(x):
|
||||
return self.invokeCallback(callback)
|
||||
|
||||
if menuName is None or menuName == "":
|
||||
self.addAction(action)
|
||||
|
||||
@ -20,11 +20,11 @@ email : brush.tyler@gmail.com
|
||||
***************************************************************************/
|
||||
"""
|
||||
|
||||
from PyQt.QtCore import Qt, QObject
|
||||
from PyQt.QtCore import Qt
|
||||
from PyQt.QtWidgets import QAction, QApplication
|
||||
from PyQt.QtGui import QIcon
|
||||
|
||||
from . import resources_rc
|
||||
from . import resources_rc # NOQA
|
||||
|
||||
|
||||
class DBManagerPlugin:
|
||||
|
||||
@ -30,10 +30,10 @@ from .dlg_db_error import DlgDbError
|
||||
|
||||
from qgis.core import QgsDataSourceURI, QgsVectorLayer, QgsRasterLayer, QgsMimeDataUtils
|
||||
|
||||
from . import resources_rc
|
||||
from . import resources_rc # NOQA
|
||||
|
||||
try:
|
||||
from qgis.core import QgsVectorLayerImport
|
||||
from qgis.core import QgsVectorLayerImport # NOQA
|
||||
isImportVectorAvail = True
|
||||
except:
|
||||
isImportVectorAvail = False
|
||||
@ -491,7 +491,7 @@ class DBModel(QAbstractItemModel):
|
||||
else:
|
||||
self.notPopulated.emit(index)
|
||||
|
||||
except BaseError as e:
|
||||
except BaseError:
|
||||
item.populated = False
|
||||
return
|
||||
|
||||
|
||||
@ -42,12 +42,12 @@ def initDbPluginList():
|
||||
continue
|
||||
|
||||
try:
|
||||
exec (u"from .%s import plugin as mod" % name, globals())
|
||||
exec(u"from .%s import plugin as mod" % name, globals())
|
||||
except ImportError as e:
|
||||
DBPLUGIN_ERRORS.append(u"%s: %s" % (name, unicode(e)))
|
||||
continue
|
||||
|
||||
pluginclass = mod.classFactory()
|
||||
pluginclass = mod.classFactory() # NOQA
|
||||
SUPPORTED_DBTYPES[pluginclass.typeName()] = pluginclass
|
||||
|
||||
return len(SUPPORTED_DBTYPES) > 0
|
||||
|
||||
@ -112,7 +112,7 @@ class DBConnector:
|
||||
if c and not c.closed:
|
||||
c.close()
|
||||
|
||||
except self.error_types() as e:
|
||||
except self.error_types():
|
||||
pass
|
||||
|
||||
return
|
||||
@ -168,9 +168,9 @@ class DBConnector:
|
||||
def _get_cursor_columns(self, c):
|
||||
try:
|
||||
if c.description:
|
||||
return map(lambda x: x[0], c.description)
|
||||
return [x[0] for x in c.description]
|
||||
|
||||
except self.connection_error_types() + self.execution_error_types() as e:
|
||||
except self.connection_error_types() + self.execution_error_types():
|
||||
return []
|
||||
|
||||
@classmethod
|
||||
|
||||
@ -78,9 +78,9 @@ class BaseTableModel(QAbstractTableModel):
|
||||
# too much data to display, elide the string
|
||||
val = val[:300]
|
||||
try:
|
||||
return unicode(val) # convert to unicode
|
||||
return unicode(val) # convert to unicode
|
||||
except UnicodeDecodeError:
|
||||
return unicode(val, 'utf-8', 'replace') # convert from utf8 and replace errors (if any)
|
||||
return unicode(val, 'utf-8', 'replace') # convert from utf8 and replace errors (if any)
|
||||
|
||||
def headerData(self, section, orientation, role):
|
||||
if role != Qt.DisplayRole:
|
||||
@ -100,7 +100,7 @@ class TableDataModel(BaseTableModel):
|
||||
self.db = table.database().connector
|
||||
self.table = table
|
||||
|
||||
fieldNames = map(lambda x: x.name, table.fields())
|
||||
fieldNames = [x.name for x in table.fields()]
|
||||
BaseTableModel.__init__(self, fieldNames, None, parent)
|
||||
|
||||
# get table fields
|
||||
@ -267,7 +267,7 @@ class TableConstraintsModel(SimpleTableModel):
|
||||
QApplication.translate("DBManagerPlugin", 'Column(s)')], editable, parent)
|
||||
|
||||
def append(self, constr):
|
||||
field_names = map(lambda k_v: unicode(k_v[1].name), iter(constr.fields().items()))
|
||||
field_names = [unicode(k_v[1].name) for k_v in iter(list(constr.fields().items()))]
|
||||
data = [constr.name, constr.type2String(), u", ".join(field_names)]
|
||||
self.appendRow(self.rowFromData(data))
|
||||
row = self.rowCount() - 1
|
||||
@ -303,7 +303,7 @@ class TableIndexesModel(SimpleTableModel):
|
||||
QApplication.translate("DBManagerPlugin", 'Column(s)')], editable, parent)
|
||||
|
||||
def append(self, idx):
|
||||
field_names = map(lambda k_v1: unicode(k_v1[1].name), iter(idx.fields().items()))
|
||||
field_names = [unicode(k_v1[1].name) for k_v1 in iter(list(idx.fields().items()))]
|
||||
data = [idx.name, u", ".join(field_names)]
|
||||
self.appendRow(self.rowFromData(data))
|
||||
row = self.rowCount() - 1
|
||||
|
||||
@ -21,7 +21,7 @@ email : jef at norbit dot de
|
||||
"""
|
||||
|
||||
from PyQt.QtCore import QVariant, QDate, QTime, QDateTime, QByteArray
|
||||
from PyQt4.QtSql import QSqlDatabase, QSqlQuery, QSqlField
|
||||
from PyQt.QtSql import QSqlDatabase, QSqlQuery, QSqlField
|
||||
|
||||
paramstyle = "qmark"
|
||||
threadsafety = 1
|
||||
|
||||
@ -24,7 +24,7 @@ The content of this file is based on
|
||||
"""
|
||||
|
||||
from PyQt.QtCore import QPyNullVariant
|
||||
from PyQt4.QtSql import QSqlDatabase
|
||||
from PyQt.QtSql import QSqlDatabase
|
||||
|
||||
from ..connector import DBConnector
|
||||
from ..plugin import ConnectionError, DbError, Table
|
||||
@ -101,8 +101,7 @@ class OracleDBConnector(DBConnector):
|
||||
if (os.path.isfile(sqlite_cache_file)):
|
||||
try:
|
||||
self.cache_connection = sqlite3.connect(sqlite_cache_file)
|
||||
except sqlite3.Error as e:
|
||||
|
||||
except sqlite3.Error:
|
||||
self.cache_connection = False
|
||||
|
||||
# Find if there is cache for our connection:
|
||||
@ -117,7 +116,7 @@ class OracleDBConnector(DBConnector):
|
||||
if not has_cached:
|
||||
self.cache_connection = False
|
||||
|
||||
except sqlite3.Error as e:
|
||||
except sqlite3.Error:
|
||||
self.cache_connection = False
|
||||
|
||||
self._checkSpatial()
|
||||
@ -766,7 +765,7 @@ class OracleDBConnector(DBConnector):
|
||||
|
||||
try:
|
||||
c = self._execute(None, query)
|
||||
except DbError as e: # handle error views or other problems
|
||||
except DbError: # handle error views or other problems
|
||||
return [QGis.WKBUnknown], [-1]
|
||||
|
||||
rows = self._fetchall(c)
|
||||
@ -1071,7 +1070,7 @@ class OracleDBConnector(DBConnector):
|
||||
|
||||
try:
|
||||
c = self._execute(None, sql)
|
||||
except DbError as e: # no spatial index on table, try aggregation
|
||||
except DbError: # no spatial index on table, try aggregation
|
||||
return None
|
||||
|
||||
res = self._fetchone(c)
|
||||
@ -1106,7 +1105,7 @@ class OracleDBConnector(DBConnector):
|
||||
sql = request.format(where, dimension)
|
||||
try:
|
||||
c = self._execute(None, sql)
|
||||
except DbError as e: # no statistics for the current table
|
||||
except DbError: # no statistics for the current table
|
||||
return None
|
||||
|
||||
res_d = self._fetchone(c)
|
||||
@ -1160,7 +1159,7 @@ class OracleDBConnector(DBConnector):
|
||||
None,
|
||||
(u"SELECT CS_NAME FROM MDSYS.CS_SRS WHERE"
|
||||
u" SRID = {}".format(srid)))
|
||||
except DbError as e:
|
||||
except DbError:
|
||||
return
|
||||
sr = self._fetchone(c)
|
||||
c.close()
|
||||
@ -1212,8 +1211,6 @@ class OracleDBConnector(DBConnector):
|
||||
"""Delete table and its reference in sdo_geom_metadata."""
|
||||
|
||||
schema, tablename = self.getSchemaTableName(table)
|
||||
schema_part = u"AND owner = {} ".format(
|
||||
self.quoteString(schema)) if schema else ""
|
||||
|
||||
if self.isVectorTable(table):
|
||||
self.deleteMetadata(table)
|
||||
@ -1283,8 +1280,6 @@ class OracleDBConnector(DBConnector):
|
||||
def deleteView(self, view):
|
||||
"""Delete a view."""
|
||||
schema, tablename = self.getSchemaTableName(view)
|
||||
schema_part = u"AND owner = {} ".format(
|
||||
self.quoteString(schema)) if schema else ""
|
||||
|
||||
if self.isVectorTable(view):
|
||||
self.deleteMetadata(view)
|
||||
@ -1645,7 +1640,7 @@ class OracleDBConnector(DBConnector):
|
||||
if c:
|
||||
c.close()
|
||||
|
||||
except self.error_types() as e:
|
||||
except self.error_types():
|
||||
pass
|
||||
|
||||
return
|
||||
@ -1682,11 +1677,6 @@ class OracleDBConnector(DBConnector):
|
||||
# def _get_cursor_columns(self, c):
|
||||
# pass
|
||||
|
||||
def getQueryBuilderDictionary(self):
|
||||
from .sql_dictionary import getQueryBuilderDictionary
|
||||
|
||||
return getQueryBuilderDictionary()
|
||||
|
||||
def getSqlDictionary(self):
|
||||
"""Returns the dictionary for SQL dialog."""
|
||||
from .sql_dictionary import getSqlDictionary
|
||||
|
||||
@ -219,7 +219,7 @@ class ORTableInfo(TableInfo):
|
||||
# primary key defined?
|
||||
if (not self.table.isView
|
||||
and self.table.objectType != u"MATERIALIZED VIEW"):
|
||||
pk = filter(lambda fld: fld.primaryKey, self.table.fields())
|
||||
pk = [fld for fld in self.table.fields() if fld.primaryKey]
|
||||
if len(pk) <= 0:
|
||||
ret.append(
|
||||
HtmlParagraph(QApplication.translate(
|
||||
|
||||
@ -38,7 +38,7 @@ from ..plugin import ConnectionError, InvalidDataException, DBPlugin, \
|
||||
|
||||
from qgis.core import QgsCredentials
|
||||
|
||||
from . import resources_rc
|
||||
from . import resources_rc # NOQA
|
||||
|
||||
|
||||
def classFactory():
|
||||
@ -91,12 +91,7 @@ class OracleDBPlugin(DBPlugin):
|
||||
uri = QgsDataSourceURI()
|
||||
|
||||
settingsList = ["host", "port", "database", "username", "password"]
|
||||
host, port, database, username, password = map(
|
||||
lambda x: settings.value(x, "", type=str), settingsList)
|
||||
|
||||
# qgis1.5 use 'savePassword' instead of 'save' setting
|
||||
savedPassword = settings.value("save", False, type=bool) or \
|
||||
settings.value("savePassword", False, type=bool)
|
||||
host, port, database, username, password = [settings.value(x, "", type=str) for x in settingsList]
|
||||
|
||||
# get all of the connexion options
|
||||
|
||||
@ -348,14 +343,14 @@ class ORTable(Table):
|
||||
QApplication.setOverrideCursor(Qt.WaitCursor)
|
||||
|
||||
if index_action == "rebuild":
|
||||
self.emitAboutToChange()
|
||||
self.aboutToChange.emit()
|
||||
self.database().connector.rebuildTableIndex(
|
||||
(self.schemaName(), self.name), index_name)
|
||||
self.refreshIndexes()
|
||||
return True
|
||||
elif action.startswith(u"mview/"):
|
||||
if action == "mview/refresh":
|
||||
self.emitAboutToChange()
|
||||
self.aboutToChange.emit()
|
||||
self.database().connector.refreshMView(
|
||||
(self.schemaName(), self.name))
|
||||
return True
|
||||
@ -391,7 +386,7 @@ class ORTable(Table):
|
||||
ret = []
|
||||
|
||||
# add the pk
|
||||
pkcols = filter(lambda x: x.primaryKey, self.fields())
|
||||
pkcols = [x for x in self.fields() if x.primaryKey]
|
||||
if len(pkcols) == 1:
|
||||
ret.append(pkcols[0])
|
||||
|
||||
@ -452,7 +447,7 @@ class ORVectorTable(ORTable, VectorTable):
|
||||
def runAction(self, action):
|
||||
if action.startswith("extent/"):
|
||||
if action == "extent/update":
|
||||
self.emitAboutToChange()
|
||||
self.aboutToChange.emit()
|
||||
self.updateExtent()
|
||||
return True
|
||||
|
||||
|
||||
@ -289,10 +289,10 @@ def getSqlDictionary(spatial=True):
|
||||
def getQueryBuilderDictionary():
|
||||
# concat functions
|
||||
def ff(l):
|
||||
return filter(lambda s: s[0] != '*', l)
|
||||
return [s for s in l if s[0] != '*']
|
||||
|
||||
def add_paren(l):
|
||||
return map(lambda s: s + "(", l)
|
||||
return [s + "(" for s in l]
|
||||
|
||||
foo = sorted(
|
||||
add_paren(
|
||||
|
||||
@ -39,7 +39,7 @@ class BaseError(Exception):
|
||||
msg = e
|
||||
|
||||
if not isinstance(msg, unicode):
|
||||
msg = unicode(msg, 'utf-8', 'replace') # convert from utf8 and replace errors (if any)
|
||||
msg = unicode(msg, 'utf-8', 'replace') # convert from utf8 and replace errors (if any)
|
||||
|
||||
self.msg = msg
|
||||
Exception.__init__(self, msg)
|
||||
@ -198,9 +198,6 @@ class DbItemObject(QObject):
|
||||
def refresh(self):
|
||||
self.changed.emit() # refresh the item data reading them from the db
|
||||
|
||||
def emitAboutToChange(self):
|
||||
self.aboutToChange.emit()
|
||||
|
||||
def info(self):
|
||||
pass
|
||||
|
||||
@ -240,7 +237,7 @@ class Database(DbItemObject):
|
||||
return self.connector.publicUri()
|
||||
|
||||
def delete(self):
|
||||
self.emitAboutToChange()
|
||||
self.aboutToChange.emit()
|
||||
ret = self.connection().remove()
|
||||
if ret is not False:
|
||||
self.deleted.emit()
|
||||
@ -300,7 +297,7 @@ class Database(DbItemObject):
|
||||
except ImportError:
|
||||
pass
|
||||
else:
|
||||
load(self, mainWindow)
|
||||
load(self, mainWindow) # NOQA
|
||||
|
||||
def registerDatabaseActions(self, mainWindow):
|
||||
action = QAction(QApplication.translate("DBManagerPlugin", "&Re-connect"), self)
|
||||
@ -337,7 +334,10 @@ class Database(DbItemObject):
|
||||
if self.schemas() is not None:
|
||||
action = QAction(QApplication.translate("DBManagerPlugin", "&Move to schema"), self)
|
||||
action.setMenu(QMenu(mainWindow))
|
||||
invoke_callback = lambda: mainWindow.invokeCallback(self.prepareMenuMoveTableToSchemaActionSlot)
|
||||
|
||||
def invoke_callback():
|
||||
return mainWindow.invokeCallback(self.prepareMenuMoveTableToSchemaActionSlot)
|
||||
|
||||
action.menu().aboutToShow.connect(invoke_callback)
|
||||
mainWindow.registerAction(action, QApplication.translate("DBManagerPlugin", "&Table"))
|
||||
|
||||
@ -399,7 +399,7 @@ class Database(DbItemObject):
|
||||
def schemas(self):
|
||||
schemas = self.connector.getSchemas()
|
||||
if schemas is not None:
|
||||
schemas = map(lambda x: self.schemasFactory(x, self), schemas)
|
||||
schemas = [self.schemasFactory(x, self) for x in schemas]
|
||||
return schemas
|
||||
|
||||
def createSchema(self, name):
|
||||
@ -470,7 +470,8 @@ class Database(DbItemObject):
|
||||
|
||||
def prepareMenuMoveTableToSchemaActionSlot(self, item, menu, mainWindow):
|
||||
""" populate menu with schemas """
|
||||
slot = lambda x: lambda: mainWindow.invokeCallback(self.moveTableToSchemaActionSlot, x)
|
||||
def slot(x):
|
||||
return lambda: mainWindow.invokeCallback(self.moveTableToSchemaActionSlot, x)
|
||||
|
||||
menu.clear()
|
||||
for schema in self.schemas():
|
||||
@ -508,12 +509,12 @@ class Database(DbItemObject):
|
||||
def tables(self, schema=None, sys_tables=False):
|
||||
tables = self.connector.getTables(schema.name if schema else None, sys_tables)
|
||||
if tables is not None:
|
||||
tables = map(lambda x: self.tablesFactory(x, self, schema), tables)
|
||||
tables = [self.tablesFactory(x, self, schema) for x in tables]
|
||||
return tables
|
||||
|
||||
def createTable(self, table, fields, schema=None):
|
||||
field_defs = map(lambda x: x.definition(), fields)
|
||||
pkeys = filter(lambda x: x.primaryKey, fields)
|
||||
field_defs = [x.definition() for x in fields]
|
||||
pkeys = [x for x in fields if x.primaryKey]
|
||||
pk_name = pkeys[0].name if len(pkeys) > 0 else None
|
||||
|
||||
ret = self.connector.createTable((schema, table), field_defs, pk_name)
|
||||
@ -571,14 +572,14 @@ class Schema(DbItemObject):
|
||||
return self.database().tables(self)
|
||||
|
||||
def delete(self):
|
||||
self.emitAboutToChange()
|
||||
self.aboutToChange.emit()
|
||||
ret = self.database().connector.deleteSchema(self.name)
|
||||
if ret is not False:
|
||||
self.deleted.emit()
|
||||
return ret
|
||||
|
||||
def rename(self, new_name):
|
||||
self.emitAboutToChange()
|
||||
self.aboutToChange.emit()
|
||||
ret = self.database().connector.renameSchema(self.name, new_name)
|
||||
if ret is not False:
|
||||
self.name = new_name
|
||||
@ -626,7 +627,7 @@ class Table(DbItemObject):
|
||||
return self.database().connector.quoteId((self.schemaName(), self.name))
|
||||
|
||||
def delete(self):
|
||||
self.emitAboutToChange()
|
||||
self.aboutToChange.emit()
|
||||
if self.isView:
|
||||
ret = self.database().connector.deleteView((self.schemaName(), self.name))
|
||||
else:
|
||||
@ -636,7 +637,7 @@ class Table(DbItemObject):
|
||||
return ret
|
||||
|
||||
def rename(self, new_name):
|
||||
self.emitAboutToChange()
|
||||
self.aboutToChange.emit()
|
||||
ret = self.database().connector.renameTable((self.schemaName(), self.name), new_name)
|
||||
if ret is not False:
|
||||
self.name = new_name
|
||||
@ -644,14 +645,14 @@ class Table(DbItemObject):
|
||||
return ret
|
||||
|
||||
def empty(self):
|
||||
self.emitAboutToChange()
|
||||
self.aboutToChange.emit()
|
||||
ret = self.database().connector.emptyTable((self.schemaName(), self.name))
|
||||
if ret is not False:
|
||||
self.refreshRowCount()
|
||||
return ret
|
||||
|
||||
def moveToSchema(self, schema):
|
||||
self.emitAboutToChange()
|
||||
self.aboutToChange.emit()
|
||||
if self.schema() == schema:
|
||||
return True
|
||||
ret = self.database().connector.moveTableToSchema((self.schemaName(), self.name), schema.name)
|
||||
@ -694,7 +695,7 @@ class Table(DbItemObject):
|
||||
ret = []
|
||||
|
||||
# add the pk
|
||||
pkcols = filter(lambda x: x.primaryKey, self.fields())
|
||||
pkcols = [x for x in self.fields() if x.primaryKey]
|
||||
if len(pkcols) == 1:
|
||||
ret.append(pkcols[0])
|
||||
|
||||
@ -726,7 +727,7 @@ class Table(DbItemObject):
|
||||
if self._fields is None:
|
||||
fields = self.database().connector.getTableFields((self.schemaName(), self.name))
|
||||
if fields is not None:
|
||||
self._fields = map(lambda x: self.tableFieldsFactory(x, self), fields)
|
||||
self._fields = [self.tableFieldsFactory(x, self) for x in fields]
|
||||
return self._fields
|
||||
|
||||
def refreshFields(self):
|
||||
@ -734,14 +735,14 @@ class Table(DbItemObject):
|
||||
self.refresh()
|
||||
|
||||
def addField(self, fld):
|
||||
self.emitAboutToChange()
|
||||
self.aboutToChange.emit()
|
||||
ret = self.database().connector.addTableColumn((self.schemaName(), self.name), fld.definition())
|
||||
if ret is not False:
|
||||
self.refreshFields()
|
||||
return ret
|
||||
|
||||
def deleteField(self, fld):
|
||||
self.emitAboutToChange()
|
||||
self.aboutToChange.emit()
|
||||
ret = self.database().connector.deleteTableColumn((self.schemaName(), self.name), fld.name)
|
||||
if ret is not False:
|
||||
self.refreshFields()
|
||||
@ -750,7 +751,7 @@ class Table(DbItemObject):
|
||||
return ret
|
||||
|
||||
def addGeometryColumn(self, geomCol, geomType, srid, dim, createSpatialIndex=False):
|
||||
self.emitAboutToChange()
|
||||
self.aboutToChange.emit()
|
||||
ret = self.database().connector.addGeometryColumn((self.schemaName(), self.name), geomCol, geomType, srid, dim)
|
||||
if not ret:
|
||||
return False
|
||||
@ -772,7 +773,7 @@ class Table(DbItemObject):
|
||||
if self._constraints is None:
|
||||
constraints = self.database().connector.getTableConstraints((self.schemaName(), self.name))
|
||||
if constraints is not None:
|
||||
self._constraints = map(lambda x: self.tableConstraintsFactory(x, self), constraints)
|
||||
self._constraints = [self.tableConstraintsFactory(x, self) for x in constraints]
|
||||
return self._constraints
|
||||
|
||||
def refreshConstraints(self):
|
||||
@ -780,7 +781,7 @@ class Table(DbItemObject):
|
||||
self.refresh()
|
||||
|
||||
def addConstraint(self, constr):
|
||||
self.emitAboutToChange()
|
||||
self.aboutToChange.emit()
|
||||
if constr.type == TableConstraint.TypePrimaryKey:
|
||||
ret = self.database().connector.addTablePrimaryKey((self.schemaName(), self.name),
|
||||
constr.fields()[constr.columns[0]].name)
|
||||
@ -794,7 +795,7 @@ class Table(DbItemObject):
|
||||
return ret
|
||||
|
||||
def deleteConstraint(self, constr):
|
||||
self.emitAboutToChange()
|
||||
self.aboutToChange.emit()
|
||||
ret = self.database().connector.deleteTableConstraint((self.schemaName(), self.name), constr.name)
|
||||
if ret is not False:
|
||||
self.refreshConstraints()
|
||||
@ -807,7 +808,7 @@ class Table(DbItemObject):
|
||||
if self._indexes is None:
|
||||
indexes = self.database().connector.getTableIndexes((self.schemaName(), self.name))
|
||||
if indexes is not None:
|
||||
self._indexes = map(lambda x: self.tableIndexesFactory(x, self), indexes)
|
||||
self._indexes = [self.tableIndexesFactory(x, self) for x in indexes]
|
||||
return self._indexes
|
||||
|
||||
def refreshIndexes(self):
|
||||
@ -815,7 +816,7 @@ class Table(DbItemObject):
|
||||
self.refresh()
|
||||
|
||||
def addIndex(self, idx):
|
||||
self.emitAboutToChange()
|
||||
self.aboutToChange.emit()
|
||||
ret = self.database().connector.createTableIndex((self.schemaName(), self.name), idx.name,
|
||||
idx.fields()[idx.columns[0]].name)
|
||||
if ret is not False:
|
||||
@ -823,7 +824,7 @@ class Table(DbItemObject):
|
||||
return ret
|
||||
|
||||
def deleteIndex(self, idx):
|
||||
self.emitAboutToChange()
|
||||
self.aboutToChange.emit()
|
||||
ret = self.database().connector.deleteTableIndex((self.schemaName(), self.name), idx.name)
|
||||
if ret is not False:
|
||||
self.refreshIndexes()
|
||||
@ -836,7 +837,7 @@ class Table(DbItemObject):
|
||||
if self._triggers is None:
|
||||
triggers = self.database().connector.getTableTriggers((self.schemaName(), self.name))
|
||||
if triggers is not None:
|
||||
self._triggers = map(lambda x: self.tableTriggersFactory(x, self), triggers)
|
||||
self._triggers = [self.tableTriggersFactory(x, self) for x in triggers]
|
||||
return self._triggers
|
||||
|
||||
def refreshTriggers(self):
|
||||
@ -850,7 +851,7 @@ class Table(DbItemObject):
|
||||
if self._rules is None:
|
||||
rules = self.database().connector.getTableRules((self.schemaName(), self.name))
|
||||
if rules is not None:
|
||||
self._rules = map(lambda x: self.tableRulesFactory(x, self), rules)
|
||||
self._rules = [self.tableRulesFactory(x, self) for x in rules]
|
||||
return self._rules
|
||||
|
||||
def refreshRules(self):
|
||||
@ -858,7 +859,7 @@ class Table(DbItemObject):
|
||||
self.refresh()
|
||||
|
||||
def refreshRowCount(self):
|
||||
self.emitAboutToChange()
|
||||
self.aboutToChange.emit()
|
||||
prevRowCount = self.rowCount
|
||||
try:
|
||||
self.rowCount = self.database().connector.getTableRowCount((self.schemaName(), self.name))
|
||||
@ -891,7 +892,7 @@ class Table(DbItemObject):
|
||||
|
||||
if trigger_action == "enable" or trigger_action == "disable":
|
||||
enable = trigger_action == "enable"
|
||||
self.emitAboutToChange()
|
||||
self.aboutToChange.emit()
|
||||
self.database().connector.enableAllTableTriggers(enable, (self.schemaName(), self.name))
|
||||
self.refreshTriggers()
|
||||
return True
|
||||
@ -912,14 +913,14 @@ class Table(DbItemObject):
|
||||
QApplication.setOverrideCursor(Qt.WaitCursor)
|
||||
|
||||
if trigger_action == "delete":
|
||||
self.emitAboutToChange()
|
||||
self.aboutToChange.emit()
|
||||
self.database().connector.deleteTableTrigger(trigger_name, (self.schemaName(), self.name))
|
||||
self.refreshTriggers()
|
||||
return True
|
||||
|
||||
elif trigger_action == "enable" or trigger_action == "disable":
|
||||
enable = trigger_action == "enable"
|
||||
self.emitAboutToChange()
|
||||
self.aboutToChange.emit()
|
||||
self.database().connector.enableTableTrigger(trigger_name, enable, (self.schemaName(), self.name))
|
||||
self.refreshTriggers()
|
||||
return True
|
||||
@ -956,7 +957,7 @@ class VectorTable(Table):
|
||||
return False
|
||||
|
||||
def createSpatialIndex(self, geom_column=None):
|
||||
self.emitAboutToChange()
|
||||
self.aboutToChange.emit()
|
||||
geom_column = geom_column if geom_column is not None else self.geomColumn
|
||||
ret = self.database().connector.createSpatialIndex((self.schemaName(), self.name), geom_column)
|
||||
if ret is not False:
|
||||
@ -964,7 +965,7 @@ class VectorTable(Table):
|
||||
return ret
|
||||
|
||||
def deleteSpatialIndex(self, geom_column=None):
|
||||
self.emitAboutToChange()
|
||||
self.aboutToChange.emit()
|
||||
geom_column = geom_column if geom_column is not None else self.geomColumn
|
||||
ret = self.database().connector.deleteSpatialIndex((self.schemaName(), self.name), geom_column)
|
||||
if ret is not False:
|
||||
|
||||
@ -612,7 +612,7 @@ class PostGisDBConnector(DBConnector):
|
||||
|
||||
try:
|
||||
c = self._execute(None, sql)
|
||||
except DbError as e: # no statistics for the current table
|
||||
except DbError: # No statistics for the current table
|
||||
return
|
||||
res = self._fetchone(c)
|
||||
self._close_cursor(c)
|
||||
@ -640,7 +640,7 @@ class PostGisDBConnector(DBConnector):
|
||||
|
||||
try:
|
||||
c = self._execute(None, "SELECT srtext FROM spatial_ref_sys WHERE srid = '%d'" % srid)
|
||||
except DbError as e:
|
||||
except DbError:
|
||||
return
|
||||
sr = self._fetchone(c)
|
||||
self._close_cursor(c)
|
||||
|
||||
@ -20,7 +20,6 @@ email : brush.tyler@gmail.com
|
||||
***************************************************************************/
|
||||
"""
|
||||
|
||||
from PyQt4.QtCore import SIGNAL
|
||||
|
||||
from ..data_model import TableDataModel, SqlResultModel
|
||||
|
||||
|
||||
@ -106,7 +106,7 @@ class PGTableInfo(TableInfo):
|
||||
|
||||
# primary key defined?
|
||||
if not self.table.isView:
|
||||
if len(filter(lambda fld: fld.primaryKey, self.table.fields())) <= 0:
|
||||
if len([fld for fld in self.table.fields() if fld.primaryKey]) <= 0:
|
||||
ret.append(HtmlParagraph(
|
||||
QApplication.translate("DBManagerPlugin", "<warning> No primary key defined for this table!")))
|
||||
|
||||
|
||||
@ -33,7 +33,7 @@ from ..plugin import ConnectionError, InvalidDataException, DBPlugin, Database,
|
||||
|
||||
import re
|
||||
|
||||
from . import resources_rc
|
||||
from . import resources_rc # NOQA
|
||||
|
||||
|
||||
def classFactory():
|
||||
@ -78,7 +78,7 @@ class PostGisDBPlugin(DBPlugin):
|
||||
uri = QgsDataSourceURI()
|
||||
|
||||
settingsList = ["service", "host", "port", "database", "username", "password", "authcfg"]
|
||||
service, host, port, database, username, password, authcfg = map(lambda x: settings.value(x, "", type=str), settingsList)
|
||||
service, host, port, database, username, password, authcfg = [settings.value(x, "", type=str) for x in settingsList]
|
||||
|
||||
useEstimatedMetadata = settings.value("estimatedMetadata", False, type=bool)
|
||||
sslmode = settings.value("sslmode", QgsDataSourceURI.SSLprefer, type=int)
|
||||
@ -94,7 +94,7 @@ class PostGisDBPlugin(DBPlugin):
|
||||
|
||||
try:
|
||||
return self.connectToUri(uri)
|
||||
except ConnectionError as e:
|
||||
except ConnectionError:
|
||||
return False
|
||||
|
||||
|
||||
@ -163,7 +163,7 @@ class PGTable(Table):
|
||||
self.estimatedRowCount = int(self.estimatedRowCount)
|
||||
|
||||
def runVacuumAnalyze(self):
|
||||
self.emitAboutToChange()
|
||||
self.aboutToChange.emit()
|
||||
self.database().connector.runVacuumAnalyze((self.schemaName(), self.name))
|
||||
# TODO: change only this item, not re-create all the tables in the schema/database
|
||||
self.schema().refresh() if self.schema() else self.database().refresh()
|
||||
@ -193,7 +193,7 @@ class PGTable(Table):
|
||||
QApplication.setOverrideCursor(Qt.WaitCursor)
|
||||
|
||||
if rule_action == "delete":
|
||||
self.emitAboutToChange()
|
||||
self.aboutToChange.emit()
|
||||
self.database().connector.deleteTableRule(rule_name, (self.schemaName(), self.name))
|
||||
self.refreshRules()
|
||||
return True
|
||||
@ -226,12 +226,12 @@ class PGTable(Table):
|
||||
return PGTableDataModel(self, parent)
|
||||
|
||||
def delete(self):
|
||||
self.emitAboutToChange()
|
||||
self.aboutToChange.emit()
|
||||
if self.isView:
|
||||
ret = self.database().connector.deleteView((self.schemaName(), self.name), self._relationType == 'm')
|
||||
else:
|
||||
ret = self.database().connector.deleteTable((self.schemaName(), self.name))
|
||||
if ret is not False:
|
||||
if not ret:
|
||||
self.deleted.emit()
|
||||
return ret
|
||||
|
||||
|
||||
@ -31,7 +31,7 @@ def load(dbplugin, mainwindow):
|
||||
continue
|
||||
try:
|
||||
exec (u"from .%s import load" % name)
|
||||
except ImportError as e:
|
||||
except ImportError:
|
||||
continue
|
||||
|
||||
load(dbplugin, mainwindow)
|
||||
|
||||
@ -86,7 +86,7 @@ class DlgVersioning(QDialog, Ui_DlgVersioning):
|
||||
schemas = self.db.schemas()
|
||||
if schemas is not None:
|
||||
schema_name = self.cboSchema.currentText()
|
||||
matching_schemas = filter(lambda x: x.name == schema_name, schemas)
|
||||
matching_schemas = [x for x in schemas if x.name == schema_name]
|
||||
tables = matching_schemas[0].tables() if len(matching_schemas) > 0 else []
|
||||
else:
|
||||
tables = self.db.tables()
|
||||
@ -115,13 +115,13 @@ class DlgVersioning(QDialog, Ui_DlgVersioning):
|
||||
self.colStart = self.db.connector.quoteId(self.editStart.text())
|
||||
self.colEnd = self.db.connector.quoteId(self.editEnd.text())
|
||||
|
||||
self.columns = map(lambda x: self.db.connector.quoteId(x.name), self.table.fields())
|
||||
self.columns = [self.db.connector.quoteId(x.name) for x in self.table.fields()]
|
||||
|
||||
self.colOrigPkey = None
|
||||
for constr in self.table.constraints():
|
||||
if constr.type == constr.TypePrimaryKey:
|
||||
self.origPkeyName = self.db.connector.quoteId(constr.name)
|
||||
self.colOrigPkey = map(lambda x_y: self.db.connector.quoteId(x_y[1].name), iter(constr.fields().items()))
|
||||
self.colOrigPkey = [self.db.connector.quoteId(x_y[1].name) for x_y in iter(list(constr.fields().items()))]
|
||||
break
|
||||
|
||||
if self.colOrigPkey is None:
|
||||
@ -188,7 +188,7 @@ class DlgVersioning(QDialog, Ui_DlgVersioning):
|
||||
|
||||
def sql_functions(self):
|
||||
cols = ",".join(self.columns)
|
||||
old_cols = ",".join(map(lambda x: u"OLD." + x, self.columns))
|
||||
old_cols = ",".join([u"OLD." + x for x in self.columns])
|
||||
|
||||
sql = u"""
|
||||
CREATE OR REPLACE FUNCTION %(func_at_time)s(timestamp)
|
||||
@ -247,8 +247,8 @@ FOR EACH ROW EXECUTE PROCEDURE %(func_insert)s();""" % \
|
||||
|
||||
def sql_updatesView(self):
|
||||
cols = ",".join(self.columns)
|
||||
new_cols = ",".join(map(lambda x: u"NEW." + x, self.columns))
|
||||
assign_cols = ",".join(map(lambda x: u"%s = NEW.%s" % (x, x), self.columns))
|
||||
new_cols = ",".join([u"NEW." + x for x in self.columns])
|
||||
assign_cols = ",".join([u"%s = NEW.%s" % (x, x) for x in self.columns])
|
||||
|
||||
return u"""
|
||||
CREATE OR REPLACE RULE "_DELETE" AS ON DELETE TO %(view)s DO INSTEAD
|
||||
|
||||
@ -202,10 +202,10 @@ def getSqlDictionary(spatial=True):
|
||||
def getQueryBuilderDictionary():
|
||||
# concat functions
|
||||
def ff(l):
|
||||
return filter(lambda s: s[0] != '*', l)
|
||||
return [s for s in l if s[0] != '*']
|
||||
|
||||
def add_paren(l):
|
||||
return map(lambda s: s + "(", l)
|
||||
return [s + "(" for s in l]
|
||||
foo = sorted(add_paren(ff(list(set.union(set(functions), set(postgis_functions))))))
|
||||
m = sorted(add_paren(ff(math_functions)))
|
||||
agg = sorted(add_paren(ff(aggregate_functions)))
|
||||
|
||||
@ -61,7 +61,7 @@ class SpatiaLiteDBConnector(DBConnector):
|
||||
return False
|
||||
try:
|
||||
conn = sqlite.connect(path)
|
||||
except self.connection_error_types() as e:
|
||||
except self.connection_error_types():
|
||||
return False
|
||||
conn.close()
|
||||
return True
|
||||
@ -88,7 +88,7 @@ class SpatiaLiteDBConnector(DBConnector):
|
||||
v = c.fetchone()[0]
|
||||
self.has_geometry_columns = v == 1 or v == 3
|
||||
self.has_spatialite4 = v == 3
|
||||
except Exception as e:
|
||||
except Exception:
|
||||
self.has_geometry_columns = False
|
||||
self.has_spatialite4 = False
|
||||
|
||||
@ -108,7 +108,7 @@ class SpatiaLiteDBConnector(DBConnector):
|
||||
result = self._execute(None, sql).fetchone()[0] == 1
|
||||
except ConnectionError:
|
||||
result = False
|
||||
except Exception as e:
|
||||
except Exception:
|
||||
# SpatiaLite < 4.2 does not have HasGeoPackage() function
|
||||
result = False
|
||||
|
||||
@ -325,7 +325,7 @@ class SpatiaLiteDBConnector(DBConnector):
|
||||
"""
|
||||
|
||||
if self.is_gpkg:
|
||||
return [] # Not implemented
|
||||
return [] # Not implemented
|
||||
if not self.has_geometry_columns:
|
||||
return []
|
||||
if not self.has_raster:
|
||||
@ -488,7 +488,7 @@ class SpatiaLiteDBConnector(DBConnector):
|
||||
if self.isRasterTable(table):
|
||||
return False
|
||||
if self.is_gpkg:
|
||||
return False # Not implemented
|
||||
return False # Not implemented
|
||||
|
||||
c = self._get_cursor()
|
||||
sql = u"DROP TABLE %s" % self.quoteId(table)
|
||||
@ -503,7 +503,7 @@ class SpatiaLiteDBConnector(DBConnector):
|
||||
if self.isRasterTable(table):
|
||||
return False
|
||||
if self.is_gpkg:
|
||||
return False # Not implemented
|
||||
return False # Not implemented
|
||||
|
||||
sql = u"DELETE FROM %s" % self.quoteId(table)
|
||||
self._execute_and_commit(sql)
|
||||
@ -517,7 +517,7 @@ class SpatiaLiteDBConnector(DBConnector):
|
||||
if self.isRasterTable(table):
|
||||
return False
|
||||
if self.is_gpkg:
|
||||
return False # Not implemented
|
||||
return False # Not implemented
|
||||
|
||||
c = self._get_cursor()
|
||||
|
||||
@ -558,7 +558,7 @@ class SpatiaLiteDBConnector(DBConnector):
|
||||
|
||||
def createSpatialView(self, view, query):
|
||||
if self.is_gpkg:
|
||||
return False # Not implemented
|
||||
return False # Not implemented
|
||||
|
||||
self.createView(view, query)
|
||||
# get type info about the view
|
||||
@ -639,7 +639,7 @@ class SpatiaLiteDBConnector(DBConnector):
|
||||
|
||||
def isGeometryColumn(self, table, column):
|
||||
if self.is_gpkg:
|
||||
return False # Not implemented
|
||||
return False # Not implemented
|
||||
|
||||
c = self._get_cursor()
|
||||
schema, tablename = self.getSchemaTableName(table)
|
||||
@ -650,7 +650,7 @@ class SpatiaLiteDBConnector(DBConnector):
|
||||
|
||||
def addGeometryColumn(self, table, geom_column='geometry', geom_type='POINT', srid=-1, dim=2):
|
||||
if self.is_gpkg:
|
||||
return False # Not implemented
|
||||
return False # Not implemented
|
||||
|
||||
schema, tablename = self.getSchemaTableName(table)
|
||||
sql = u"SELECT AddGeometryColumn(%s, %s, %d, %s, %s)" % (
|
||||
@ -689,7 +689,7 @@ class SpatiaLiteDBConnector(DBConnector):
|
||||
if self.isRasterTable(table):
|
||||
return False
|
||||
if self.is_gpkg:
|
||||
return False # Not implemented
|
||||
return False # Not implemented
|
||||
|
||||
schema, tablename = self.getSchemaTableName(table)
|
||||
sql = u"SELECT CreateSpatialIndex(%s, %s)" % (self.quoteString(tablename), self.quoteString(geom_column))
|
||||
@ -699,7 +699,7 @@ class SpatiaLiteDBConnector(DBConnector):
|
||||
if self.isRasterTable(table):
|
||||
return False
|
||||
if self.is_gpkg:
|
||||
return False # Not implemented
|
||||
return False # Not implemented
|
||||
|
||||
schema, tablename = self.getSchemaTableName(table)
|
||||
try:
|
||||
@ -714,7 +714,7 @@ class SpatiaLiteDBConnector(DBConnector):
|
||||
|
||||
def hasSpatialIndex(self, table, geom_column='geometry'):
|
||||
if self.is_gpkg:
|
||||
return False # Not implemented
|
||||
return False # Not implemented
|
||||
if not self.has_geometry_columns or self.isRasterTable(table):
|
||||
return False
|
||||
c = self._get_cursor()
|
||||
|
||||
@ -32,7 +32,7 @@ from qgis.gui import QgsMessageBar
|
||||
from ..plugin import DBPlugin, Database, Table, VectorTable, RasterTable, TableField, TableIndex, TableTrigger, \
|
||||
InvalidDataException
|
||||
|
||||
from . import resources_rc
|
||||
from . import resources_rc # NOQA
|
||||
|
||||
|
||||
def classFactory():
|
||||
@ -236,14 +236,14 @@ class SLVectorTable(SLTable, VectorTable):
|
||||
return self.database().connector.hasSpatialIndex((self.schemaName(), self.name), geom_column)
|
||||
|
||||
def createSpatialIndex(self, geom_column=None):
|
||||
self.emitAboutToChange()
|
||||
self.aboutToChange.emit()
|
||||
ret = VectorTable.createSpatialIndex(self, geom_column)
|
||||
if ret is not False:
|
||||
self.database().refresh()
|
||||
return ret
|
||||
|
||||
def deleteSpatialIndex(self, geom_column=None):
|
||||
self.emitAboutToChange()
|
||||
self.aboutToChange.emit()
|
||||
ret = VectorTable.deleteSpatialIndex(self, geom_column)
|
||||
if ret is not False:
|
||||
self.database().refresh()
|
||||
|
||||
@ -147,10 +147,10 @@ def getSqlDictionary(spatial=True):
|
||||
def getQueryBuilderDictionary():
|
||||
# concat functions
|
||||
def ff(l):
|
||||
return filter(lambda s: s[0] != '*', l)
|
||||
return [s for s in l if s[0] != '*']
|
||||
|
||||
def add_paren(l):
|
||||
return map(lambda s: s + "(", l)
|
||||
return [s + "(" for s in l]
|
||||
foo = sorted(add_paren(ff(list(set.union(set(functions), set(spatialite_functions))))))
|
||||
m = sorted(add_paren(ff(math_functions)))
|
||||
agg = sorted(add_paren(ff(aggregate_functions)))
|
||||
|
||||
@ -64,7 +64,7 @@ class VLayerRegistry:
|
||||
|
||||
@classmethod
|
||||
def instance(cls):
|
||||
if cls._instance == None:
|
||||
if cls._instance is None:
|
||||
cls._instance = VLayerRegistry()
|
||||
return cls._instance
|
||||
|
||||
|
||||
@ -36,7 +36,7 @@ class LDatabaseInfo(DatabaseInfo):
|
||||
return HtmlTable(tbl)
|
||||
|
||||
def generalInfo(self):
|
||||
info = self.db.connector.getInfo()
|
||||
self.db.connector.getInfo()
|
||||
tbl = [
|
||||
(QApplication.translate("DBManagerPlugin", "SQLite version:"), "3")
|
||||
]
|
||||
|
||||
@ -28,7 +28,7 @@ from qgis.core import QgsVectorLayer, QgsMapLayerRegistry
|
||||
|
||||
from ..plugin import DBPlugin, Database, Table, VectorTable, TableField
|
||||
|
||||
from . import resources_rc
|
||||
from . import resources_rc # NOQA
|
||||
|
||||
|
||||
def classFactory():
|
||||
|
||||
@ -164,10 +164,10 @@ def getSqlDictionary(spatial=True):
|
||||
def getQueryBuilderDictionary():
|
||||
# concat functions
|
||||
def ff(l):
|
||||
return filter(lambda s: s[0] != '*', l)
|
||||
return [s for s in l if s[0] != '*']
|
||||
|
||||
def add_paren(l):
|
||||
return map(lambda s: s + "(", l)
|
||||
return [s + "(" for s in l]
|
||||
foo = sorted(add_paren(ff(list(set.union(set(functions), set(spatialite_functions), set(qgis_functions))))))
|
||||
m = sorted(add_paren(ff(math_functions)))
|
||||
agg = sorted(add_paren(ff(aggregate_functions)))
|
||||
|
||||
@ -20,13 +20,13 @@ email : brush.tyler@gmail.com
|
||||
***************************************************************************/
|
||||
"""
|
||||
|
||||
from PyQt.QtCore import pyqtSignal, QObject
|
||||
from PyQt.QtCore import pyqtSignal
|
||||
from PyQt.QtWidgets import QWidget, QTreeView, QMenu, QLabel
|
||||
|
||||
from qgis.core import QgsMapLayerRegistry
|
||||
from qgis.core import QgsMapLayerRegistry, QgsMessageLog
|
||||
from qgis.gui import QgsMessageBar, QgsMessageBarItem
|
||||
|
||||
from .db_model import DBModel, PluginItem, TreeItem
|
||||
from .db_model import DBModel, PluginItem
|
||||
from .db_plugins.plugin import DBPlugin, Schema, Table
|
||||
|
||||
|
||||
@ -169,10 +169,8 @@ class DBTree(QTreeView):
|
||||
"%1 is an invalid layer and cannot be loaded. Please check the <a href=\"#messageLog\">message log</a> for further info.").replace(
|
||||
"%1", layer.publicSource()), self.mainWindow.infoBar)
|
||||
msgLabel.setWordWrap(True)
|
||||
self.connect(msgLabel, SIGNAL("linkActivated( QString )"),
|
||||
self.mainWindow.iface.mainWindow().findChild(QWidget, "MessageLog"), SLOT("show()"))
|
||||
self.connect(msgLabel, SIGNAL("linkActivated( QString )"),
|
||||
self.mainWindow.iface.mainWindow(), SLOT("raise()"))
|
||||
msgLabel.linkActivated.connect(self.mainWindow.iface.mainWindow().findChild(QWidget, "MessageLog").show)
|
||||
msgLabel.linkActivated.connect(self.mainWindow.iface.mainWindow().raise_)
|
||||
self.mainWindow.infoBar.pushItem(QgsMessageBarItem(msgLabel, QgsMessageBar.WARNING))
|
||||
|
||||
def reconnect(self):
|
||||
|
||||
@ -22,7 +22,7 @@ The content of this file is based on
|
||||
***************************************************************************/
|
||||
"""
|
||||
|
||||
from PyQt.QtCore import Qt, QObject, QSettings, QFileInfo
|
||||
from PyQt.QtCore import Qt, QSettings, QFileInfo
|
||||
from PyQt.QtWidgets import QDialog, QFileDialog, QMessageBox, QApplication
|
||||
from PyQt.QtGui import QCursor
|
||||
|
||||
@ -39,7 +39,7 @@ class DlgExportVector(QDialog, Ui_Dialog):
|
||||
self.db = inDb
|
||||
self.setupUi(self)
|
||||
|
||||
vectorFilterName = "lastVectorFileFilter" # "lastRasterFileFilter"
|
||||
vectorFilterName = "lastVectorFileFilter" # "lastRasterFileFilter"
|
||||
self.lastUsedVectorFilterSettingsKey = u"/UI/{0}".format(vectorFilterName)
|
||||
self.lastUsedVectorDirSettingsKey = u"/UI/{0}Dir".format(vectorFilterName)
|
||||
|
||||
|
||||
@ -23,7 +23,6 @@ __copyright__ = '(C) 2012, Giuseppe Sucameli'
|
||||
# This will get replaced with a git SHA1 when you do a git archive
|
||||
__revision__ = '$Format:%H$'
|
||||
|
||||
from PyQt4.QtCore import SIGNAL
|
||||
from PyQt.QtWidgets import QDialog, QMessageBox
|
||||
|
||||
from .db_plugins.plugin import TableField
|
||||
|
||||
@ -22,7 +22,7 @@ The content of this file is based on
|
||||
***************************************************************************/
|
||||
"""
|
||||
|
||||
from PyQt.QtCore import Qt, QObject, QSettings, QFileInfo
|
||||
from PyQt.QtCore import Qt, QSettings, QFileInfo
|
||||
from PyQt.QtWidgets import QDialog, QFileDialog, QMessageBox, QApplication
|
||||
from PyQt.QtGui import QCursor
|
||||
|
||||
@ -68,9 +68,9 @@ class DlgImportVector(QDialog, Ui_Dialog):
|
||||
|
||||
if mode == self.ASK_FOR_INPUT_MODE:
|
||||
self.btnChooseInputFile.clicked.connect(self.chooseInputFile)
|
||||
# QObject.connect( self.cboInputLayer.lineEdit(), SIGNAL("editingFinished()"), self.updateInputLayer )
|
||||
# self.cboInputLayer.lineEdit().editingFinished.connect(self.updateInputLayer)
|
||||
self.cboInputLayer.editTextChanged.connect(self.inputPathChanged)
|
||||
# QObject.connect( self.cboInputLayer, SIGNAL("currentIndexChanged(int)"), self.updateInputLayer )
|
||||
# self.cboInputLayer.currentIndexChanged.connect(self.updateInputLayer)
|
||||
self.btnUpdateInputLayer.clicked.connect(self.updateInputLayer)
|
||||
|
||||
self.editPrimaryKey.setText(self.default_pk)
|
||||
@ -226,7 +226,7 @@ class DlgImportVector(QDialog, Ui_Dialog):
|
||||
schemas = self.db.schemas()
|
||||
if schemas is not None:
|
||||
schema_name = self.cboSchema.currentText()
|
||||
matching_schemas = filter(lambda x: x.name == schema_name, schemas)
|
||||
matching_schemas = [x for x in schemas if x.name == schema_name]
|
||||
tables = matching_schemas[0].tables() if len(matching_schemas) > 0 else []
|
||||
else:
|
||||
tables = self.db.tables()
|
||||
|
||||
@ -184,7 +184,7 @@ class QueryBuilderDlg(QDialog):
|
||||
return
|
||||
ag = self.ui.operators.currentText()
|
||||
|
||||
if self.evt.focus == "where": # in where section
|
||||
if self.evt.focus == "where": # in where section
|
||||
self.ui.where.insertPlainText(ag)
|
||||
else:
|
||||
self.ui.col.insertPlainText(ag)
|
||||
@ -215,8 +215,8 @@ class QueryBuilderDlg(QDialog):
|
||||
if self.ui.columns.currentIndex() <= 0:
|
||||
return
|
||||
ag = self.ui.columns.currentText()
|
||||
if self.evt.focus == "where": # in where section
|
||||
if ag in self.col_where: # column already called in where section
|
||||
if self.evt.focus == "where": # in where section
|
||||
if ag in self.col_where: # column already called in where section
|
||||
response = QMessageBox.question(self, "Column already used in WHERE clause", "Do you want to add column %s again?" % ag, QMessageBox.Yes | QMessageBox.No)
|
||||
if response == QMessageBox.No:
|
||||
self.ui.columns.setCurrentIndex(0)
|
||||
@ -224,7 +224,7 @@ class QueryBuilderDlg(QDialog):
|
||||
self.ui.where.insertPlainText(ag)
|
||||
self.col_where.append(ag)
|
||||
elif self.evt.focus == "col":
|
||||
if ag in self.col_col: # column already called in col section
|
||||
if ag in self.col_col: # column already called in col section
|
||||
response = QMessageBox.question(self, "Column already used in COLUMNS section", "Do you want to add column %s again?" % ag, QMessageBox.Yes | QMessageBox.No)
|
||||
if response == QMessageBox.No:
|
||||
self.ui.columns.setCurrentIndex(0)
|
||||
@ -301,7 +301,7 @@ class QueryBuilderDlg(QDialog):
|
||||
tab_idx = idx.split(".")[0][1:-1] # remove "
|
||||
col_idx = idx.split(".")[1][1:-1] # remove '
|
||||
except:
|
||||
pop_up_error("All fields are necessary", self) # FIXME
|
||||
QMessageBox.warning(self, "Use R-Tree", "All fields are necessary", QMessageBox.Cancel)
|
||||
tgt = self.ui.table_target.currentText()
|
||||
if tgt in (None, "", " ", "Table (Target)"):
|
||||
return
|
||||
|
||||
@ -35,7 +35,7 @@ from .dlg_db_error import DlgDbError
|
||||
from .dlg_query_builder import QueryBuilderDlg
|
||||
|
||||
try:
|
||||
from qgis.gui import QgsCodeEditorSQL
|
||||
from qgis.gui import QgsCodeEditorSQL # NOQA
|
||||
except:
|
||||
from .sqledit import SqlEdit
|
||||
from qgis import gui
|
||||
@ -55,8 +55,8 @@ class DlgSqlWindow(QWidget, Ui_Dialog):
|
||||
self.iface = iface
|
||||
self.db = db
|
||||
self.filter = ""
|
||||
self.allowMultiColumnPk = isinstance(db, PGDatabase) # at the moment only PostgreSQL allows a primary key to span multiple columns, spatialite doesn't
|
||||
self.aliasSubQuery = isinstance(db, PGDatabase) # only PostgreSQL requires subqueries to be aliases
|
||||
self.allowMultiColumnPk = isinstance(db, PGDatabase) # at the moment only PostgreSQL allows a primary key to span multiple columns, spatialite doesn't
|
||||
self.aliasSubQuery = isinstance(db, PGDatabase) # only PostgreSQL requires subqueries to be aliases
|
||||
self.setupUi(self)
|
||||
self.setWindowTitle(
|
||||
u"%s - %s [%s]" % (self.windowTitle(), db.connection().connectionName(), db.connection().typeNameString()))
|
||||
@ -99,8 +99,8 @@ class DlgSqlWindow(QWidget, Ui_Dialog):
|
||||
self.uniqueCombo.setModel(self.uniqueModel)
|
||||
if self.allowMultiColumnPk:
|
||||
self.uniqueCombo.setItemDelegate(QStyledItemDelegate())
|
||||
self.uniqueModel.itemChanged.connect(self.uniqueChanged) # react to the (un)checking of an item
|
||||
self.uniqueCombo.lineEdit().textChanged.connect(self.uniqueTextChanged) # there are other events that change the displayed text and some of them can not be caught directly
|
||||
self.uniqueModel.itemChanged.connect(self.uniqueChanged) # react to the (un)checking of an item
|
||||
self.uniqueCombo.lineEdit().textChanged.connect(self.uniqueTextChanged) # there are other events that change the displayed text and some of them can not be caught directly
|
||||
|
||||
# hide the load query as layer if feature is not supported
|
||||
self._loadAsLayerAvailable = self.db.connector.hasCustomQuerySupport()
|
||||
@ -269,7 +269,7 @@ class DlgSqlWindow(QWidget, Ui_Dialog):
|
||||
QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))
|
||||
try:
|
||||
layer = self._getSqlLayer(self.filter)
|
||||
if layer == None:
|
||||
if layer is None:
|
||||
return
|
||||
|
||||
from qgis.core import QgsMapLayerRegistry
|
||||
|
||||
@ -63,7 +63,8 @@ class LayerPreview(QgsMapCanvas):
|
||||
|
||||
if isinstance(item, Table) and item.type in [Table.VectorType, Table.RasterType]:
|
||||
# update the preview, but first let the manager chance to show the canvas
|
||||
runPrev = lambda: self._loadTablePreview(item)
|
||||
def runPrev():
|
||||
return self._loadTablePreview(item)
|
||||
QTimer.singleShot(50, runPrev)
|
||||
else:
|
||||
return
|
||||
|
||||
@ -20,7 +20,7 @@ email : brush.tyler@gmail.com
|
||||
***************************************************************************/
|
||||
"""
|
||||
|
||||
from PyQt.QtCore import Qt, QObject
|
||||
from PyQt.QtCore import Qt
|
||||
from PyQt.QtWidgets import QTableView, QAbstractItemView, QApplication, QAction
|
||||
from PyQt.QtGui import QKeySequence, QCursor, QClipboard
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user