@@ -258,8 +258,9 @@ def info(self):
258
258
259
259
return PGRasterTableInfo (self )
260
260
261
- def gdalUri (self ):
262
- uri = self .database ().uri ()
261
+ def gdalUri (self , uri = None ):
262
+ if not uri :
263
+ uri = self .database ().uri ()
263
264
schema = (u'schema=%s' % self .schemaName ()) if self .schemaName () else ''
264
265
dbname = (u'dbname=%s' % uri .database ()) if uri .database () else ''
265
266
host = (u'host=%s' % uri .host ()) if uri .host () else ''
@@ -285,9 +286,25 @@ def mimeUri(self):
285
286
return uri
286
287
287
288
def toMapLayer (self ):
288
- from qgis .core import QgsRasterLayer , QgsContrastEnhancement
289
+ from qgis .core import QgsRasterLayer , QgsContrastEnhancement , QgsDataSourceURI , QgsCredentials
289
290
290
291
rl = QgsRasterLayer (self .gdalUri (), self .name )
292
+ if not rl .isValid ():
293
+ err = rl .error ().summary ()
294
+ uri = QgsDataSourceURI (self .database ().uri ())
295
+ conninfo = uri .connectionInfo ()
296
+ username = uri .username ()
297
+ password = uri .password ()
298
+
299
+ for i in range (3 ):
300
+ (ok , username , password ) = QgsCredentials .instance ().get (conninfo , username , password , err )
301
+ if ok :
302
+ uri .setUsername (username )
303
+ uri .setPassword (password )
304
+ rl = QgsRasterLayer (self .gdalUri (uri ), self .name )
305
+ if rl .isValid ():
306
+ break
307
+
291
308
if rl .isValid ():
292
309
rl .setContrastEnhancement (QgsContrastEnhancement .StretchToMinimumMaximum )
293
310
return rl
0 commit comments