def update_date_from(self): """ If 'date to' is lower than 'date from' set 'date from' 1 day less than 'date to' """ from_date = self.widget_date_from.date().toString('yyyy-MM-dd') to_date = self.widget_date_to.date().toString('yyyy-MM-dd') if to_date <= from_date: from_date = self.widget_date_to.date().addDays(-1).toString('yyyy-MM-dd') utils_giswater.setCalendarDate(self.dlg_selector_date, self.widget_date_from, datetime.strptime(from_date, '%Y-%m-%d'))
def set_values(self, lot_id): sql = ("SELECT * FROM " + self.schema_name + ".om_visit_lot " " WHERE id ='" + str(lot_id) + "'") lot = self.controller.get_row(sql, log_sql=False) if lot is not None: utils_giswater.setWidgetText(self.dlg_lot, 'txt_idval', lot['idval']) utils_giswater.setCalendarDate(self.dlg_lot, 'startdate', lot['startdate']) utils_giswater.setCalendarDate(self.dlg_lot, 'enddate', lot['enddate']) utils_giswater.set_combo_itemData(self.dlg_lot.cmb_visit_class, lot['visitclass_id'], 0) utils_giswater.set_combo_itemData(self.dlg_lot.cmb_assigned_to, lot['team_id'], 0) utils_giswater.setWidgetText(self.dlg_lot, 'descript', lot['descript']) utils_giswater.set_combo_itemData(self.dlg_lot.cmb_status, lot['status'], 0) self.controller.log_info(str(lot['status'])) if lot['status'] not in (0, None): self.dlg_lot.cmb_status.setEnabled(False) utils_giswater.set_combo_itemData(self.dlg_lot.feature_type, lot['feature_type'], 0) feature_type = utils_giswater.get_item_data(self.dlg_lot, self.dlg_lot.feature_type, 1).lower() table_name = "v_edit_" + str(feature_type) self.set_headers(self.tbl_relation) self.set_table_columns(self.dlg_lot, self.dlg_lot.tbl_relation, table_name)
def select_config(self, tablename): """ Get data from table 'config' and fill widgets according to the name of the columns """ sql = "SELECT * FROM " + self.schema_name + "." + tablename row = self.dao.get_row(sql) if not row: self.controller.show_warning("Any data found in table " + tablename) return None # Iterate over all columns and populate its corresponding widget columns = [] for i in range(0, len(row)): column_name = self.dao.get_column_name(i) widget_type = utils_giswater.getWidgetType(column_name) if widget_type is QCheckBox: utils_giswater.setChecked(column_name, row[column_name]) elif widget_type is QDateEdit: utils_giswater.setCalendarDate(column_name, datetime.strptime(row[column_name], '%Y-%m-%d')) elif widget_type is QTimeEdit: timeparts = str(row[column_name]).split(':') if len(timeparts) < 3: timeparts.append("0") days = int(timeparts[0]) / 24 hours = int(timeparts[0]) % 24 minuts = int(timeparts[1]) seconds = int(timeparts[2]) time = QTime(hours, minuts, seconds) utils_giswater.setTimeEdit(column_name, time) utils_giswater.setText(column_name + "_day", days) else: utils_giswater.setWidgetText(column_name, row[column_name]) columns.append(column_name) return columns
def update_date_to(self): """ If 'date from' is upper than 'date to' set 'date to' 1 day more than 'date from' """ from_date = self.widget_date_from.date().toString('yyyy-MM-dd') to_date = self.widget_date_to.date().toString('yyyy-MM-dd') if from_date >= to_date: to_date = self.widget_date_from.date().addDays(1).toString('yyyy-MM-dd') utils_giswater.setCalendarDate(self.dlg_selector_date, self.widget_date_to, datetime.strptime(to_date, '%Y-%m-%d'))
def fill_fields(self): """ Fill dates and combo cat_work """ sql = ( "SELECT value FROM " + self.controller.schema_name + ".config_param_user " " WHERE parameter = 'enddate_vdefault' and cur_user = current_user" ) row = self.controller.get_row(sql, log_info=False) if row: enddate = QDate.fromString(row[0], 'yyyy-MM-dd') else: enddate = QDate.currentDate() utils_giswater.setCalendarDate(self.dlg_work_end, "enddate", enddate) sql = ("SELECT id FROM " + self.controller.schema_name + ".cat_work") rows = self.controller.get_rows(sql) utils_giswater.fillComboBox(self.dlg_work_end, self.dlg_work_end.workcat_id_end, rows, allow_nulls=False) utils_giswater.set_autocompleter(self.dlg_work_end.workcat_id_end) sql = ( "SELECT value FROM " + self.controller.schema_name + ".config_param_user " " WHERE parameter = 'workcat_vdefault' and cur_user = current_user" ) row = self.controller.get_row(sql, log_info=False) if row: utils_giswater.setWidgetText(self.dlg_work_end, self.dlg_work_end.workcat_id_end, row[0])
def set_calendars(self, dialog, widget, table_name, value, parameter): """ Executes query and set QDateEdit """ sql = ("SELECT " + value + " FROM " + self.schema_name + "." + table_name + "" " WHERE parameter = '" + parameter + "' AND cur_user = current_user") row = self.controller.get_row(sql) if row: date = QDate.fromString(row[0], 'yyyy-MM-dd') else: date = QDate.currentDate() utils_giswater.setCalendarDate(dialog, widget, date)
def fill_workids(self): """ Auto fill descriptions and workid's """ workcat_id = utils_giswater.getWidgetText(self.dlg.workcat_id_end) sql = ("SELECT descript, workid_key1, workid_key2, builtdate" " FROM " + self.controller.schema_name + ".cat_work" " WHERE id = '" + workcat_id + "'") row = self.controller.get_row(sql) if row: utils_giswater.setText(self.dlg.descript, row['descript']) utils_giswater.setText(self.dlg.workid_key1, row['workid_key2']) utils_giswater.setText(self.dlg.workid_key2, row['workid_key2']) utils_giswater.setCalendarDate(self.dlg.builtdate, row['builtdate'], False)
def canvasReleaseEvent(self, event): if event.button() == Qt.RightButton: self.cancel_map_tool() return # Get the click x = event.pos().x() y = event.pos().y() event_point = QPoint(x, y) snapped_feat = None # Snapping (retval, result) = self.snapper.snapToCurrentLayer(event_point, 2) # @UnusedVariable # That's the snapped features if result: # Get the first feature snapped_feat = result[0] point = QgsPoint(snapped_feat.snappedVertex) #@UnusedVariable snapped_feat = next( snapped_feat.layer.getFeatures( QgsFeatureRequest().setFilterFid( snapped_feat.snappedAtGeometry))) if snapped_feat: self.node_id = snapped_feat.attribute('node_id') self.dlg_fusion = ArcFusion() self.load_settings(self.dlg_fusion) # Fill ComboBox workcat_id_end sql = ("SELECT id FROM " + self.schema_name + ".cat_work ORDER BY id") rows = self.controller.get_rows(sql) utils_giswater.fillComboBox(self.dlg_fusion, "workcat_id_end", rows, False) # Set QDateEdit to current date current_date = QDate.currentDate() utils_giswater.setCalendarDate(self.dlg_fusion, "enddate", current_date) # Set signals self.dlg_fusion.btn_accept.clicked.connect(self.exec_fusion) self.dlg_fusion.btn_cancel.clicked.connect( partial(self.close_dialog, self.dlg_fusion)) self.dlg_fusion.setWindowFlags(Qt.WindowStaysOnTopHint) self.dlg_fusion.open()
def selector_date(self): """ Button 84: Selector dates """ self.dlg_selector_date = SelectorDate() self.load_settings(self.dlg_selector_date) self.widget_date_from = self.dlg_selector_date.findChild(QDateEdit, "date_from") self.widget_date_to = self.dlg_selector_date.findChild(QDateEdit, "date_to") self.dlg_selector_date.findChild(QPushButton, "btn_accept").clicked.connect(self.update_dates_into_db) self.dlg_selector_date.btn_close.clicked.connect(partial(self.close_dialog, self.dlg_selector_date)) self.dlg_selector_date.rejected.connect(partial(self.close_dialog, self.dlg_selector_date)) self.widget_date_from.dateChanged.connect(partial(self.update_date_to)) self.widget_date_to.dateChanged.connect(partial(self.update_date_from)) self.get_default_dates() utils_giswater.setCalendarDate(self.dlg_selector_date, self.widget_date_from, self.from_date) utils_giswater.setCalendarDate(self.dlg_selector_date, self.widget_date_to, self.to_date) self.open_dialog(self.dlg_selector_date, dlg_name="selector_date")
def go2epa_options_get_data(self, tablename, dialog): """ Get data from selected table """ sql = "SELECT * FROM " + self.schema_name + "." + tablename row = self.controller.get_row(sql) if not row: message = "Any data found in table" self.controller.show_warning(message, parameter=tablename) return None # Iterate over all columns and populate its corresponding widget columns = [] for i in range(0, len(row)): column_name = self.dao.get_column_name(i) widget = dialog.findChild(QWidget, column_name) widget_type = utils_giswater.getWidgetType(dialog, widget) if row[column_name] is not None: if widget_type is QCheckBox: utils_giswater.setChecked(dialog, widget, row[column_name]) elif widget_type is QComboBox: utils_giswater.set_combo_itemData(widget, row[column_name], 0) elif widget_type is QDateEdit: dateaux = row[column_name].replace('/', '-') date = QDate.fromString(dateaux, 'dd-MM-yyyy') utils_giswater.setCalendarDate(dialog, widget, date) elif widget_type is QTimeEdit: timeparts = str(row[column_name]).split(':') if len(timeparts) < 3: timeparts.append("0") days = int(timeparts[0]) / 24 hours = int(timeparts[0]) % 24 minuts = int(timeparts[1]) seconds = int(timeparts[2]) time = QTime(hours, minuts, seconds) utils_giswater.setTimeEdit(dialog, widget, time) utils_giswater.setText(dialog, column_name + "_day", days) else: utils_giswater.setWidgetText(dialog, widget, str(row[column_name])) columns.append(column_name) return columns
def new_workcat(self): self.dlg_new_workcat = NewWorkcat() self.load_settings(self.dlg_new_workcat) utils_giswater.setCalendarDate(self.dlg_new_workcat, self.dlg_new_workcat.builtdate, None, True) table_object = "cat_work" self.set_completer_widget(table_object, self.dlg_new_workcat.cat_work_id, 'id') # Set signals self.dlg_new_workcat.btn_accept.clicked.connect( partial(self.manage_new_workcat_accept, table_object)) self.dlg_new_workcat.btn_cancel.clicked.connect( partial(self.close_dialog, self.dlg_new_workcat)) # Open dialog self.open_dialog(self.dlg_new_workcat)
def edit_config_edit(self): """ Button 98: Open a dialog showing data from table 'config_param_user' """ # Create the dialog and signals self.dlg = ConfigEdit() utils_giswater.setDialog(self.dlg) self.load_settings(self.dlg) self.dlg.btn_accept.pressed.connect(self.edit_config_edit_accept) self.dlg.btn_cancel.pressed.connect(partial(self.close_dialog, self.dlg)) self.dlg.rejected.connect(partial(self.save_settings, self.dlg)) # Set values from widgets of type QComboBox and dates sql = "SELECT DISTINCT(name) FROM " + self.schema_name + ".value_state ORDER BY name" rows = self.controller.get_rows(sql) utils_giswater.fillComboBox("state_vdefault", rows) sql = "SELECT id FROM " + self.schema_name + ".cat_work ORDER BY id" rows = self.controller.get_rows(sql) utils_giswater.fillComboBox("workcat_vdefault", rows) sql = "SELECT id FROM " + self.schema_name + ".value_verified ORDER BY id" rows = self.controller.get_rows(sql) utils_giswater.fillComboBox("verified_vdefault", rows) sql = 'SELECT value FROM ' + self.schema_name + '.config_param_user' sql += ' WHERE "cur_user" = current_user AND parameter = ' + "'builtdate_vdefault'" row = self.controller.get_row(sql) if row is not None: date_value = datetime.strptime(row[0], '%Y-%m-%d') else: date_value = QDate.currentDate() utils_giswater.setCalendarDate("builtdate_vdefault", date_value) sql = 'SELECT value FROM ' + self.schema_name + '.config_param_user' sql += ' WHERE "cur_user" = current_user AND parameter = ' + "'enddate_vdefault'" row = self.controller.get_row(sql) if row is not None: date_value = datetime.strptime(row[0], '%Y-%m-%d') else: date_value = QDate.currentDate() utils_giswater.setCalendarDate("enddate_vdefault", date_value) sql = "SELECT id FROM " + self.schema_name + ".cat_arc ORDER BY id" rows = self.controller.get_rows(sql) utils_giswater.fillComboBox("arccat_vdefault", rows) sql = "SELECT id FROM " + self.schema_name + ".cat_node ORDER BY id" rows = self.controller.get_rows(sql) utils_giswater.fillComboBox("nodecat_vdefault", rows) sql = "SELECT id FROM " + self.schema_name + ".cat_connec ORDER BY id" rows = self.controller.get_rows(sql) utils_giswater.fillComboBox("connecat_vdefault", rows) sql = "SELECT id FROM " + self.schema_name + ".cat_element ORDER BY id" rows = self.controller.get_rows(sql) utils_giswater.fillComboBox("elementcat_vdefault", rows) sql = "SELECT DISTINCT(name) FROM " + self.schema_name + ".exploitation ORDER BY name" rows = self.controller.get_rows(sql) utils_giswater.fillComboBox("exploitation_vdefault", rows) sql = "SELECT DISTINCT(name) FROM " + self.schema_name + ".ext_municipality ORDER BY name" rows = self.controller.get_rows(sql) utils_giswater.fillComboBox("municipality_vdefault", rows) sql = "SELECT DISTINCT(name) FROM " + self.schema_name + ".om_visit_cat ORDER BY name" rows = self.controller.get_rows(sql) utils_giswater.fillComboBox("visitcat_vdefault", rows) # UD sql = "SELECT id FROM " + self.schema_name + ".node_type ORDER BY id" rows = self.controller.get_rows(sql) utils_giswater.fillComboBox("nodetype_vdefault", rows) sql = "SELECT id FROM " + self.schema_name + ".arc_type ORDER BY id" rows = self.controller.get_rows(sql) utils_giswater.fillComboBox("arctype_vdefault", rows) sql = "SELECT id FROM " + self.schema_name + ".connec_type ORDER BY id" rows = self.controller.get_rows(sql) utils_giswater.fillComboBox("connectype_vdefault", rows) # Set current values sql = "SELECT parameter, value FROM " + self.schema_name + ".config_param_user WHERE cur_user = current_user" rows = self.controller.get_rows(sql) for row in rows: utils_giswater.setWidgetText(str(row[0]), str(row[1])) utils_giswater.setChecked("chk_" + str(row[0]), True) # TODO PARAMETRIZAR ESTO!!!!! # Manage parameters 'state_vdefault', 'exploitation_vdefault', 'municipality_vdefault', 'visitcat_vdefault' sql = "SELECT name FROM " + self.schema_name + ".value_state WHERE id::text = " sql += "(SELECT value FROM " + self.schema_name + ".config_param_user WHERE parameter = 'state_vdefault')::text" row = self.controller.get_row(sql) if row: utils_giswater.setWidgetText("state_vdefault", str(row[0])) sql = "SELECT name FROM " + self.schema_name + ".exploitation WHERE expl_id::text = " sql += "(SELECT value FROM " + self.schema_name + ".config_param_user WHERE parameter = 'exploitation_vdefault')::text" row = self.controller.get_row(sql) if row: utils_giswater.setWidgetText("exploitation_vdefault", str(row[0])) sql = "SELECT name FROM " + self.schema_name + ".ext_municipality WHERE muni_id::text = " sql += "(SELECT value FROM " + self.schema_name + ".config_param_user WHERE parameter = 'municipality_vdefault')::text" row = self.controller.get_row(sql) if row: utils_giswater.setWidgetText("municipality_vdefault", str(row[0])) sql = "SELECT name FROM " + self.schema_name + ".om_visit_cat WHERE id::text = " sql += "(SELECT value FROM " + self.schema_name + ".config_param_user WHERE parameter = 'visitcat_vdefault')::text" row = self.controller.get_row(sql) if row: utils_giswater.setWidgetText("visitcat_vdefault", str(row[0])) if self.project_type == 'ws': self.dlg.tab_config.removeTab(1) self.dlg.tab_config.removeTab(1) elif self.project_type == 'ud': self.dlg.tab_config.removeTab(1) self.dlg.exec_()