Пример #1
0
    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
Пример #2
0
    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()
Пример #3
0
 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_()
Пример #4
0
 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)
Пример #5
0
 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()
Пример #6
0
    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
Пример #7
0
 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_()
Пример #8
0
    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('')
Пример #9
0
    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)