Skip to content

Commit

Permalink
[DB Manager] Allow lowercase field names for homogenize PostGIS Import
Browse files Browse the repository at this point in the history
PostGIS provider has an option to lowercase field names. This options is available for user in QGIS algorithm ImportIntoPostGIS and not in DB Mananger.

This commit fix it.
  • Loading branch information
rldhont committed Oct 19, 2016
1 parent 133a6f5 commit 2b01c7c
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 3 deletions.
3 changes: 3 additions & 0 deletions python/plugins/db_manager/db_plugins/plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -550,6 +550,9 @@ def explicitSpatialIndex(self):
def spatialIndexClause(self, src_table, src_column, dest_table, dest_table_column):
return None

def hasLowercaseFieldNamesOption(self):
return False


class Schema(DbItemObject):

Expand Down
3 changes: 3 additions & 0 deletions python/plugins/db_manager/db_plugins/postgis/plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,9 @@ def runRefreshMaterializedViewSlot(self, item, action, parent):

item.runRefreshMaterializedView()

def hasLowercaseFieldNamesOption(self):
return True


class PGSchema(Schema):

Expand Down
13 changes: 11 additions & 2 deletions python/plugins/db_manager/dlg_import_vector.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,10 @@ def checkSupports(self):
if not self.chkSpatialIndex.isEnabled():
self.chkSpatialIndex.setChecked(False)

self.chkLowercaseFieldNames.setEnabled(self.db.hasLowercaseFieldNamesOption())
if not self.chkLowercaseFieldNames.isEnabled():
self.chkLowercaseFieldNames.setChecked(False)

def populateLayers(self):
self.cboInputLayer.clear()
for index, layer in enumerate(iface.legendInterface().layers()):
Expand Down Expand Up @@ -300,13 +304,18 @@ def accept(self):
else:
geom = None

options = {}
if self.chkLowercaseFieldNames.isEnabled() and self.chkLowercaseFieldNames.isChecked():
pk = pk.lower()
if geom:
geom = geom.lower()
options['lowercaseFieldNames'] = True

# get output params, update output URI
self.outUri.setDataSource(schema, table, geom, "", pk)
uri = self.outUri.uri(False)

providerName = self.db.dbplugin().providerName()

options = {}
if self.chkDropTable.isChecked():
options['overwrite'] = True

Expand Down
9 changes: 8 additions & 1 deletion python/plugins/db_manager/ui/DlgImportVector.ui
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,7 @@
</property>
</widget>
</item>
<item row="7" column="0" colspan="2">
<item row="8" column="0" colspan="2">
<widget class="QCheckBox" name="chkSpatialIndex">
<property name="text">
<string>Create spatial index</string>
Expand All @@ -267,6 +267,13 @@
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QCheckBox" name="chkLowercaseFieldNames">
<property name="text">
<string>Convert field names to lowercase</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
Expand Down

0 comments on commit 2b01c7c

Please sign in to comment.