Example #1
0
    def __init__(self, parent=None):
        super(ImportGmlasPanel, self).__init__(parent)
        self.setupUi(self)
        self.databaseWidget.set_accept_mode(QFileDialog.AcceptSave)

        self.gmlasConfigLineEdit.setText(settings.value('default_gmlas_config'))
        self.gmlPathLineEdit.setText(settings.value('gml_path', ''))
        self.acceptLanguageHeaderInput.setText(settings.value('default_language'))
        self.set_access_mode(settings.value('default_access_mode'))
    def __init__(self, parent=None):
        super(DownloadWfs2Panel, self).__init__(parent)
        self.setupUi(self)

        self.downloadProgressBar.setVisible(False)

        self.featureLimitBox.setValue(
            int(settings.value('default_maxfeatures')))
        self.uriComboBox.addItems(settings.value('wfs2_services') or [])
        self.uriComboBox.setCurrentText(settings.value('default_wfs2_service'))
    def __init__(self, parent=None):
        super(ExportGmlasPanel, self).__init__(parent)
        self.setupUi(self)

        self.databaseWidget.set_accept_mode(QFileDialog.AcceptOpen)
        self.gmlasConfigLineEdit.setText(
            settings.value("default_gmlas_config"))
    def gmlas_datasource(self):
        gmlasconf = self.gmlas_config()
        datasourceFile = self.gml_path()
        if datasourceFile == '':
            raise InputError(self.tr("You must select a input file or URL"))
        isXsd = datasourceFile.endswith(".xsd")
        isUrl = datasourceFile.startswith("http")
        swapCoordinates = self.swapCoordinatesCombo.currentText()
        driverConnection = ""
        openOptions = ['EXPOSE_METADATA_LAYERS=YES', 'CONFIG_FILE={}'.format(gmlasconf)]

        openOptions.append('SWAP_COORDINATES={}'.format(swapCoordinates))

        if isXsd:
            driverConnection = "GMLAS:"
            openOptions.append('XSD={}'.format(datasourceFile))
        elif isUrl:
            driverConnection = "GMLAS:/vsicurl_streaming/{}".format(datasourceFile)
        else:
            driverConnection = "GMLAS:{}".format(datasourceFile)
        gdal.SetConfigOption('GDAL_HTTP_UNSAFESSL', 'YES')
        gdal.SetConfigOption('GDAL_HTTP_USERAGENT', settings.value('http_user_agent', plugin_name()))

        with qgis_proxy_settings():
            return gdal.OpenEx(driverConnection,
                               open_options=openOptions)
    def __init__(self, parent=None):
        super(ImportPanel, self).__init__(parent)
        self.setupUi(self)

        self.gmlas_panel = self.addImportPanel(
            self.tr("Import using GMLAS driver"), ImportGmlasPanel())

        self.xml_panel = self.addImportPanel(self.tr("Import as XML"),
                                             ImportXmlPanel())

        if settings.value('default_import_method') == 'gmlas':
            self.importTypeCombo.setCurrentIndex(
                self.importTypeCombo.findData(self.gmlas_panel))
        if settings.value('default_import_method') == 'xml':
            self.importTypeCombo.setCurrentIndex(
                self.importTypeCombo.findData(self.xml_panel))
Example #6
0
    def gmlas_datasource(self):
        gmlasconf = self.gmlas_config()
        datasourceFile = self.gml_path()
        if datasourceFile == "":
            raise InputError(self.tr("You must select a input file or URL"))
        isXsd = datasourceFile.endswith(".xsd")
        isUrl = datasourceFile.startswith("http")
        swapCoordinates = self.swapCoordinatesCombo.currentText()
        driverConnection = ""
        openOptions = [
            "EXPOSE_METADATA_LAYERS=YES", "CONFIG_FILE={}".format(gmlasconf)
        ]

        openOptions.append("SWAP_COORDINATES={}".format(swapCoordinates))

        if isXsd:
            driverConnection = "GMLAS:"
            openOptions.append("XSD={}".format(datasourceFile))
        elif isUrl:
            driverConnection = "GMLAS:/vsicurl_streaming/{}".format(
                datasourceFile)
        else:
            driverConnection = "GMLAS:{}".format(datasourceFile)
        gdal.SetConfigOption("GDAL_HTTP_UNSAFESSL", "YES")
        gdal.SetConfigOption("GDAL_HTTP_USERAGENT",
                             settings.value("http_user_agent", plugin_name()))

        with qgis_proxy_settings():
            return gdal.OpenEx(driverConnection, open_options=openOptions)
    def __init__(self, parent=None, gml_path=None):
        super(ImportGmlasPanel, self).__init__(parent)
        self.setupUi(self)
        self.databaseWidget.set_accept_mode(QFileDialog.AcceptSave)

        self.gmlasConfigLineEdit.setText(settings.value('default_gmlas_config'))
        self.acceptLanguageHeaderInput.setText(settings.value('default_language'))
        self.set_access_mode(settings.value('default_access_mode'))

        g = "gml_application_schema_toolbox"
        self.layers_group.setSettingGroup(g)
        self.gmlas_bbox_group.setSettingGroup(g)
        self.gmlas_options_group.setSettingGroup(g)
        self.target_db_group.setSettingGroup(g)

        self.parent = parent
        self._gml_path = gml_path
 def load_settings(self):
     self.featureLimitBox.setValue(int(settings.value('default_maxfeatures')))
     self.set_import_method(settings.value('default_import_method'))
     self.gmlasConfigLineEdit.setText(settings.value('default_gmlas_config'))
     self.languageLineEdit.setText(settings.value('default_language'))
     self.set_db_type(settings.value('default_db_type'))
     self.set_access_mode(settings.value('default_access_mode'))
     self.httpUserAgentEdit.setText(settings.value('http_user_agent', plugin_name()))
Example #9
0
    def __init__(self, parent=None, gml_path=None):
        super(ImportGmlasPanel, self).__init__(parent)
        self.setupUi(self)
        self.databaseWidget.set_accept_mode(QFileDialog.AcceptSave)

        self.gmlasConfigLineEdit.setText(
            settings.value("default_gmlas_config"))
        self.acceptLanguageHeaderInput.setText(
            settings.value("default_language"))
        self.set_access_mode(settings.value("default_access_mode"))

        g = "gml_application_schema_toolbox"
        self.layers_group.setSettingGroup(g)
        self.gmlas_bbox_group.setSettingGroup(g)
        self.gmlas_options_group.setSettingGroup(g)
        self.target_db_group.setSettingGroup(g)

        self.parent = parent
        self._gml_path = gml_path
 def load_settings(self):
     self.featureLimitBox.setValue(
         int(settings.value('default_maxfeatures')))
     self.set_wfs2_services(settings.value('wfs2_services'))
     self.wfs2ServiceBox.setCurrentText(
         settings.value('default_wfs2_service'))
     self.set_import_method(settings.value('default_import_method'))
     self.gmlasConfigLineEdit.setText(
         settings.value('default_gmlas_config'))
     self.languageLineEdit.setText(settings.value('default_language'))
     self.set_db_type(settings.value('default_db_type'))
     self.set_access_mode(settings.value('default_access_mode'))
def _sync_get(url):
    global __network_manager
    if __network_manager is None:
        __network_manager = QNetworkAccessManager()
        __network_manager.setProxy(QgsNetworkAccessManager.instance().proxy())
    pause = QEventLoop()
    req = QNetworkRequest(url)
    req.setRawHeader(b"Accept", b"application/xml")
    req.setRawHeader(b"Accept-Language", bytes(settings.value("default_language", "fr"), "utf8"))
    req.setRawHeader(b"User-Agent", bytes(settings.value('http_user_agent', plugin_name()), "utf8"))
    reply = __network_manager.get(req)
    reply.finished.connect(pause.quit)
    is_ok = [True]
    def onError(self):
        is_ok[0] = False
        pause.quit()
    reply.error.connect(onError)
    pause.exec_()
    return reply, is_ok[0]
Example #12
0
    def __init__(self, parent=None):
        super(DownloadWfs2Panel, self).__init__(parent)
        self.setupUi(self)

        self.downloadProgressBar.setVisible(False)

        self.featureLimitBox.setValue(
            int(settings.value('default_maxfeatures')))

        self.refresh_connections()
        self.connectionCombo.currentTextChanged.connect(
            self.on_change_connection)

        self.file_downloaded.connect(self.on_file_downloaded)
Example #13
0
    def __init__(self, parent=None):
        super(ImportPanel, self).__init__(parent)
        self.setupUi(self)

        self.xml_panel = ImportXmlPanel()
        self.gmlas_panel = ImportGmlasPanel()
        self.stackedWidget.addWidget(self.xml_panel)
        self.stackedWidget.addWidget(self.gmlas_panel)

        self.xmlModeRadio.toggled.connect(self.on_xml)
        self.relationalModeRadio.toggled.connect(self.on_gmlas)

        v = settings.value("default_import_method")
        self.xmlModeRadio.setChecked(v == 'xml')
        self.relationalModeRadio.setChecked(v == 'gmlas')
def _sync_get(url):
    global __network_manager
    if __network_manager is None:
        __network_manager = QNetworkAccessManager()
        __network_manager.setProxy(QgsNetworkAccessManager.instance().proxy())
    pause = QEventLoop()
    req = QNetworkRequest(url)
    req.setRawHeader(b"Accept", b"application/xml")
    req.setRawHeader(b"Accept-Language",
                     bytes(settings.value("default_language", "fr"), "utf8"))
    req.setRawHeader(
        b"User-Agent",
        bytes(settings.value("http_user_agent", plugin_name()), "utf8"))
    reply = __network_manager.get(req)
    reply.finished.connect(pause.quit)
    is_ok = [True]

    def onError(self):
        is_ok[0] = False
        pause.quit()

    reply.error.connect(onError)
    pause.exec_()
    return reply, is_ok[0]
Example #15
0
    def do_load(self, append_to_db=None, append_to_schema=None):
        gdal.SetConfigOption("OGR_SQLITE_SYNCHRONOUS", "OFF")
        gdal.SetConfigOption("GDAL_HTTP_UNSAFESSL", "YES")
        gdal.SetConfigOption("GDAL_HTTP_USERAGENT",
                             settings.value("http_user_agent", plugin_name()))

        def error_handler(err, err_no, msg):
            if err >= gdal.CE_Warning:
                QgsMessageLog.logMessage("{} {}: {}".format(err, err_no, msg),
                                         plugin_name())

        if append_to_db is None:
            dest = self.databaseWidget.datasource_name()
            if dest == "" and self.databaseWidget.format() == "SQLite":
                with tempfile.NamedTemporaryFile(suffix=".sqlite") as tmp:
                    dest = tmp.name
                    QgsMessageLog.logMessage("Temp SQLITE: {}".format(dest),
                                             plugin_name())

            if dest.startswith("PG:"):
                schema = self.databaseWidget.schema()
            else:
                schema = None
            db_format = self.databaseWidget.format()
            params = self.import_params(dest)
        else:
            schema = append_to_schema
            db_format = "PostgreSQL" if append_to_db.startswith(
                "PG:") else "SQLite"
            params = self.import_params(append_to_db)
            # force append
            params["accessMode"] = "append"

        try:
            QApplication.setOverrideCursor(Qt.WaitCursor)
            gdal.PushErrorHandler(error_handler)
            self.translate(params)
            if append_to_db is None:
                import_in_qgis(dest, db_format, schema)

        except InputError as e:
            e.show()
        except RuntimeError as e:
            QMessageBox.warning(None, plugin_name(), e.args[0])
        finally:
            QApplication.restoreOverrideCursor()
            gdal.PopErrorHandler()
    def __init__(self, parent=None):
        super(DatabaseWidget, self).__init__(parent)
        self.setupUi(self)
        self.set_accept_mode(QFileDialog.AcceptOpen)

        self._pgsql_db = None

        self.pgsqlFormWidget.setVisible(False)
        self.pgsqlConnectionsBox.setModel(PgsqlConnectionsModel())
        self.pgsqlConnectionsRefreshButton.setIcon(
            QgsApplication.getThemeIcon('/mActionRefresh.png'))
        self.addFkeysButton.setIcon(
            QgsApplication.getThemeIcon('/mActionAdd.svg'))
        self.dropFkeysButton.setIcon(
            QgsApplication.getThemeIcon('/mActionRemove.svg'))

        self.set_format(settings.value('default_db_type'))
    def do_load(self, append_to_db = None, append_to_schema = None):
        gdal.SetConfigOption("OGR_SQLITE_SYNCHRONOUS", "OFF")
        gdal.SetConfigOption('GDAL_HTTP_UNSAFESSL', 'YES')
        gdal.SetConfigOption('GDAL_HTTP_USERAGENT', settings.value('http_user_agent', plugin_name()))

        def error_handler(err, err_no, msg):
            if err >= gdal.CE_Warning:
                QgsMessageLog.logMessage("{} {}: {}".format(err, err_no, msg), plugin_name())

        if append_to_db is None:
            dest = self.databaseWidget.datasource_name()
            if dest == '' and self.databaseWidget.format() == "SQLite":
                with tempfile.NamedTemporaryFile(suffix='.sqlite') as tmp:
                    dest = tmp.name
                    QgsMessageLog.logMessage("Temp SQLITE: {}".format(dest), plugin_name())

            if dest.startswith('PG:'):
                schema = self.databaseWidget.schema()
            else:
                schema = None
            db_format = self.databaseWidget.format()
            params = self.import_params(dest)
        else:
            schema = append_to_schema
            db_format = "PostgreSQL" if append_to_db.startswith("PG:") else "SQLite"
            params = self.import_params(append_to_db)
            # force append
            params["accessMode"] = "append"

        try:
            QApplication.setOverrideCursor(Qt.WaitCursor)
            gdal.PushErrorHandler(error_handler)
            self.translate(params)
            if append_to_db is None:
                import_in_qgis(dest, db_format, schema)
            
        except InputError as e:
            e.show()
        except RuntimeError as e:
            QMessageBox.warning(None,
                                plugin_name(),
                                e.args[0])
        finally:
            QApplication.restoreOverrideCursor()
            gdal.PopErrorHandler()
Example #18
0
    def __init__(self, parent=None, is_input=False):
        super(DatabaseWidget, self).__init__(parent)
        self.setupUi(self)
        self.set_accept_mode(QFileDialog.AcceptOpen)

        self._pgsql_db = None
        self._is_input = is_input
        if not is_input:
            self.sqlitePathLineEdit.setPlaceholderText("Create a temporary file")

        self.pgsqlFormWidget.setVisible(False)
        self.pgsqlConnectionsBox.setModel(PgsqlConnectionsModel())
        self.pgsqlConnectionsRefreshButton.setIcon(
            QgsApplication.getThemeIcon('/mActionRefresh.png'))
        self.addFkeysButton.setIcon(
            QgsApplication.getThemeIcon('/mActionAdd.svg'))
        self.dropFkeysButton.setIcon(
            QgsApplication.getThemeIcon('/mActionRemove.svg'))

        self.set_format(settings.value('default_db_type'))