def refresh(self, user): cloud_connections_key = u"/qgiscloud/connections/%s" % user settings = QSettings() cloud_dbs_from_server = self._dbs.keys() stored_connections = settings.value(cloud_connections_key) or [] cloud_dbs_from_settings = map(lambda conn: str(conn), pystringlist(stored_connections)) # remove obsolete connections for db_name in (set(cloud_dbs_from_settings) - set(cloud_dbs_from_server)): for connection in DbConnectionCfg.get_cloud_db_connections(db_name): DbConnectionCfg.remove_connection(connection) # add missing connections for db_name in cloud_dbs_from_server: if len(DbConnectionCfg.get_cloud_db_connections(db_name)) == 0: self.db(db_name).store_connection() # store cloud db names in settings if len(cloud_dbs_from_server) > 0: settings.setValue(cloud_connections_key, cloud_dbs_from_server) else: settings.remove(cloud_connections_key) self._dbs_refreshed = True
def refresh(self, user): cloud_connections_key = u"/qgiscloud/connections/%s" % user settings = QSettings() cloud_dbs_from_server = self._dbs.keys() stored_connections = settings.value(cloud_connections_key) or [] cloud_dbs_from_settings = map(lambda conn: str(conn), pystringlist(stored_connections)) # remove obsolete connections for db_name in (set(cloud_dbs_from_settings) - set(cloud_dbs_from_server)): for connection in DbConnectionCfg.get_cloud_db_connections( db_name): DbConnectionCfg.remove_connection(connection) # add missing or changed connections for db_name in cloud_dbs_from_server: cfg = self.db(db_name) if len(DbConnectionCfg.get_cloud_db_connections(db_name)) == 0 or \ cfg.changed: cfg.store_connection() # store cloud db names in settings if len(cloud_dbs_from_server) > 0: settings.setValue(cloud_connections_key, cloud_dbs_from_server) else: settings.remove(cloud_connections_key) self._dbs_refreshed = True
def cloud_layer_uri(self, db_name, table_name, geom_column): uri = None # find db connection and create uri connections = DbConnectionCfg.get_cloud_db_connections(db_name) if len(connections) > 0: conn = DbConnectionCfg.from_settings(connections[0]) uri = conn.data_source_uri() uri.setDataSource("", table_name, geom_column) return uri
def add_from_json(self, db): self._dbs[db['name']] = DbConnectionCfg(db['host'], db['port'], db['name'], db['username'], db['password'])