Skip to content

Commit 7d00947

Browse files
committed
add postgres layer: enforce selection of primary key for views (refs #11317)
(cherry picked from commit a54c2d0)
1 parent 5bdaf44 commit 7d00947

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

src/providers/postgres/qgspgtablemodel.cpp

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,10 @@ void QgsPgTableModel::addTableEntry( const QgsPostgresLayerProperty& layerProper
6868
{
6969
tip = tr( "Enter a SRID" );
7070
}
71+
else if ( layerProperty.pkCols.size() > 0 )
72+
{
73+
tip = tr( "Select a primary key" );
74+
}
7175

7276
QStandardItem *schemaNameItem = new QStandardItem( layerProperty.schemaName );
7377
QStandardItem *typeItem = new QStandardItem( iconForWkbType( wkbType ), wkbType == QGis::WKBUnknown ? tr( "Select..." ) : QgsPostgresConn::displayStringForWkbType( wkbType ) );
@@ -88,20 +92,17 @@ void QgsPgTableModel::addTableEntry( const QgsPostgresLayerProperty& layerProper
8892
sridItem->setFlags( sridItem->flags() | Qt::ItemIsEditable );
8993
}
9094

91-
QString pkCol = "";
95+
QStandardItem *pkItem = new QStandardItem( "" );
9296
if ( layerProperty.pkCols.size() > 0 )
9397
{
94-
pkCol = layerProperty.pkCols[0];
95-
}
96-
97-
QStandardItem *pkItem = new QStandardItem( pkCol );
98-
if ( layerProperty.pkCols.size() > 1 )
98+
pkItem->setText( tr( "Select..." ) );
9999
pkItem->setFlags( pkItem->flags() | Qt::ItemIsEditable );
100+
}
100101
else
101102
pkItem->setFlags( pkItem->flags() & ~Qt::ItemIsEditable );
102103

103104
pkItem->setData( layerProperty.pkCols, Qt::UserRole + 1 );
104-
pkItem->setData( pkCol, Qt::UserRole + 2 );
105+
pkItem->setData( "", Qt::UserRole + 2 );
105106

106107
QStandardItem *selItem = new QStandardItem( "" );
107108
selItem->setFlags( selItem->flags() | Qt::ItemIsUserCheckable );

0 commit comments

Comments
 (0)