def writeSettings(self):
        url = self.server_url()
        username = self.ui.username.text()
        password = self.ui.password.text()
        settings = QSettings()
        settings.setValue('Mergin/auth_token', None)  # reset token
        settings.setValue('Mergin/saveCredentials', str(self.ui.save_credentials.isChecked()))
        settings.setValue("Mergin/username", username)

        if self.ui.save_credentials.isChecked():
            set_mergin_auth(url, username, password)
            try:
                mc = create_mergin_client()
            except (URLError, ClientError, LoginError):
                mc = None
        else:
            try:
                mc = MerginClient(url, None, username, password, get_plugin_version())
                settings.setValue('Mergin/auth_token', mc._auth_session['token'])
                settings.setValue('Mergin/server', url)
            except (URLError, ClientError, LoginError) as e:
                QgsApplication.messageLog().logMessage(f"Mergin plugin: {str(e)}")
                mc = None

        QgsExpressionContextUtils.setGlobalVariable('mergin_url', url)
        if mc:
            QgsExpressionContextUtils.setGlobalVariable('mergin_username', username)
        else:
            QgsExpressionContextUtils.removeGlobalVariable('mergin_username')

        return mc
Ejemplo n.º 2
0
    def initGui(self):
        """Create the menu entries and toolbar icons inside the QGIS GUI."""

        icon_path = os.path.join(self.plugin_dir, 'res', 'icon.png')
        self.add_action(icon_path,
                        text=self.tr(u'go2mapillary'),
                        callback=self.run,
                        parent=self.iface.mainWindow())

        self.dlg = go2mapillaryDockWidget()

        self.dockwidget = QDockWidget("go2mapillary", self.iface.mainWindow())
        self.dockwidget.setObjectName("go2mapillary")
        self.dockwidget.setWidget(self.dlg)
        self.dlg.webView.page().setNetworkAccessManager(
            QgsNetworkAccessManager.instance())
        self.dlg.webView.page().mainFrame().setScrollBarPolicy(
            Qt.Vertical, Qt.ScrollBarAlwaysOff)
        self.dlg.webView.page().mainFrame().setScrollBarPolicy(
            Qt.Horizontal, Qt.ScrollBarAlwaysOff)
        self.canvas.mapToolSet.connect(self.toggleViewer)
        self.viewer = mapillaryViewer(self.dlg.webView)
        self.viewer.messageArrived.connect(self.viewerConnection)
        QgsExpressionContextUtils.setGlobalVariable("mapillaryCurrentKey",
                                                    "noKey")
        self.mapSelectionTool = None
        self.coverage = mapillary_coverage(self.iface)
        self.mapillaryOverview = None
        self.mapillaryCoverage = None
        self.mapillaryLocations = None
Ejemplo n.º 3
0
 def __init__(self, parentInstance, parent=None):
     """Constructor."""
     super(mapillarySettings, self).__init__(parent)
     # Set up the user interface from Designer.
     # After setupUI you can access any designer object by doing
     # self.<objectname>, and you can use autoconnect slots - see
     # http://qt-project.org/doc/qt-4.8/designer-using-a-ui-file.html
     # #widgets-and-dialogs-with-auto-connect
     self.setupUi(self)
     self.parentInstance = parentInstance
     self.iface = parentInstance.iface
     self.setWindowTitle("go2mapillary settings")
     self.fileWidget.setStorageMode(QgsFileWidget.SaveFile)
     self.fileWidget.setFilter("SHP files (*.shp)")
     self.buttonBox.accepted.connect(self.applySettings)
     self.addCategoryButton.clicked.connect(self.addCategoryAction)
     self.removeCategoryButton.clicked.connect(self.removeCategoryAction)
     self.tableWidget.setColumnWidth(1, 150)
     self.newCategoryEdit.setMaxLength(20)
     self.settings = {
         'sample_source': 'memory',
         'auto_open_form': True,
         'categories': {
             'cat_a': '#ff0000',
             'cat_b': '#0000ff',
             'cat_c': '#00ff00',
         }
     }
     if not QgsExpressionContextUtils.globalScope().hasVariable(
             'mapillarySettings'):
         QgsExpressionContextUtils.setGlobalVariable(
             "mapillarySettings", json.dumps(self.settings))
     self.loadSettings()
Ejemplo n.º 4
0
    def loadAlgorithms(self):

        # Add flag used by initAlgorithm method of algs
        # so that they do not get data from database to fill in their combo boxes
        QgsExpressionContextUtils.setGlobalVariable('gobs_get_database_data',
                                                    'no')

        self.addAlgorithm(ConfigurePlugin())

        self.addAlgorithm(CreateDatabaseStructure())
        self.addAlgorithm(UpgradeDatabaseStructure())

        self.addAlgorithm(CreateDatabaseLocalInterface())

        self.addAlgorithm(ImportSpatialLayerData())
        self.addAlgorithm(GetSpatialLayerVectorData())
        self.addAlgorithm(GetSeriesData())
        self.addAlgorithm(GetSeriesList())
        self.addAlgorithm(GetAggregatedData())

        self.addAlgorithm(RemoveSeriesData())
        self.addAlgorithm(RemoveSpatialLayerData())

        # Put the flag back to yes
        QgsExpressionContextUtils.setGlobalVariable('gobs_get_database_data',
                                                    'yes')
Ejemplo n.º 5
0
    def __init__(self, iface):
        self.iface = iface
        self.plugin_dir = os.path.dirname(__file__)
        self.data_item_provider = None
        self.actions = []
        self.menu = u'Mergin Plugin'

        self.iface.projectRead.connect(set_project_variables)
        settings = QSettings()
        QgsExpressionContextUtils.setGlobalVariable(
            'mergin_username', settings.value("Mergin/username", ""))
        QgsExpressionContextUtils.setGlobalVariable(
            'mergin_url', settings.value('Mergin/server', ""))
Ejemplo n.º 6
0
    def processAlgorithm(self, parameters, context, feedback):
        connection_name = parameters[self.CONNECTION_NAME]

        # Set global variable
        QgsExpressionContextUtils.setGlobalVariable('gobs_connection_name',
                                                    connection_name)
        feedback.pushInfo(
            tr('PostgreSQL connection to G-Obs database') + ' = ' +
            connection_name)

        msg = tr('Configuration has been saved')
        feedback.pushInfo(msg)
        status = 1

        return {self.OUTPUT_STATUS: status, self.OUTPUT_STRING: msg}
Ejemplo n.º 7
0
    def setUp(self) -> None:
        self.connection = psycopg2.connect(
            user='******',
            password='******',
            host='db',
            port='5432',
            database='gis'
        )
        self.current_value = QgsExpressionContextUtils.globalScope().variable('raepa_connection_name')
        QgsExpressionContextUtils.setGlobalVariable('raepa_connection_name', 'test')

        self.cursor = self.connection.cursor()

        self.provider = RaepaProvider()
        registry = QgsApplication.processingRegistry()
        if not registry.providerById(self.provider.id()):
            registry.addProvider(self.provider)
Ejemplo n.º 8
0
 def applySettings(self):
     self.settings = {}
     if self.radioButtonMemorySource.isChecked():
         self.settings['sample_source'] = 'memory'
     else:
         self.settings['sample_source'] = self.fileWidget.filePath()
     self.settings['auto_open_form'] = self.autoOpenCheckBox.isChecked()
     categories = {}
     for row in range(0, self.tableWidget.rowCount()):
         categories[self.tableWidget.item(
             row, 1).text()[:20]] = self.tableWidget.item(
                 row, 0).background().color().name()
     self.settings['categories'] = categories
     self.parentInstance.sample_cursor.update_ds(
         self.settings['sample_source'])
     QgsExpressionContextUtils.setGlobalVariable("mapillarySettings",
                                                 json.dumps(self.settings))
Ejemplo n.º 9
0
    def processAlgorithm(self, parameters, context, feedback):
        """
        Here is where the processing itself takes place.
        """
        connection_name = parameters[self.CONNECTION_NAME]

        # Set global variable
        # noinspection PyCallByClass,PyArgumentList
        QgsExpressionContextUtils.setGlobalVariable('raepa_connection_name',
                                                    connection_name)
        feedback.pushInfo('Connection PostgreSQL à la base RAEPA "{}"'.format(
            connection_name))

        msg = 'La configuration a été faite'
        feedback.pushInfo(msg)
        status = 1

        return {self.OUTPUT_STATUS: status, self.OUTPUT_STRING: msg}
Ejemplo n.º 10
0
    def __init__(self, iface):
        self.iface = iface
        self.plugin_dir = os.path.dirname(__file__)
        self.data_item_provider = None
        self.actions = []
        self.actions_always_on = []
        self.menu = "Mergin Plugin"
        self.mergin_proj_dir = None
        self.mc = None
        self.manager = None
        self.toolbar = self.iface.addToolBar("Mergin Toolbar")
        self.toolbar.setToolTip("Mergin Toolbar")
        self.toolbar.setObjectName("MerginToolbar")

        self.iface.projectRead.connect(self.on_qgis_project_changed)
        self.iface.newProjectCreated.connect(self.on_qgis_project_changed)
        QgsProject.instance().projectSaved.connect(self.on_qgis_project_changed)

        settings = QSettings()
        QgsExpressionContextUtils.setGlobalVariable("mergin_username", settings.value("Mergin/username", ""))
        QgsExpressionContextUtils.setGlobalVariable("mergin_url", settings.value("Mergin/server", ""))
Ejemplo n.º 11
0
 def unload(self):
     QgsExpressionContextUtils.setGlobalVariable('gobs_get_database_data',
                                                 'no')
Ejemplo n.º 12
0
    def accept(self):

        if (self.lineEdit.text() == "" or self.mLineEdit.text() == ""):
            QMessageBox.warning(
                self, 'Advertencia',
                b'Ingresa usuario y/o contrase\xc3\xb1a'.decode("utf-8"))
            return

        try:
            API_ENDPOINT = AccesoToken.ip_server + "/Api/Login/authenticate"
            data_body = {
                'Usuario': self.lineEdit.text(),
                'Contrasena': self.mLineEdit.text()
            }

            r = requests.post(url=API_ENDPOINT, data=data_body)

            if (r.status_code == 401):
                QMessageBox.critical(
                    self, 'Mensaje',
                    b'Usuario y/o contrase\xc3\xb1a err\xc3\xb3neos'.decode(
                        "utf-8"))
                return

        except requests.exceptions.HTTPError as errh:
            self.iface.messageBar().pushMessage("Error",
                                                "Http Error:" + str(errh),
                                                level=Qgis.Critical)
            return
        except requests.exceptions.ConnectionError as errc:
            self.iface.messageBar().pushMessage("Error",
                                                "Error Connecting:" +
                                                str(errc),
                                                level=Qgis.Critical)
            return
        except requests.exceptions.Timeout as errt:
            self.iface.messageBar().pushMessage("Error",
                                                "Timeout Error:" + str(errt),
                                                level=Qgis.Critical)
            return
        except requests.exceptions.RequestException as err:
            self.iface.messageBar().pushMessage("Error",
                                                "OOps: Something Else" +
                                                str(err),
                                                level=Qgis.Critical)
            return

        data = r.json()
        AccesoToken.acces_key = data['access_token']
        QgsExpressionContextUtils.setGlobalVariable('user_mtc',
                                                    self.lineEdit.text())

        QMessageBox.information(self, 'Mensaje',
                                'Bienvenido ' + self.lineEdit.text())

        action = [
            i for i in self.menu.actions() if i.text() == 'Cargar Capas'
        ][0]
        action.setEnabled(True)
        action = [
            i for i in self.menu.actions()
            if i.text() == b'Cerrar Sesi\xc3\xb3n'.decode("utf-8")
        ][0]
        action.setEnabled(True)
        action = [
            i for i in self.menu.actions()
            if i.text() == b'Iniciar Sesi\xc3\xb3n'.decode("utf-8")
        ][0]
        action.setEnabled(False)
        self.close()
Ejemplo n.º 13
0
 def tearDown(self) -> None:
     QgsApplication.processingRegistry().removeProvider(self.provider)
     QgsExpressionContextUtils.setGlobalVariable('raepa_connection_name', self.current_value)