Ejemplo n.º 1
0
    def get_values_checked_param_user(self, chk, widget, field, value=None):

        elem = {}

        elem['widget'] = str(widget.objectName())
        elem['chk'] = str(chk.objectName())

        if type(widget) is QLineEdit:
            value = qt_tools.getWidgetText(self.dlg_config,
                                           widget,
                                           return_string_null=False)
            elem['widget_type'] = 'text'
        elif type(widget) is QComboBox:
            value = qt_tools.get_item_data(self.dlg_config, widget, 0)
            elem['widget_type'] = 'combo'
        elif type(widget) is QCheckBox:
            value = qt_tools.isChecked(self.dlg_config, chk)
            elem['widget_type'] = 'check'
        elif type(widget) is QDateEdit:
            value = qt_tools.getCalendarDate(self.dlg_config, widget)
            elem['widget_type'] = 'datetime'
        elif type(widget) is QgsDateTimeEdit:
            value = qt_tools.getCalendarDate(self.dlg_config, widget)
            elem['widget_type'] = 'datetime'

        elem['isChecked'] = str(qt_tools.isChecked(self.dlg_config, chk))
        elem['value'] = value

        self.list_update.append(elem)
    def check_translate_options(self):
        py_msg = qt_tools.isChecked(self.dlg_qm, self.dlg_qm.chk_py_msg)
        db_msg = qt_tools.isChecked(self.dlg_qm, self.dlg_qm.chk_db_msg)
        self.dlg_qm.lbl_info.clear()
        msg = ''

        if py_msg:
            status_py_msg = self.create_files_py_message()
            if status_py_msg is True:
                msg += "Python translation successful\n"
            elif status_py_msg is False:
                msg += "Python translation failed\n"
            elif status_py_msg is None:
                msg += "Python translation canceled\n"

        if db_msg:
            status_db_msg = self.get_files_db_messages()
            if status_db_msg is True:
                msg += "Data base translation successful\n"
            elif status_db_msg is False:
                msg += "Data base translation failed\n"
            elif status_db_msg is None:
                msg += "Data base translation canceled\n"

            status_cfg_msg = self.get_files_config_messages()
            if status_cfg_msg is True:
                msg += "Data base config translation successful\n"
            elif status_cfg_msg is False:
                msg += "Data base config translation failed\n"
            elif status_cfg_msg is None:
                msg += "Data base config translation canceled\n"

        if msg != '':
            qt_tools.setWidgetText(self.dlg_qm, 'lbl_info', msg)
    def save_user_values(self):
        """ Save selected user values """

        host = qt_tools.getWidgetText(self.dlg_qm,
                                      self.dlg_qm.txt_host,
                                      return_string_null=False)
        port = qt_tools.getWidgetText(self.dlg_qm,
                                      self.dlg_qm.txt_port,
                                      return_string_null=False)
        db = qt_tools.getWidgetText(self.dlg_qm,
                                    self.dlg_qm.txt_db,
                                    return_string_null=False)
        user = qt_tools.getWidgetText(self.dlg_qm,
                                      self.dlg_qm.txt_user,
                                      return_string_null=False)
        language = qt_tools.get_item_data(self.dlg_qm,
                                          self.dlg_qm.cmb_language, 0)
        py_msg = qt_tools.isChecked(self.dlg_qm, self.dlg_qm.chk_py_msg)
        db_msg = qt_tools.isChecked(self.dlg_qm, self.dlg_qm.chk_db_msg)
        set_parser_value('i18n_generator', 'qm_lang_host', f"{host}")
        set_parser_value('i18n_generator', 'qm_lang_port', f"{port}")
        set_parser_value('i18n_generator', 'qm_lang_db', f"{db}")
        set_parser_value('i18n_generator', 'qm_lang_user', f"{user}")
        set_parser_value('i18n_generator', 'qm_lang_language', f"{language}")
        set_parser_value('i18n_generator', 'qm_lang_py_msg', f"{py_msg}")
        set_parser_value('i18n_generator', 'qm_lang_db_msg', f"{db_msg}")
Ejemplo n.º 4
0
    def check_fields(self):

        file_inp = qt_tools.getWidgetText(self.dlg_go2epa,
                                          self.dlg_go2epa.txt_file_inp)
        file_rpt = qt_tools.getWidgetText(self.dlg_go2epa,
                                          self.dlg_go2epa.txt_file_rpt)
        result_name = qt_tools.getWidgetText(self.dlg_go2epa,
                                             self.dlg_go2epa.txt_result_name,
                                             False, False)

        # Control export INP
        if qt_tools.isChecked(self.dlg_go2epa, self.dlg_go2epa.chk_export):
            if self.check_inp_chk(file_inp) is False:
                return False

        # Control execute epa software
        if self.check_rpt() is False:
            return False

        # Control import result
        if qt_tools.isChecked(self.dlg_go2epa,
                              self.dlg_go2epa.chk_import_result):
            if file_rpt is None:
                msg = "Select valid RPT file"
                self.controller.show_warning(msg, parameter=str(file_rpt))
                return False
            if not qt_tools.isChecked(self.dlg_go2epa,
                                      self.dlg_go2epa.chk_exec):
                if not os.path.exists(file_rpt):
                    msg = "File RPT not found"
                    self.controller.show_warning(msg, parameter=str(file_rpt))
                    return False
            else:
                if self.check_rpt() is False:
                    return False

        # Control result name
        if result_name == '':
            self.dlg_go2epa.txt_result_name.setStyleSheet(
                "border: 1px solid red")
            msg = "This parameter is mandatory. Please, set a value"
            self.controller.show_details(msg, title="Rpt fail", inf_text=None)
            return False

        sql = (f"SELECT result_id FROM rpt_cat_result "
               f"WHERE result_id = '{result_name}' LIMIT 1")
        row = self.controller.get_row(sql)
        if row:
            msg = "Result name already exists, do you want overwrite?"
            answer = self.controller.ask_question(msg, title="Alert")
            if not answer:
                return False

        return True
Ejemplo n.º 5
0
    def get_radius(self, point):

        self.radius = self.dlg_create_circle.radius.text()
        if not self.radius:
            self.radius = 0.1
        self.delete_prev = qt_tools.isChecked(self.dlg_create_circle, self.dlg_create_circle.chk_delete_prev)

        if self.layer_circle:
            self.layer_circle.startEditing()
            close_dialog(self.dlg_create_circle, self.controller)
            if self.delete_prev:
                selection = self.layer_circle.getFeatures()
                self.layer_circle.selectByIds([f.id() for f in selection])
                if self.layer_circle.selectedFeatureCount() > 0:
                    features = self.layer_circle.selectedFeatures()
                    for feature in features:
                        self.layer_circle.deleteFeature(feature.id())

            if not self.cancel_circle:
                feature = QgsFeature()
                feature.setGeometry(QgsGeometry.fromPointXY(point).buffer(float(self.radius), 100))
                provider = self.layer_circle.dataProvider()
                # Next line generate: WARNING    Attribute index 0 out of bounds [0;0]
                # but all work ok
                provider.addFeatures([feature])

            self.layer_circle.commitChanges()
            self.layer_circle.dataProvider().forceReload()
            self.layer_circle.triggerRepaint()

        else:
            self.iface.actionPan().trigger()
            self.cancel_circle = False
            return
Ejemplo n.º 6
0
    def go2epa_accept(self):
        """ Save INP, RPT and result name into GSW file """

        # Save user values
        self.save_user_values()

        self.dlg_go2epa.txt_infolog.clear()
        self.dlg_go2epa.txt_file_rpt.setStyleSheet(None)
        status = self.check_fields()
        if status is False:
            return

        # Get widgets values
        self.result_name = qt_tools.getWidgetText(
            self.dlg_go2epa, self.dlg_go2epa.txt_result_name, False, False)
        self.net_geom = qt_tools.isChecked(self.dlg_go2epa,
                                           self.dlg_go2epa.chk_only_check)
        self.export_inp = qt_tools.isChecked(self.dlg_go2epa,
                                             self.dlg_go2epa.chk_export)
        self.export_subcatch = qt_tools.isChecked(
            self.dlg_go2epa, self.dlg_go2epa.chk_export_subcatch)
        self.file_inp = qt_tools.getWidgetText(self.dlg_go2epa,
                                               self.dlg_go2epa.txt_file_inp)
        self.exec_epa = qt_tools.isChecked(self.dlg_go2epa,
                                           self.dlg_go2epa.chk_exec)
        self.file_rpt = qt_tools.getWidgetText(self.dlg_go2epa,
                                               self.dlg_go2epa.txt_file_rpt)
        self.import_result = qt_tools.isChecked(
            self.dlg_go2epa, self.dlg_go2epa.chk_import_result)

        # Check for sector selector
        if self.export_inp:
            sql = "SELECT sector_id FROM selector_sector LIMIT 1"
            row = self.controller.get_row(sql)
            if row is None:
                msg = "You need to select some sector"
                self.controller.show_info_box(msg)
                return

        # Set background task 'Go2Epa'
        description = f"Go2Epa"
        self.task_go2epa = GwGo2EpaTask(description, self)
        QgsApplication.taskManager().addTask(self.task_go2epa)
        QgsApplication.taskManager().triggerTask(self.task_go2epa)
Ejemplo n.º 7
0
    def check_rpt(self):

        file_inp = qt_tools.getWidgetText(self.dlg_go2epa,
                                          self.dlg_go2epa.txt_file_inp)
        file_rpt = qt_tools.getWidgetText(self.dlg_go2epa,
                                          self.dlg_go2epa.txt_file_rpt)

        # Control execute epa software
        if qt_tools.isChecked(self.dlg_go2epa, self.dlg_go2epa.chk_exec):
            if self.check_inp_chk(file_inp) is False:
                return False

            if file_rpt is None:
                msg = "Select valid RPT file"
                self.controller.show_warning(msg, parameter=str(file_rpt))
                return False

            if not qt_tools.isChecked(self.dlg_go2epa,
                                      self.dlg_go2epa.chk_export):
                if not os.path.exists(file_inp):
                    msg = "File INP not found"
                    self.controller.show_warning(msg, parameter=str(file_rpt))
                    return False
Ejemplo n.º 8
0
    def save_user_values(self):
        """ Save QGIS settings related with file_manager """

        cur_user = self.controller.get_current_user()
        self.controller.plugin_settings_set_value(
            'go2epa_RESULT_NAME' + cur_user,
            qt_tools.getWidgetText(self.dlg_go2epa,
                                   'txt_result_name',
                                   return_string_null=False))
        self.controller.plugin_settings_set_value(
            'go2epa_FILE_INP' + cur_user,
            qt_tools.getWidgetText(self.dlg_go2epa,
                                   'txt_file_inp',
                                   return_string_null=False))
        self.controller.plugin_settings_set_value(
            'go2epa_FILE_RPT' + cur_user,
            qt_tools.getWidgetText(self.dlg_go2epa,
                                   'txt_file_rpt',
                                   return_string_null=False))
        self.controller.plugin_settings_set_value(
            'go2epa_chk_NETWORK_GEOM' + cur_user,
            qt_tools.isChecked(self.dlg_go2epa,
                               self.dlg_go2epa.chk_only_check))
        self.controller.plugin_settings_set_value(
            'go2epa_chk_INP' + cur_user,
            qt_tools.isChecked(self.dlg_go2epa, self.dlg_go2epa.chk_export))
        self.controller.plugin_settings_set_value(
            'go2epa_chk_UD' + cur_user,
            qt_tools.isChecked(self.dlg_go2epa,
                               self.dlg_go2epa.chk_export_subcatch))
        self.controller.plugin_settings_set_value(
            'go2epa_chk_EPA' + cur_user,
            qt_tools.isChecked(self.dlg_go2epa, self.dlg_go2epa.chk_exec))
        self.controller.plugin_settings_set_value(
            'go2epa_chk_RPT' + cur_user,
            qt_tools.isChecked(self.dlg_go2epa,
                               self.dlg_go2epa.chk_import_result))
Ejemplo n.º 9
0
    def get_values(self, point_1, point_2):

        self.controller.plugin_settings_set_value(
            self.dlg_create_point.rb_left.objectName(),
            self.dlg_create_point.rb_left.isChecked())
        self.dist_x = self.dlg_create_point.dist_x.text()
        if not self.dist_x:
            self.dist_x = 0
        self.dist_y = self.dlg_create_point.dist_y.text()
        if not self.dist_y:
            self.dist_y = 0

        self.delete_prev = qt_tools.isChecked(
            self.dlg_create_point, self.dlg_create_point.chk_delete_prev)
        if self.layer_points:
            self.layer_points.startEditing()
            close_dialog(self.dlg_create_point, self.controller)
            if self.dlg_create_point.rb_left.isChecked():
                self.direction = 1
            else:
                self.direction = 2

            sql = f"SELECT ST_GeomFromText('POINT({point_1[0]} {point_1[1]})', {self.srid})"
            row = self.controller.get_row(sql)
            point_1 = row[0]
            sql = f"SELECT ST_GeomFromText('POINT({point_2[0]} {point_2[1]})', {self.srid})"
            row = self.controller.get_row(sql)
            point_2 = row[0]

            sql = (f"SELECT gw_fct_cad_add_relative_point "
                   f"('{point_1}', '{point_2}', {self.dist_x}, "
                   f"{self.dist_y}, {self.direction}, {self.delete_prev})")
            self.controller.execute_sql(sql)
            self.layer_points.commitChanges()
            self.layer_points.dataProvider().forceReload()
            self.layer_points.triggerRepaint()

        else:
            self.iface.actionPan().trigger()
            self.cancel_point = False
            return
Ejemplo n.º 10
0
    def get_values_changed_param_system(self, widget, value=None):

        elem = {}

        if type(widget) is QLineEdit:
            value = qt_tools.getWidgetText(self.dlg_config,
                                           widget,
                                           return_string_null=False)
        elif type(widget) is QComboBox:
            value = qt_tools.get_item_data(self.dlg_config, widget, 0)
        elif type(widget) is QCheckBox:
            value = qt_tools.isChecked(self.dlg_config, widget)
        elif type(widget) is QDateEdit:
            value = qt_tools.getCalendarDate(self.dlg_config, widget)

        elem['widget'] = str(widget.objectName())
        elem['chk'] = str('')
        elem['isChecked'] = str('')
        elem['value'] = value
        elem['sysRoleId'] = 'role_admin'

        self.list_update.append(elem)
Ejemplo n.º 11
0
    def execute_function(self, dialog, combo, result):

        dialog.btn_cancel.setEnabled(False)
        dialog.progressBar.setMaximum(0)
        dialog.progressBar.setMinimum(0)
        dialog.progressBar.setVisible(True)
        extras = ''
        feature_field = ''
        # TODO Check if time functions is short or long, activate and set undetermined  if not short

        # Get function name
        function = None
        function_name = None
        for group, function in list(result['fields'].items()):
            if len(function) != 0:
                self.save_settings_values(dialog, function)
                self.save_parametric_values(dialog, function)
                function_name = function[0]['functionname']
                break

        if function_name is None:
            return

        # If function is not parametrized, call function(old) without json
        if self.is_paramtetric is False:
            self.execute_no_parametric(dialog, function_name)
            dialog.progressBar.setVisible(False)
            dialog.progressBar.setMinimum(0)
            dialog.progressBar.setMaximum(1)
            dialog.progressBar.setValue(1)
            return

        if function[0]['input_params']['featureType']:
            layer = None
            layer_name = qt_tools.get_item_data(dialog, combo, 1)
            if layer_name != -1:
                layer = self.set_selected_layer(dialog, combo)
                if not layer:
                    dialog.progressBar.setVisible(False)
                    dialog.progressBar.setMinimum(0)
                    dialog.progressBar.setMaximum(1)
                    dialog.progressBar.setValue(1)
                    return

            selection_mode = self.rbt_checked['widget']
            extras += f'"selectionMode":"{selection_mode}",'
            # Check selection mode and get (or not get) all feature id
            feature_id_list = '"id":['
            if (selection_mode == 'wholeSelection') or (
                    selection_mode == 'previousSelection' and layer is None):
                feature_id_list += ']'
            elif selection_mode == 'previousSelection' and layer is not None:
                features = layer.selectedFeatures()
                feature_type = qt_tools.get_item_data(dialog,
                                                      dialog.cmb_geom_type, 0)
                for feature in features:
                    feature_id = feature.attribute(feature_type + "_id")
                    feature_id_list += f'"{feature_id}", '
                if len(features) > 0:
                    feature_id_list = feature_id_list[:-2] + ']'
                else:
                    feature_id_list += ']'

            if layer_name != -1:
                feature_field = f'"tableName":"{layer_name}", '
                feature_type = qt_tools.get_item_data(dialog,
                                                      dialog.cmb_geom_type, 0)
                feature_field += f'"featureType":"{feature_type}", '
            feature_field += feature_id_list

        widget_list = dialog.grb_parameters.findChildren(QWidget)
        widget_is_void = False
        extras += '"parameters":{'
        for group, function in list(result['fields'].items()):
            if len(function) != 0:
                if function[0]['return_type'] not in (None, ''):
                    for field in function[0]['return_type']:
                        widget = dialog.findChild(QWidget, field['widgetname'])
                        param_name = widget.objectName()
                        if type(widget) in ('', QLineEdit):
                            widget.setStyleSheet(None)
                            value = qt_tools.getWidgetText(
                                dialog, widget, False, False)
                            extras += f'"{param_name}":"{value}", '.replace(
                                '""', 'null')
                            if value is '' and widget.property('ismandatory'):
                                widget_is_void = True
                                widget.setStyleSheet("border: 1px solid red")
                        elif type(widget) in ('', QSpinBox, QDoubleSpinBox):
                            value = qt_tools.getWidgetText(
                                dialog, widget, False, False)
                            if value == '':
                                value = 0
                            extras += f'"{param_name}":"{value}", '
                        elif type(widget) in ('', QComboBox):
                            value = qt_tools.get_item_data(dialog, widget, 0)
                            extras += f'"{param_name}":"{value}", '
                        elif type(widget) in ('', QCheckBox):
                            value = qt_tools.isChecked(dialog, widget)
                            extras += f'"{param_name}":"{str(value).lower()}", '
                        elif type(widget) in ('', QgsDateTimeEdit):
                            value = qt_tools.getCalendarDate(dialog, widget)
                            if value == "" or value is None:
                                extras += f'"{param_name}":null, '
                            else:
                                extras += f'"{param_name}":"{value}", '

        if widget_is_void:
            message = "This param is mandatory. Please, set a value"
            self.controller.show_warning(message, parameter='')
            dialog.progressBar.setVisible(False)
            dialog.progressBar.setMinimum(0)
            dialog.progressBar.setMaximum(1)
            dialog.progressBar.setValue(1)
            return

        dialog.progressBar.setFormat(f"Running function: {function_name}")
        dialog.progressBar.setAlignment(Qt.AlignCenter)

        if len(widget_list) > 0:
            extras = extras[:-2] + '}'
        else:
            extras += '}'

        body = self.create_body(feature=feature_field, extras=extras)
        json_result = self.controller.get_json(function_name,
                                               body,
                                               log_sql=True)
        self.add_layer.populate_info_text(dialog, json_result['body']['data'],
                                          True, True, 1, True)

        dialog.progressBar.setAlignment(Qt.AlignCenter)
        dialog.progressBar.setMinimum(0)
        dialog.progressBar.setMaximum(1)
        dialog.progressBar.setValue(1)
        if json_result is None:
            dialog.progressBar.setFormat(
                f"Function: {function_name} executed with no result")
            return True

        if not json_result:
            dialog.progressBar.setFormat(
                f"Function: {function_name} failed. See log file for more details"
            )
            return False

        try:
            dialog.progressBar.setFormat(
                f"Function {function_name} has finished")

            # getting simbology capabilities
            if 'setStyle' in json_result['body']['data']:
                set_sytle = json_result['body']['data']['setStyle']
                if set_sytle == "Mapzones":
                    # call function to simbolize mapzones
                    self.set_style_mapzones()

        except KeyError as e:
            msg = f"<b>Key: </b>{e}<br>"
            msg += f"<b>key container: </b>'body/data/ <br>"
            msg += f"<b>Python file: </b>{__name__} <br>"
            msg += f"<b>Python function:</b> {self.execute_function.__name__} <br>"
            self.show_exceptions_msg(
                "Key on returned json from ddbb is missed.", msg)

        self.remove_layers()