I have tried another method * first add default style into DB via UI -> it works
* the use console to create a new, not default, style msg = '' layer.saveStyleToDatabase( "a new style", "some description", False, None, msg ); It does not work (not new line created, and msg remains empty. No log in the database, which means NO query has been sent (I have change postgresql config to log all requests). But the following method works layer.listStylesInDatabase() And a new line appears in the postgresql log 2017-09-25 16:19:18.248 CEST [8984] mdouchin@qgis LOG: 00000: duration: 0.217 ms statement: SELECT id,styleName,description FROM layer_styles WHERE NOT (f_table_catalog='qgis' AND f_table_schema='sup' AND f_table_name='geo_commune' AND f_geometry_column='geom') ORDER BY update_time DESC It seems the method saveStyleToDatabase returns with no error, which can be caused by 2 reasons https://qgis.org/api/2.18/qgsvectorlayer_8cpp_source.html#l04347 4369 this->exportNamedStyle( qmlDocument, msgError ); 4370 if ( !msgError.isNull() ) 4371 { 4372 return; 4373 } 4374 qmlStyle = qmlDocument.toString(); 4375 4376 this->exportSldStyle( sldDocument, msgError ); 4377 if ( !msgError.isNull() ) 4378 { 4379 return; 4380 } /me investigates 2017-09-25 15:50 GMT+02:00 Jorge Gustavo Pereira Bastos Rocha < [email protected]>: > Hi, > > It already happened to me. The first user to save a style became the owner > of the table. No other users were able to write on the layer_style table, > because there were DEFAULT PRIVILEGES defined. > > Can you check the postgrsql log to see if there is any problem related > with permissions? > > Regards, > > Jorge Gustavo > > ________________________________________ > De: QGIS-Developer [[email protected]] em nome de > kimaidou [[email protected]] > Enviado: 25 de Setembro de 2017 14:23 > Para: Luigi Pirelli > Cc: [email protected] > Assunto: Re: [QGIS-Developer] pyqgis - layer.saveDefaultStyle() for > PostGIS layers > > Hi, > > @ Tom : I really would like to trust QGIS method instead of managing > manually different providers. > > @ Luigi > No error message, even worse : i got a message telling everything went > well ;) > > layer.saveDefaultStyle() > (u'The style dbname=\'qgis\' host=localhost port=5432 user=\'mdouchin\' > sslmode=disable key=\'ogc_fid\' estimatedmetadata=true srid=2154 > type=MultiPolygon table="sup"."geo_commune" (geom) sql= was updated in the > database.', True) > > But the line is not created in the layer_styles table. > > Michaƫl > > > 2017-09-25 14:48 GMT+02:00 Luigi Pirelli <[email protected]<mailto:luipi > [email protected]>>: > from the code: > > mLayer->saveStyleToDatabase and mLayer->saveDefaultStyle > > and in > QString QgsMapLayer::saveDefaultStyle( bool & theResultFlag ) > { > return saveNamedStyle( styleURI(), theResultFlag ); > } > > => seems you are doing correct. > > any log message? > > ****************************************** > > > void QgsVectorLayerProperties::saveDefaultStyle_clicked() > { > apply(); > QString errorMsg; > if ( mLayer->dataProvider()->isSaveAndLoadStyleToDBSupported() ) > { > QMessageBox askToUser; > askToUser.setText( tr( "Save default style to: " ) ); > askToUser.setIcon( QMessageBox::Question ); > askToUser.addButton( tr( "Cancel" ), QMessageBox::RejectRole ); > askToUser.addButton( tr( "Local database" ), QMessageBox::NoRole ); > askToUser.addButton( tr( "Datasource database" ), QMessageBox::YesRole > ); > > switch ( askToUser.exec() ) > { > case 0: > return; > case 2: > mLayer->saveStyleToDatabase( "", "", true, "", errorMsg ); > if ( errorMsg.isNull() ) > { > return; > } > break; > default: > break; > } > } > > bool defaultSavedFlag = false; > errorMsg = mLayer->saveDefaultStyle( defaultSavedFlag ); > if ( !defaultSavedFlag ) > { > QMessageBox::warning( this, tr( "Default Style" ), errorMsg ); > } > } > Luigi Pirelli > > ************************************************************ > ************************************** > * Boundless QGIS Support/Development: lpirelli AT boundlessgeo DOT com > * LinkedIn: https://www.linkedin.com/in/luigipirelli > * Stackexchange: http://gis.stackexchange.com/users/19667/luigi-pirelli > * GitHub: https://github.com/luipir > * Mastering QGIS 2nd Edition: > * https://www.packtpub.com/big-data-and-business- > intelligence/mastering-qgis-second-edition > ************************************************************ > ************************************** > > > On 25 September 2017 at 13:44, Tom Chadwin <[email protected]< > mailto:[email protected]>> wrote: > > Perhaps you have to do it manually via a PostGIS query matching > > f_table_catalog, f_table_schema, and f_table_name, and updating styleqml > and > > stylesld? > > > > Tom > > > > > > > > ----- > > Buy Pie Spy: Adventures in British pastry 2010-11 on Amazon > > -- > > Sent from: http://osgeo-org.1560.x6.nabble.com/QGIS-Developer- > f4099106.html > > _______________________________________________ > > QGIS-Developer mailing list > > [email protected]<mailto:[email protected]> > > List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer > > Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer > >
_______________________________________________ QGIS-Developer mailing list [email protected] List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer
