def if_checked(self, txt, q, val=None): """ Sprawdza poprawność wprowadzonych damych. :param val: wartości do zapytania :param q: zapytanie query MySql :param txt: komunikat """ if len(self.txt_imie.text()) < 2 or len( self.txt_nazwisko.text()) < 2 or len( self.txt_login.text()) < 5: msg = QMessageBox() msg.setIcon(QMessageBox.Warning) msg.setText(txt) msg.setWindowTitle("Popraw dane") msg.exec_() return False else: print('Trwa zmiana w bazie danych') if val: print('Połączenie') query_to_db(q, val) else: print('Transakcja') return transaction_to_db(q) # Odświeżanie widoku tabeli self.model.select() self.view.reset() return True
def modify(self): """ Modyfikuje bazę danych """ query = 'SELECT * FROM godziny WHERE uzytkownik_id = %s' val = (self.id_modify, ) wynik = query_to_db(query, val) test = 'Dane zostały błędnie zmodyfikowane.' query = 'UPDATE uzytkownik SET imie = %s, nazwisko = %s, uzytkownik_nazwa = %s, ' \ 'pracownik = %s WHERE uzytkownik_id = %s' val = (self.txt_imie.text(), self.txt_nazwisko.text(), self.txt_login.text(), self.employee_type(), self.id_modify) self.if_checked(test, query, val) if wynik and self.cb_pracownik.checkState(): query = 'UPDATE godziny SET pon_od = %s, pon_do = %s, wt_od = %s, wt_do = %s, sr_od = %s, sr_do = %s, ' \ 'czw_od = %s, czw_do = %s, pt_od = %s, pt_do = %s, sob_od = %s, sob_do = %s WHERE uzytkownik_id = %s;' val = (self.txt_pon_od.text(), self.txt_pon_do.text(), self.txt_wt_od.text(), self.txt_wt_do.text(), self.txt_sr_od.text(), self.txt_sr_do.text(), self.txt_czw_od.text(), self.txt_czw_do.text(), self.txt_pt_od.text(), self.txt_pt_do.text(), self.txt_sob_od.text(), self.txt_sob_do.text(), self.id_modify) query_to_db(query, val) elif self.cb_pracownik.checkState(): query = 'INSERT INTO godziny SET uzytkownik_id = %s, pon_od = %s, pon_do = %s, wt_od = %s, wt_do = %s, ' \ 'sr_od = %s, ' \ 'sr_do = %s, ' \ 'czw_od = %s, czw_do = %s, pt_od = %s, pt_do = %s, sob_od = %s, sob_do = %s; ' val = (self.id_modify, self.txt_pon_od.text(), self.txt_pon_do.text(), self.txt_wt_od.text(), self.txt_wt_do.text(), self.txt_sr_od.text(), self.txt_sr_do.text(), self.txt_czw_od.text(), self.txt_czw_do.text(), self.txt_pt_od.text(), self.txt_pt_do.text(), self.txt_sob_od.text(), self.txt_sob_do.text()) query_to_db(query, val) msg = QMessageBox(self) msg.setIcon(QMessageBox.Information) msg.setText('Zmodyfikowano dane użytkownika') msg.setWindowTitle("Zmodyfikowano użytkownika") msg.exec_() # Odświeżanie widoku tabeli self.model.select() self.view.reset()
def accept(self): """ Metoda odpowiedzialna za zmianę hasła """ query = 'UPDATE uzytkownik SET haslo = sha(%s) WHERE uzytkownik_id = %s AND haslo = sha(%s);' prevent = (self.txt_h_nowe1.text(), self.parent.parent.user_id, self.txt_h_stare.text()) try: if query_to_db(query, prevent) != 0: msg = QMessageBox() msg.setIcon(QMessageBox.Information) msg.setText("Hasło zostało zmienione") msg.setWindowTitle("Zmiana hasła") msg.exec_() self.txt_h_nowe1.setText('') self.txt_h_nowe2.setText('') self.txt_h_stare.setText('') else: msg = QMessageBox() msg.setIcon(QMessageBox.Warning) msg.setText("Podane hasło jest niepoprawne") msg.setWindowTitle("Błędne hasło") msg.exec_() except BaseException as err: msg = QMessageBox() msg.setIcon(QMessageBox.Critical) msg.setText("Wystąpił błąd. Szczegóły poniżej") msg.setDetailedText(err) msg.setWindowTitle("Błąd!") msg.exec_()
def if_checked(self, txt, q, val=None): """ Sprawdza poprawność wprowadzonych damych. :param val: wartości do zapytania :param q: zapytanie query MySql :param txt: komunikat """ if len(self.txt_nazwa.text()) < 3 or len( self.txt_cena.text()) < 1 or len(self.txt_czas.text()) < 2: msg = QMessageBox() msg.setIcon(QMessageBox.Warning) msg.setText(txt) msg.setWindowTitle("Popraw dane") msg.exec_() return False else: print('Trwa zmiana w bazie danych') if val: print('Połączenie') t = query_to_db(q, val) print(t) return t # = polaczenie(q, val) else: print('Transakcja') return transaction_to_db(q)
def change_add_remove(self, quest): """ Metoda ogólna odpowiadająca za dodawanie i usuwanie usług wybranemu pracownikowi """ tekst_p = "Czy chcesz dodać nową usługę do użytkownika {}?".format(self.lbl_imie.text()) if quest: index = (self.view_u.selectionModel().currentIndex()) id_modify = index.sibling(index.row(), 0).data() ret = QMessageBox.question(self, 'Dodawanie usługi', tekst_p, QMessageBox.Yes | QMessageBox.No, QMessageBox.No) if ret == QMessageBox.Yes: query = 'INSERT INTO uzytkownik_usluga (uzytkownik_id, uslugi_id) VALUES (%s, %s); ' val = ( self.id_pracownik, id_modify ) if query_to_db(query, val): msg = QMessageBox() msg.setIcon(QMessageBox.Information) msg.setText('Usługa została dodana do usług oferowanych przez pracownika') msg.setWindowTitle("Dodano usługę") msg.exec_() else: index = (self.view_pu.selectionModel().currentIndex()) id_modify = index.sibling(index.row(), 0).data() ret = QMessageBox.question(self, 'Usuwanie usługi', "Czy na pewno chcesz usunąć daną usługę?", QMessageBox.Yes | QMessageBox.No, QMessageBox.No) if ret == QMessageBox.Yes: query = 'DELETE FROM uzytkownik_usluga WHERE uzytkownik_id = %s AND uslugi_id = %s; ' val = ( self.id_pracownik, id_modify ) if query_to_db(query, val): msg = QMessageBox() msg.setIcon(QMessageBox.Information) msg.setText('Usługa została dodana do usług oferowanych przez pracownika') msg.setWindowTitle("Dodano usługę") msg.exec_() # Odświeżanie widoku tabeli query = QSqlQuery( 'SELECT uslugi.uslugi_id, uslugi.nazwa, uslugi.cena, uslugi.czas FROM uslugi, uzytkownik_usluga WHERE ' 'uslugi.uslugi_id = uzytkownik_usluga.uslugi_id AND uzytkownik_usluga.uzytkownik_id = ' + str( self.id_pracownik) + ';') self.model_pu.setQuery(query) self.view_pu.reset()
def if_checked(self, txt, q, val=None): """ Sprawdza poprawność wprowadzonych damych. :param val: wartości do zapytania :param q: zapytanie query MySql :param txt: komunikat """ if self.id_klient < 0 and self.id_pracownik < 0 and self.id_usluga < 0 and self.data is None: msg = QMessageBox(self) msg.setIcon(QMessageBox.Warning) msg.setText(txt) msg.setWindowTitle("Popraw dane") msg.exec_() return False else: print('Trwa zmiana w bazie danych') if val: print('Połączenie') query_to_db(q, val) else: print('Transakcja') return transaction_to_db(q) return True
def login(self): """ Metoda Zaloguj. Sprawdza, czy dany użytkownik jest w bazie, po czy zwraca jego ID :return: ID użytkownika """ login = self.txtlogin.text() haslo = self.txthaslo.text() query = "SELECT * FROM uzytkownik WHERE uzytkownik_nazwa = '{}' AND haslo = sha('{}');".format( login, haslo) odczytanie = query_to_db(query) if odczytanie: self.accept() return odczytanie[0] else: msg = QMessageBox() msg.setIcon(QMessageBox.Warning) msg.setText("Błędna nazwa użytkownika lub hasło.") msg.setWindowTitle("Błąd logowania") msg.exec_()
def change(self): """ Metoda edytująca zaznaczone wiersze - Wstawia wartości z wierszy w odpowiednie pola """ index = (self.view.selectionModel().currentIndex()) value = index.sibling(index.row(), index.column()).data() self.id_modify = index.sibling(index.row(), 0).data() self.txt_imie.setText(index.sibling(index.row(), 2).data()) self.txt_nazwisko.setText(index.sibling(index.row(), 3).data()) self.txt_login.setText(index.sibling(index.row(), 1).data()) if self.id_modify >= 0 and self.txt_imie.text( ) and self.txt_login.text() and self.txt_nazwisko.text(): self.btn_modyfikuj.setEnabled(True) self.btn_usun.setEnabled(True) else: self.btn_usun.setDisabled(True) self.btn_modyfikuj.setDisabled(True) if index.sibling(index.row(), 4).data() == 1: if not self.cb_pracownik.checkState(): self.cb_pracownik.toggle() else: if self.cb_pracownik.checkState(): for value in self.pola: value.setText('') self.cb_pracownik.toggle() if self.cb_pracownik.checkState(): query = 'SELECT * FROM godziny WHERE uzytkownik_id = %s' val = (self.id_modify, ) wynik = query_to_db(query, val) for i, value in enumerate(self.pola, 2): if wynik: value.setText(str(wynik[i])) else: value.setText('')
def clicked_table(self, view): """ Metoda edytująca zaznaczone wiersze - Wstawia wartości z wierszy w odpowiednie pola """ index = (view.selectionModel().currentIndex()) if view.objectName() == 'Klienci': self.id_klient = index.sibling(index.row(), 0).data() self.lbl_klient_.setText('<b>' + index.sibling(index.row(), 1).data() + ' ' + index.sibling(index.row(), 2).data() + '</b>') elif view.objectName() == 'Usługi': self.id_usluga = index.sibling(index.row(), 0).data() self.lbl_usluga_.setText('<b>' + index.sibling(index.row(), 1).data() + '</b>') self.data_do = index.sibling(index.row(), 3).data() elif view.objectName() == 'Rezerwacje': self.id_rezerwacje = index.sibling(index.row(), 0).data() if self.id_rezerwacje > 0: self.btn_mod.setEnabled(True) self.btn_usun.setEnabled(True) elif view.objectName() == 'Pracownicy': self.id_pracownik = index.sibling(index.row(), 0).data() self.czas = [] for i in reversed(range(self.gb_layout.count())): self.gb_layout.itemAt(i).widget().setParent(None) czas = datetime.datetime(2000, 1, 1, 8, 0) dzien = { 1: ('pon_od', 'pon_do'), 2: ('wt_od', 'wt_do'), 3: ('sr_od', 'sr_do'), 4: ('czw_od', 'czw_do'), 5: ('pt_od', 'pt_do'), 6: ('sob_od', 'sob_do'), 7: ('', '') } query = 'SELECT date_format({}, "%H") AS g_start, date_format({}, "%H") AS g_stop FROM godziny WHERE ' \ 'uzytkownik_id = {};'.format(dzien[self.dzien_tyg][0], dzien[self.dzien_tyg][1], self.id_pracownik) wynik = query_to_db(query) if wynik: godzina_stop = (int(wynik[1]) - int(wynik[0])) * 2 godzina = int(wynik[0]) for btn in self.btn_godz: btn.setEnabled(True) else: godzina_stop = 0 godzina = 1 for btn in self.btn_godz: btn.setDisabled(True) minuta = 0 czas = datetime.time(godzina, minuta) for i in range(godzina_stop): self.btn_godz[i].setText(czas.strftime("%H:%M")) self.czas.append(czas) self.btn_godz[i].setObjectName(str(i)) self.gb_layout.addWidget(self.btn_godz[i]) if i % 2 != 0: godzina += 1 minuta = 0 else: minuta = 30 czas = datetime.time(godzina, minuta) QMetaObject.connectSlotsByName(self) # Czyszczenie, odświeżanie self.refresh() query = QSqlQuery( 'SELECT uslugi.uslugi_id, uslugi.nazwa, uslugi.cena, date_format(uslugi.czas, "%H:%i") AS czas FROM uslugi NATURAL JOIN uzytkownik_usluga WHERE uzytkownik_usluga.uzytkownik_id = ' + str(self.id_pracownik) + ';') self.model_u.setQuery(query) self.lbl_klient_.setText('') self.lbl_usluga_.setText('') if self.id_klient > 0 and self.id_pracownik > 0 and self.id_usluga > 0: self.btn_dodaj.setEnabled(True)