def insert_row(self, qtable, selected_id): """ Reload @widget with contents of @tablename applying selected @expr_filter """ model = qtable.model() record = model.record() campaign_id = wm.get_item_data(self.dlg_unit, self.dlg_unit.cmb_campaign, 0) work_id = wm.get_item_data(self.dlg_unit, self.dlg_unit.cmb_work, 0) times = wm.getWidgetText(self.dlg_unit, self.dlg_unit.txt_times, return_string_null=False) if times is None or times < 1 or times == "": times = "1" record.setValue("node_id", selected_id) record.setValue("campaign_id", campaign_id) record.setValue("work_id", work_id) record.setValue("frequency", str(times)) model.insertRecord(-1, record)
def update_table(self, dialog, qtable, table_name, combo1, combo2): campaign_id = wm.get_item_data(dialog, combo1, 0) work_id = wm.get_item_data(dialog, combo2, 0) expr_filter = "campaign_id =" + str(campaign_id) if work_id is None or work_id == "": self.dlg_unit.btn_insert.setEnabled(False) self.dlg_unit.btn_snapping.setEnabled(False) else: self.dlg_unit.btn_insert.setEnabled(True) self.dlg_unit.btn_snapping.setEnabled(True) expr_filter += " AND work_id =" + str(work_id) self.fill_table_unit(qtable, table_name, expr_filter=expr_filter) self.get_id_list()
def event_insert(self): """Add and event basing on form associated to the selected parameter_id.""" # check a parameter_id is selected (can be that no value is available) parameter_id = widget_manager.get_item_data(self.dlg_add_visit, self.dlg_add_visit.parameter_id, 0) if not parameter_id: message = "You need to select a valid parameter id" self.controller.show_info_box(message) return # get form associated sql = ("SELECT form_type FROM " + self.schema_name + ".om_visit_parameter" " WHERE id = '" + str(parameter_id) + "'") row = self.controller.get_row(sql, commit=False) form_type = str(row[0]) if form_type == 'event_standard': self.dlg_event = EventStandard() self.load_settings(self.dlg_event) else: message = "Unrecognised form type" self.controller.show_info_box(message, parameter=form_type) return # because of multiple view disable add picture and view gallery self.dlg_event.btn_add_picture.setEnabled(False) self.dlg_event.btn_view_gallery.setEnabled(False) # set fixed values self.dlg_event.parameter_id.setText(parameter_id) self.dlg_event.setWindowFlags(Qt.WindowStaysOnTopHint) ret = self.dlg_event.exec_() # check return if not ret: # clicked cancel return # create an empty Event event = OmVisitEvent(self.controller) event.id = event.max_pk() + 1 event.parameter_id = parameter_id event.visit_id = int(self.visit_id.text()) for field_name in event.field_names(): if not hasattr(self.dlg_event, field_name): continue value = getattr(self.dlg_event, field_name).text() if value: setattr(event, field_name, value) # save new event event.upsert() # update Table self.tbl_event.model().select() self.manage_events_changed()
def get_year(self, dialog): update = False self.selected_camp = None if dialog.txt_campaign.text() != '': sql = ("SELECT id FROM " + self.schema_name + ".cat_campaign " " WHERE name = '" + str(dialog.txt_campaign.text()) + "'") row = self.controller.get_row(sql) if row is None: message = "No hi ha preus per aquest any" self.controller.show_warning(message) return None self.campaign_id = row[0] if widget_manager.isChecked( dialog, dialog.chk_campaign) and widget_manager.get_item_data( dialog, dialog.cbx_campaigns, 0) != -1: self.selected_camp = widget_manager.get_item_data( dialog, dialog.cbx_campaigns, 0) sql = ("SELECT DISTINCT(campaign_id) FROM " + self.schema_name + ".planning" " WHERE campaign_id ='" + str(self.selected_camp) + "'") row = self.controller.get_row(sql) if row: update = True else: self.selected_camp = self.campaign_id self.campaign_name = dialog.txt_campaign.text() self.close_dialog(dialog) self.tree_selector(update) else: message = "Any recuperat es obligatori" self.controller.show_warning(message) self.controller.log_info("get_year_end")
def get_planned_camp(self, dialog): if str(widget_manager.getWidgetText(dialog, dialog.txt_plan_code)) == 'null': message = "El camp text a no pot estar vuit" self.controller.show_warning(message) return self.plan_code = widget_manager.getWidgetText(dialog, dialog.txt_plan_code) self.planned_camp_id = widget_manager.get_item_data( dialog, dialog.cbx_years, 0) self.planned_camp_name = widget_manager.get_item_data( dialog, dialog.cbx_years, 1) if self.planned_camp_id == -1: message = "No hi ha cap any planificat" self.controller.show_warning(message) return self.controller.log_info(str(self.planned_camp_id)) self.close_dialog(dialog) self.month_selector()
def manage_leave_visit_tab(self): """ manage all the action when leaving the VisitTab A) Manage sync between GUI values and Visit record in DB.""" # A) fill Visit basing on GUI values self.current_visit.id = int(self.visit_id.text()) self.current_visit.startdate = self.dlg_add_visit.startdate.date().toString(Qt.ISODate) self.current_visit.enddate = self.dlg_add_visit.enddate.date().toString(Qt.ISODate) self.current_visit.user_name = self.user_name.text() self.current_visit.ext_code = self.ext_code.text() self.current_visit.visitcat_id = widget_manager.get_item_data(self.dlg_add_visit, self.dlg_add_visit.visitcat_id, 0) self.current_visit.descript = self.dlg_add_visit.descript.text() if self.expl_id: self.current_visit.expl_id = self.expl_id # update or insert but without closing the transaction: autocommit=False self.current_visit.upsert(commit=self.autocommit)
def save_default_values(self): cur_user = self.controller.get_current_user() campaign = wm.get_item_data(self.dlg_unit, self.dlg_unit.cmb_campaign, 0) work = wm.get_item_data(self.dlg_unit, self.dlg_unit.cmb_work, 0) self.controller.plugin_settings_set_value("PlanningUnit_cmb_campaign_" + cur_user, campaign) self.controller.plugin_settings_set_value("PlanningUnit_cmb_work_" + cur_user, work)
def manage_new_price_catalog(self): table_name = "cat_price" new_camp = self.dlg_new_campaign.txt_campaign.text() if new_camp is None or new_camp == '': msg = "Has de possar l'any corresponent" self.controller.show_warning(msg) return sql = ("SELECT id FROM " + self.schema_name + ".cat_campaign " " WHERE name = '" + str(new_camp) + "'") row = self.controller.get_row(sql) # If campaign not exist, create new one if row is None: start_date = widget_manager.getCalendarDate( self.dlg_new_campaign, self.dlg_new_campaign.start_date) end_date = widget_manager.getCalendarDate( self.dlg_new_campaign, self.dlg_new_campaign.end_date) sql = ("INSERT INTO " + self.schema_name + ".cat_campaign(name, start_date, end_date) " " VALUES('" + str(new_camp) + "', '" + str(start_date) + "', '" + str(end_date) + "');") self.controller.execute_sql(sql) sql = ("SELECT currval('" + self.schema_name + ".cat_campaign_id_seq');") row = self.controller.get_row(sql) # Update contents of variable 'self.cmb_poda_type' self.update_cmb_poda_type() # Get id_campaign id_new_camp = str(row[0]) # Check if want copy any campaign or do new price list copy_years = self.dlg_new_campaign.chk_campaign.isChecked() if copy_years: id_old_camp = widget_manager.get_item_data( self.dlg_new_campaign, self.dlg_new_campaign.cbx_years) # If checkbox is checked but don't have any campaign selected do return. if id_old_camp == -1: msg = "No tens cap any seleccionat, desmarca l'opcio de copiar preus" self.controller.show_warning(msg) return else: id_old_camp = 0 sql = ("SELECT DISTINCT(campaign_id) FROM " + self.schema_name + "." + str(table_name) + " " " WHERE campaign_id = '" + str(id_new_camp) + "'") row = self.controller.get_row(sql) if not row or row is None: sql = ("SELECT " + self.schema_name + ".create_price('" + str(id_new_camp) + "','" + str(id_old_camp) + "')") self.controller.execute_sql(sql) else: message = ( "Estas a punt de sobreescriure els preus de la campanya " + new_camp + " ") answer = self.controller.ask_question(message, "Warning") if not answer: return else: sql = ("SELECT " + self.schema_name + ".create_price('" + str(id_new_camp) + "','" + str(id_old_camp) + "')") self.controller.execute_sql(sql) # Close perevious dialog self.close_dialog(self.dlg_new_campaign) # Set dialog and signals dlg_prices_management = PriceManagement() self.load_settings(dlg_prices_management) dlg_prices_management.btn_close.clicked.connect( partial(self.close_dialog, dlg_prices_management)) dlg_prices_management.rejected.connect( partial(self.close_dialog, dlg_prices_management)) # Populate QTableView table_view = 'v_edit_price' self.fill_table_prices(dlg_prices_management.tbl_price_list, table_view, id_new_camp, set_edit_triggers=QTableView.DoubleClicked) self.set_table_columns(dlg_prices_management, dlg_prices_management.tbl_price_list, table_view, 'basic_cat_price') dlg_prices_management.exec_()
def rows_selector(self, dialog, id_table_left, tableright, id_table_right, tableleft, table_view): """ Copy the selected lines in the qtable_all_rows and in the table """ left_selected_list = dialog.all_rows.selectionModel().selectedRows() if len(left_selected_list) == 0: message = "Cap registre seleccionat" self.controller.show_warning(message) return # Get all selected ids field_list = [] for i in range(0, len(left_selected_list)): row = left_selected_list[i].row() id_ = dialog.all_rows.model().record(row).value(id_table_left) field_list.append(id_) # Select all rows and get all id self.select_all_rows(dialog.selected_rows, id_table_right) if widget_manager.isChecked(dialog, dialog.chk_current): current_poda_type = widget_manager.get_item_data( dialog, dialog.cmb_poda_type, 0) current_poda_name = widget_manager.get_item_data( dialog, dialog.cmb_poda_type, 1) if current_poda_type is None: message = "No heu seleccionat cap poda" self.controller.show_warning(message) return if widget_manager.isChecked(dialog, dialog.chk_permanent): for i in range(0, len(left_selected_list)): row = left_selected_list[i].row() sql = ( "UPDATE " + self.schema_name + ".cat_mu " " SET work_id = '" + str(current_poda_type) + "'" " WHERE id = '" + str(dialog.all_rows.model().record(row).value('mu_id')) + "'") self.controller.execute_sql(sql) for i in range(0, len(left_selected_list)): row = left_selected_list[i].row() values = "" function_values = "" if dialog.all_rows.model().record(row).value('mu_id') is not None: values += "'" + str( dialog.all_rows.model().record(row).value('mu_id')) + "', " function_values += "'" + str( dialog.all_rows.model().record(row).value('mu_id')) + "', " else: values += 'null, ' if dialog.all_rows.model().record(row).value( 'work_id') is not None: if widget_manager.isChecked(dialog, dialog.chk_current): values += "'" + str(current_poda_type) + "', " function_values += "'" + str(current_poda_type) + "', " else: values += "'" + str(dialog.all_rows.model().record( row).value('work_id')) + "', " function_values += "'" + str(dialog.all_rows.model( ).record(row).value('work_id')) + "', " else: values += 'null, ' values += "'" + str(self.campaign_id) + "', " values = values[:len(values) - 2] function_values += "'" + str(self.campaign_id) + "', " function_values = function_values[:len(function_values) - 2] # Check if mul_id and year_ already exists in planning sql = ("SELECT " + id_table_right + "" " FROM " + self.schema_name + "." + tableright + "" " WHERE " + id_table_right + " = '" + str(field_list[i]) + "'" " AND campaign_id = '" + str(self.campaign_id) + "';") row = self.controller.get_row(sql, log_sql=True) if row is not None: # if exist - show warning message = "Aquest registre ja esta seleccionat" self.controller.show_info_box(message, "Info", parameter=str(field_list[i])) else: # Put a new row in QTableView # dialog.selected_rows.model().insertRow(dialog.selected_rows.verticalHeader().count()) sql = ("INSERT INTO " + self.schema_name + "." + tableright + "" " (mu_id, work_id, campaign_id) " " VALUES (" + values + ")") self.controller.execute_sql(sql) sql = ("SELECT " + self.schema_name + ".set_plan_price(" + function_values + ")") self.controller.execute_sql(sql) # Refresh tables self.fill_table(dialog, table_view, set_edit_triggers=QTableView.NoEditTriggers) self.fill_main_table(dialog, tableleft)