コード例 #1
0
    def ud_hydrology_selector(self):
        """ Dialog hydrology_selector.ui """

        self.dlg_hydrology_selector = HydrologySelector()
        self.load_settings(self.dlg_hydrology_selector)

        self.dlg_hydrology_selector.btn_accept.clicked.connect(self.save_hydrology)
        self.dlg_hydrology_selector.hydrology.currentIndexChanged.connect(self.update_labels)
        self.dlg_hydrology_selector.txt_name.textChanged.connect(partial(self.filter_cbx_by_text, "cat_hydrology", self.dlg_hydrology_selector.txt_name, self.dlg_hydrology_selector.hydrology))

        sql = ("SELECT DISTINCT(name), hydrology_id FROM " + self.schema_name + ".cat_hydrology ORDER BY name")
        rows = self.controller.get_rows(sql)
        if not rows:
            message = "Any data found in table"
            self.controller.show_warning(message, parameter='cat_hydrology')
            return False
        
        utils_giswater.set_item_data(self.dlg_hydrology_selector.hydrology, rows)
 
        sql = ("SELECT DISTINCT(t1.name) FROM " + self.schema_name + ".cat_hydrology AS t1"
               " INNER JOIN " + self.schema_name + ".inp_selector_hydrology AS t2 ON t1.hydrology_id = t2.hydrology_id "
               " WHERE t2.cur_user = current_user")
        row = self.controller.get_row(sql)

        if row:
            utils_giswater.setWidgetText(self.dlg_hydrology_selector, self.dlg_hydrology_selector.hydrology, row[0])
        else:
            utils_giswater.setWidgetText(self.dlg_hydrology_selector, self.dlg_hydrology_selector.hydrology, 0)
        self.update_labels()
        self.dlg_hydrology_selector.setWindowFlags(Qt.WindowStaysOnTopHint)
        self.dlg_hydrology_selector.exec_()
コード例 #2
0
 def filter_cbx_by_text(self, tablename, widgettxt, widgetcbx):
     
     sql = ("SELECT DISTINCT(name), hydrology_id FROM " + self.schema_name + "." + str(tablename) + ""
            " WHERE name LIKE '%" + str(widgettxt.text()) + "%'"
            " ORDER BY name ")
     rows = self.controller.get_rows(sql)
     if not rows:
         message = "Check the table 'cat_hydrology' "
         self.controller.show_warning(message)
         return False
     utils_giswater.set_item_data(widgetcbx, rows)
     self.update_labels()
コード例 #3
0
 def ws_times(self):
     """ Open dialog ws_times.ui"""
     
     dlg_wstimes = WStimes()
     self.load_settings(dlg_wstimes)
     dlg_wstimes.duration.setValidator(QIntValidator())
     sql = "SELECT id, id FROM "+self.schema_name+".inp_value_times ORDER BY id"
     rows = self.controller.get_rows(sql)
     utils_giswater.set_item_data(dlg_wstimes.statistic, rows, 1)
     dlg_wstimes.btn_accept.clicked.connect(partial(self.update_table, 'inp_times', dlg_wstimes))
     dlg_wstimes.btn_cancel.clicked.connect(dlg_wstimes.close)
     self.go2epa_options_get_data('inp_times', dlg_wstimes)
     dlg_wstimes.setWindowFlags(Qt.WindowStaysOnTopHint)
     dlg_wstimes.exec_()
コード例 #4
0
    def fill_fields(self):
        """ Fill combo boxes of the form """
        # Visit tab
        # Set current date and time
        current_date = QDate.currentDate()
        self.dlg_lot.startdate.setDate(current_date)
        self.dlg_lot.enddate.setDate(current_date)

        # Set current user
        sql = "SELECT current_user"
        row = self.controller.get_row(sql, commit=self.autocommit)
        utils_giswater.setWidgetText(self.dlg_lot, self.user_name, row[0])

        # Fill ComboBox cmb_visit_class
        sql = ("SELECT id, idval, feature_type"
               " FROM " + self.schema_name + ".om_visit_class "
               " WHERE ismultifeature is False"
               " ORDER BY idval")
        visitclass_ids = self.controller.get_rows(sql, commit=self.autocommit)
        if visitclass_ids:
            utils_giswater.set_item_data(self.dlg_lot.cmb_visit_class,
                                         visitclass_ids, 1)

        # Fill ComboBox cmb_assigned_to
        sql = ("SELECT id, idval"
               " FROM " + self.schema_name + ".cat_team "
               " WHERE active is True "
               " ORDER BY idval")
        users = self.controller.get_rows(sql, commit=self.autocommit)
        if users:
            utils_giswater.set_item_data(self.dlg_lot.cmb_assigned_to, users,
                                         1)

        # TODO fill combo with correct table
        # Fill ComboBox cmb_status
        sql = ("SELECT id, idval"
               " FROM " + self.schema_name + ".om_visit_class "
               " ORDER BY idval")
        status = self.controller.get_rows(sql, commit=self.autocommit)
        status = [(0, 'PLANIFICAT'), (1, 'EXITOS'), (2, 'FAIL'),
                  (3, 'VALIDAT')]
        if status:
            utils_giswater.set_item_data(self.dlg_lot.cmb_status,
                                         status,
                                         1,
                                         sort_combo=False)

        # Relations tab
        # fill feature_type
        sql = ("SELECT id, id"
               " FROM " + self.schema_name + ".sys_feature_type"
               " WHERE net_category = 1"
               " ORDER BY id")
        feature_type = self.controller.get_rows(sql,
                                                log_sql=False,
                                                commit=self.autocommit)
        if feature_type:
            utils_giswater.set_item_data(self.dlg_lot.feature_type,
                                         feature_type, 1)
コード例 #5
0
    def ws_options(self):
        """ Open dialog ws_options.ui """
        
        # Create dialog
        self.dlg_wsoptions = WSoptions()
        self.load_settings(self.dlg_wsoptions)

        # Allow QTextView only Double text
        self.dlg_wsoptions.viscosity.setValidator(QDoubleValidator())
        self.dlg_wsoptions.trials.setValidator(QDoubleValidator())
        self.dlg_wsoptions.accuracy.setValidator(QDoubleValidator())
        self.dlg_wsoptions.emitter_exponent.setValidator(QDoubleValidator())
        self.dlg_wsoptions.checkfreq.setValidator(QDoubleValidator())
        self.dlg_wsoptions.maxcheck.setValidator(QDoubleValidator())
        self.dlg_wsoptions.damplimit.setValidator(QDoubleValidator())
        self.dlg_wsoptions.node_id.setValidator(QDoubleValidator())
        self.dlg_wsoptions.unbalanced_n.setValidator(QDoubleValidator())
        self.dlg_wsoptions.specific_gravity.setValidator(QDoubleValidator())
        self.dlg_wsoptions.diffusivity.setValidator(QDoubleValidator())
        self.dlg_wsoptions.tolerance.setValidator(QDoubleValidator())
        self.dlg_wsoptions.demand_multiplier.setValidator(QDoubleValidator())

        self.dlg_wsoptions.rtc_enabled.setChecked(True)

        # Set values from widgets of type QComboBox
        sql = "SELECT id, id FROM "+self.schema_name+".inp_value_opti_units ORDER BY id"
        rows = self.controller.get_rows(sql)
        utils_giswater.set_item_data(self.dlg_wsoptions.units, rows)

        sql = "SELECT id, id FROM "+self.schema_name+".inp_value_opti_headloss ORDER BY id"
        rows = self.controller.get_rows(sql)
        utils_giswater.set_item_data(self.dlg_wsoptions.headloss, rows)

        sql = "SELECT pattern_id, pattern_id FROM "+self.schema_name+".inp_pattern ORDER BY pattern_id"
        rows = self.controller.get_rows(sql)
        utils_giswater.set_item_data(self.dlg_wsoptions.pattern, rows)

        sql = "SELECT id, id FROM "+self.schema_name+".inp_value_opti_unbal ORDER BY id"
        rows = self.controller.get_rows(sql)
        utils_giswater.set_item_data(self.dlg_wsoptions.unbalanced, rows)

        sql = "SELECT id, id FROM "+self.schema_name+".inp_value_opti_hyd ORDER BY id"
        rows = self.controller.get_rows(sql)
        utils_giswater.set_item_data(self.dlg_wsoptions.hydraulics, rows)

        sql = "SELECT id, id FROM "+self.schema_name+".inp_value_opti_qual ORDER BY id"
        rows = self.controller.get_rows(sql)
        utils_giswater.set_item_data(self.dlg_wsoptions.quality, rows)

        sql = "SELECT id, id FROM "+self.schema_name+".inp_value_opti_valvemode ORDER BY id"
        rows = self.controller.get_rows(sql)
        utils_giswater.set_item_data(self.dlg_wsoptions.valve_mode, rows)

        sql = "SELECT id::text, id::text FROM "+self.schema_name+".anl_mincut_result_cat ORDER BY id"
        rows = self.controller.get_rows(sql)
        utils_giswater.set_item_data(self.dlg_wsoptions.valve_mode_mincut_result, rows)

        sql = "SELECT id, code FROM "+self.schema_name+".ext_cat_period ORDER BY id"
        rows = self.controller.get_rows(sql)
        utils_giswater.set_item_data(self.dlg_wsoptions.rtc_period_id, rows, 1)

        sql = "SELECT id, id FROM "+self.schema_name+".inp_value_opti_rtc_coef ORDER BY id"
        rows = self.controller.get_rows(sql)
        utils_giswater.set_item_data(self.dlg_wsoptions.rtc_coefficient, rows)

        # TODO
        if self.dlg_wsoptions.valve_mode.currentText() != "MINCUT RESULTS":
            self.dlg_wsoptions.valve_mode_mincut_result.setEnabled(False)

        if self.dlg_wsoptions.hydraulics.currentText() == "":
            self.dlg_wsoptions.hydraulics_fname.setEnabled(False)
        else:
            self.dlg_wsoptions.hydraulics_fname.setEnabled(True)

        # TODO
        if self.dlg_wsoptions.quality.currentText() == "TRACE":
            self.dlg_wsoptions.node_id.setEnabled(False)
        else:
            self.dlg_wsoptions.node_id.setEnabled(True)

        if utils_giswater.isChecked(self.dlg_wsoptions, self.dlg_wsoptions.rtc_enabled):
            self.dlg_wsoptions.rtc_period_id.setEnabled(True)
            self.dlg_wsoptions.rtc_coefficient.setEnabled(True)
            
        self.dlg_wsoptions.unbalanced.currentIndexChanged.connect(
            partial(self.enable_linetext, self.dlg_wsoptions, self.dlg_wsoptions.unbalanced, self.dlg_wsoptions.unbalanced_n, "STOP"))
        self.dlg_wsoptions.hydraulics.currentIndexChanged.connect(
            partial(self.enable_linetext, self.dlg_wsoptions, self.dlg_wsoptions.hydraulics, self.dlg_wsoptions.hydraulics_fname, ""))
        self.dlg_wsoptions.quality.currentIndexChanged.connect(
            partial(self.enable_linetext, self.dlg_wsoptions, self.dlg_wsoptions.quality, self.dlg_wsoptions.node_id, "TRACE"))
        self.dlg_wsoptions.valve_mode.currentIndexChanged.connect(
            partial(self.enable_linetext, self.dlg_wsoptions, self.dlg_wsoptions.valve_mode, self.dlg_wsoptions.valve_mode_mincut_result, ("EPA TABLES", "INVENTORY VALUES")))
        self.dlg_wsoptions.rtc_enabled.stateChanged.connect(self.enable_per_coef)

        self.dlg_wsoptions.btn_accept.clicked.connect(
            partial(self.update_table, 'inp_options', self.dlg_wsoptions))
        self.dlg_wsoptions.btn_cancel.clicked.connect(self.dlg_wsoptions.close)
        self.go2epa_options_get_data('inp_options', self.dlg_wsoptions)
        self.dlg_wsoptions.setWindowFlags(Qt.WindowStaysOnTopHint)
        self.dlg_wsoptions.exec_()
コード例 #6
0
    def fill_combos(self):
        """ Fill combo boxes of the form """

        # Visit tab
        # Fill ComboBox visitcat_id
        # save result in self.visitcat_ids to get id depending on selected combo
        sql = ("SELECT id, name"
               " FROM " + self.schema_name + ".om_visit_cat"
               " WHERE active is true"
               " ORDER BY name")
        self.visitcat_ids = self.controller.get_rows(sql, commit=self.autocommit)
        
        if self.visitcat_ids:
            utils_giswater.set_item_data(self.dlg.visitcat_id, self.visitcat_ids, 1)         
            # now get default value to be show in visitcat_id
            sql = ("SELECT value"
                " FROM " + self.schema_name + ".config_param_user"
                " WHERE parameter = 'visitcat_vdefault'"
                " AND user = '******'")
            row = self.controller.get_row(sql, commit=self.autocommit)
            if row:
                # if int then look for default row ans set it
                try:
                    utils_giswater.set_combo_itemData(self.dlg.visitcat_id, row[0], 0, 1)
                    for i in range(0, self.dlg.visitcat_id.count()):
                        elem = self.dlg.visitcat_id.itemData(i)
                        if str(row[0]) == str(elem[0]):                         
                            utils_giswater.setWidgetText(self.dlg.visitcat_id, (elem[1]))                    
                except TypeError:
                    pass
                except ValueError:
                    pass

        # Relations tab
        # fill feature_type
        sql = ("SELECT id"
               " FROM " + self.schema_name + ".sys_feature_type"
               " WHERE net_category = 1"
               " ORDER BY id")
        rows = self.controller.get_rows(sql, commit=self.autocommit)
        utils_giswater.fillComboBox("feature_type", rows, allow_nulls=False)

        # Event tab
        # Fill ComboBox parameter_type_id
        sql = ("SELECT id"
               " FROM " + self.schema_name + ".om_visit_parameter_type"
               " ORDER BY id")
        parameter_type_ids = self.controller.get_rows(sql, commit=self.autocommit)
        utils_giswater.fillComboBox("parameter_type_id", parameter_type_ids, allow_nulls=False)

        # now get default value to be show in parameter_type_id
        sql = ("SELECT value"
               " FROM " + self.schema_name + ".config_param_user"
               " WHERE parameter = 'om_param_type_vdefault'"
               " AND user = '******'")
        row = self.controller.get_row(sql, commit=self.autocommit)
        if row:
            # if int then look for default row ans set it
            try:
                parameter_type_id = int(row[0])
                combo_value = parameter_type_ids[parameter_type_id]
                combo_index = self.parameter_type_id.findText(combo_value)
                self.parameter_type_id.setCurrentIndex(combo_index)
            except TypeError:
                pass
            except ValueError:
                pass