Exemplo n.º 1
0
    def loginAction(self):
        login = self.lineEdit.text()
        pass_ = self.lineEdit_2.text()

        if login is '' or pass_ is '':
            return app_error("Uzupełnij wszystkie dane.")

        try:
            resp = requests.post(self.Config.get_server() + '/api/logaction',
                                 data={
                                     'login': self.Sec.encrypt_(login),
                                     'pass_': self.Sec.encrypt_(pass_),
                                     'publicKey': self.Sec.get_public()
                                 })
        except requests.ConnectionError as e:
            return app_error("Nie można nawiązać połączenia z serwerem.", e)

        if resp.status_code == 200:
            data = json.loads(resp.text)
            try:
                open('.cache', "wb").write(data['auth'].encode())
            except PermissionError:
                os.remove('.cache')
                open('.cache', "wb").write(data['auth'].encode())
            ctypes.windll.kernel32.SetFileAttributesW('.cache', 0x02)
            self.dialog.close()
            return self.st_ap(self.Sec.decrypt_(data['master']),
                              self.Sec.decrypt_(data['data']))
        elif resp.status_code == 406:
            return app_error("Dane użyte do logowania są niepoprawne.")
        else:
            return app_error(
                "Wystąpił nieznany błąd podczas przetwarzania danych.")
Exemplo n.º 2
0
    def doEdit(self):
        title = self.lineEdit_2.text()
        autor = self.lineEdit_3.text()
        count = self.lineEdit_4.text()

        if title is '' or autor is '' or count is '':
            return app_error("Uzupełnij wszystkie dane.")

        try:

            if self.cover is not None:
                files = {'cover': self.cover}
            else:
                files = {}

            resp = requests.post(self.Config.get_server() + '/api/bookedit',
                                 data={
                                     'key': open('.cache', 'r').read(),
                                     'arg1': self.Sec.encrypt_(title),
                                     'arg2': self.Sec.encrypt_(autor),
                                     'arg3': self.Sec.encrypt_(count),
                                     'book_id': self.Sec.encrypt_(self.na)
                                 },
                                 files=files)
            check_con(resp)
        except Exception as e:
            return app_error("Wystąpił błąd przy edytowaniu.", e)

        self.cover = None

        if 200 == resp.status_code:
            self.formLayoutWidget_2.hide()
            return self.editInfo(title, autor, count)
        else:
            return app_error("Wystąpił błąd przy edytowaniu danych.")
Exemplo n.º 3
0
    def doEdit(self):
        name = self.lineEdit.text()
        surname = self.lineEdit_2.text()
        email = self.lineEdit_3.text()
        master = self.checkBox.isChecked()

        if name is '' or surname is '' or email is '':
            return app_error("Uzupełnij wszystkie dane.")

        try:
            resp = requests.post(self.Config.get_server()+'/api/librariansedit',
                                 data={'key': open('.cache', 'r').read(),
                                       'arg1': self.Sec.encrypt_(name),
                                       'arg2': self.Sec.encrypt_(surname),
                                       'login': self.Sec.encrypt_(email),
                                       'arg3': self.Sec.encrypt_(str(master)),
                                       'name_id': self.Sec.encrypt_(self.na)})
            check_con(resp)
        except Exception as e:
            return app_error("Wystąpił błąd przy edytowaniu.", e)

        if 200 == resp.status_code:
            self.widget.hide()
            self.get_list()
            self.na = None
            return self.editInfo(name, surname, email)
        else:
            return app_error("Wystąpił błąd przy edytowaniu danych.")
Exemplo n.º 4
0
    def doEdit(self):
        name = self.lineEdit_2.text()
        surname = self.lineEdit_3.text()
        address = self.lineEdit_4.text()
        address_2 = self.lineEdit_5.text()

        if name is '' or surname is '' or address is '' or address_2 is '':
            return app_error("Uzupełnij wszystkie dane.")

        name = name + ' ' + surname
        address = address + ', ' + address_2

        try:
            resp = requests.post(self.Config.get_server() + '/api/useredit',
                                 data={
                                     'key': open('.cache', 'r').read(),
                                     'arg1': self.Sec.encrypt_(name),
                                     'arg2': self.Sec.encrypt_(address),
                                     'name_id': self.Sec.encrypt_(self.na)
                                 })
            check_con(resp)
        except Exception as e:
            return app_error("Wystąpił błąd przy edytowaniu.", e)

        if 200 == resp.status_code:
            self.formLayoutWidget_2.hide()
            return self.editInfo(name, address)
        else:
            return app_error("Wystąpił błąd przy edytowaniu danych.")
Exemplo n.º 5
0
    def get_list(self):
        self.clear_row()

        try:
            resp = requests.post(self.Config.get_server()+'/api/getlibrarians',
                                 data={'key': open('.cache', 'r').read()})
            if check_con(resp):
                return False
        except Exception as e:
            return app_error("Wystąpił błąd podczas pobierania informacji.", e)

        if resp.text:
            self.data = self.Sec.encode_data(json.loads(resp.text))
        button = []
        i = 0
        for key, value in self.data.items():
            button.append([])
            button[i].append(QtWidgets.QPushButton("Edytuj"))
            button[i].append(QtWidgets.QPushButton("Usuń"))
            button[i][0].clicked.connect(partial(self.edRead, na=value[0]))
            button[i][1].clicked.connect(partial(self.delLibr, na=value[0]))

            self.itemModel.setItem(i, 0, QtGui.QStandardItem(value[1]+' '+value[2]))
            self.itemModel.setItem(i, 1, QtGui.QStandardItem(value[3]))
            if value[5] == 'True':
                self.itemModel.setItem(i, 2, QtGui.QStandardItem("Tak"))
            else:
                self.itemModel.setItem(i, 2, QtGui.QStandardItem("Nie"))
            self.treeView.setIndexWidget(self.itemModel.index(i, 3), button[i][0])
            self.treeView.setIndexWidget(self.itemModel.index(i, 4), button[i][1])
            i += 1
Exemplo n.º 6
0
    def get_list(self):
        self.clear_row()

        try:
            resp = requests.post(self.Config.get_server()+'/api/getborrow',
                                 data={'key': open('.cache', 'r').read()})
            if check_con(resp):
                return False
        except Exception as e:
            return app_error("Wystąpił błąd podczas pobierania informacji.", e)

        if resp.status_code == 204:
            self.label.setStyleSheet("color: green;")
            self.label.setText("Brak wypożyczeń.")
            return False

        if resp.text:
            data = self.Sec.encode_data(json.loads(resp.text))
            self.data = [y for x, y in data.items() if y[3] == 'False']
        button = []
        i = 0
        for value in self.data:
            button.append(QtWidgets.QPushButton("Zwróć"))
            button[i].clicked.connect(partial(self.retBook, na=value[4]))
            self.itemModel.setItem(i, 0, QtGui.QStandardItem(value[1]))
            self.itemModel.setItem(i, 1, QtGui.QStandardItem(value[2]))
            self.itemModel.setItem(i, 2, QtGui.QStandardItem(value[0]))
            self.treeView.setIndexWidget(self.itemModel.index(i, 3), button[i])
            i += 1
Exemplo n.º 7
0
    def get_list(self):
        self.clear_row()

        try:
            resp = requests.post(self.Config.get_server() + '/api/getreader',
                                 data={'key': open('.cache', 'r').read()})
            if check_con(resp):
                return False
        except Exception as e:
            return app_error("Wystąpił błąd podczas pobierania informacji.", e)

        if resp.text:
            self.data = self.Sec.encode_data(json.loads(resp.text))
        i = 0
        self.button = []
        for key, value in self.data.items():
            self.button.append(QtWidgets.QPushButton("Edytuj"))
            self.button[i].clicked.connect(partial(self.edRead, na=value[0]))
            self.itemModel.setItem(
                int(key) - 1, 0, QtGui.QStandardItem(value[1]))
            self.itemModel.setItem(
                int(key) - 1, 1, QtGui.QStandardItem(value[2]))
            self.treeView.setIndexWidget(self.itemModel.index(int(key) - 1, 2),
                                         self.button[i])
            i += 1
Exemplo n.º 8
0
    def get_list(self):
        self.clear_row()

        try:
            resp = requests.post(self.Config.get_server() + '/api/getcomm',
                                 data={'key': open('.cache', 'r').read()})
            if check_con(resp):
                return False
        except Exception as e:
            return app_error("Wystąpił błąd przy pobieraniu danych.", e)

        if resp.status_code == 204:
            self.label_2.setStyleSheet("color: green;")
            self.label_2.setText("Brak komentarzy.")
            return False

        data = self.Sec.encode_data(json.loads(resp.text))
        button = []
        for key, value in data.items():
            button.append([])
            button[int(key)].append(QtWidgets.QPushButton("Akceptuj"))
            button[int(key)].append(QtWidgets.QPushButton("Odrzuć"))
            button[int(key)][0].clicked.connect(
                partial(self.acceptCom, na=value[0], ac="True"))
            button[int(key)][1].clicked.connect(
                partial(self.acceptCom, na=value[0], ac="False"))

            self.itemModel.setItem(int(key), 0, QtGui.QStandardItem(value[2]))
            self.itemModel.setItem(int(key), 1, QtGui.QStandardItem(value[1]))
            self.treeView.setIndexWidget(self.itemModel.index(int(key), 2),
                                         button[int(key)][0])
            self.treeView.setIndexWidget(self.itemModel.index(int(key), 3),
                                         button[int(key)][1])
Exemplo n.º 9
0
    def get_key(self, stop=False):
        try:
            resp = requests.get(self.Config.get_server() + '/api/key')
        except requests.ConnectionError as e:
            app_error("Nie można nawiązać połączenia z serwerem.", e)
            return exit()

        if resp.status_code == 200:
            data = json.loads(resp.text)
            self.Sec.load_other_key(data['publicKey'])
        else:
            if stop:
                return exit()
            else:
                app_error("Wystąpił problem z wczytaniem kluczy")
            return self.get_key(stop=True)
Exemplo n.º 10
0
    def delLibr(self, na):
        sure = QtWidgets.QMessageBox.question(self.Form, "Usuwanie użytkownika",
                                              "Czy na pewno chcesz usunąć tego użytkownika?",
                                              QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No)
        if sure == QtWidgets.QMessageBox.No:
            return False

        try:
            resp = requests.post(self.Config.get_server()+'/api/dellibrarian',
                                 data={'key': open('.cache', 'r').read(),
                                       'arg1': self.Sec.encrypt_(na)})
            check_con(resp)
        except Exception as e:
            return app_error("Wystąpił błąd przy usuwaniu.", e)

        if resp.status_code == 200:
            self.get_list()
        else:
            return app_error("Wystąpił błąd przy usuwaniu.")
Exemplo n.º 11
0
    def addLib(self):
        name = self.lineEdit.text()
        surname = self.lineEdit_2.text()
        email = self.lineEdit_3.text()
        master = self.checkBox.isChecked()

        if name == '' or surname == '' or email == '':
            return app_error("Uzupełnij wszystkie dane")

        if re.match("\w+@\w+(?:\.\w+)", email) == None:
            return app_error("E-mial nie jest poprawny.")

        try:
            resp = requests.post(self.Config.get_server() +
                                 '/api/addlibrarian',
                                 data={
                                     'key':
                                     open('.cache', 'r').read(),
                                     'arg1':
                                     self.Sec.encrypt_(name + "/" + surname),
                                     'arg2':
                                     self.Sec.encrypt_(email),
                                     'arg3':
                                     self.Sec.encrypt_(str(master))
                                 })
            check_con(resp)
        except Exception as e:
            return app_error("Wystąpił błąd przy dodawaniu.", e)

        if 507 == resp.status_code:
            self.clearLine()
            self.label_5.setStyleSheet("color: orange;")
            return self.label_5.setText("Bibliotekarz istnieje w bazie.")
        elif 201 == resp.status_code:
            self.clearLine()
            self.label_5.setStyleSheet("color: green;")
            self.userInfo(name, surname,
                          self.Sec.decrypt_(json.loads(resp.text)['data']))
            return self.label_5.setText("Biblitekarz został dodany.")
        else:
            self.label_5.setStyleSheet("color: red;")
            return self.label_5.setText("Nieznany błąd.")
Exemplo n.º 12
0
    def add_borrow(self):
        reader = self.lineEdit.text()
        book = self.lineEdit_2.text()

        if reader is '' or book is '':
            return app_error("Uzupełnij wszystkie dane")

        date_1 = self.dateEdit.date().toPyDate()
        date_2 = self.dateEdit_2.date().toPyDate()
        if date_1 > date_2:
            return app_error(
                "Dats wypożyczenia nie może być większa niż data zwrotu")

        try:
            resp = requests.post(
                self.Config.get_server() + '/api/borrow',
                data={
                    'key': open('.cache', 'r').read(),
                    'arg1': self.Sec.encrypt_(date_2.strftime("%d-%m-%y")),
                    'arg2': self.Sec.encrypt_(date_1.strftime("%d-%m-%y")),
                    'name_id': self.Sec.encrypt_(self.list_1[reader]),
                    'book_id': self.Sec.encrypt_(self.list_2[book])
                })
            check_con(resp)
        except Exception as e:
            return app_error("Wystąpił błąd przy dodawaniu", e)

        if 507 == resp.status_code:
            self.lineEdit.clear()
            self.lineEdit_2.clear()
            self.label_5.setStyleSheet("color: orange;")
            return self.label_5.setText(
                "Ten czytelnik wypożyczył już tą książkę.")
        elif 201 == resp.status_code:
            self.lineEdit.clear()
            self.lineEdit_2.clear()
            self.label_5.setStyleSheet("color: green;")
            return self.label_5.setText("Książka została wypożyczona.")
        else:
            self.label_5.setStyleSheet("color: red;")
            return self.label_5.setText("Nieznany błąd.")
Exemplo n.º 13
0
    def add_book(self):
        author = self.lineEdit.text()
        title = self.lineEdit_2.text()
        count = self.lineEdit_3.text()

        if author is '' or title is '' or count is '':
            return app_error("Uzupełnij wszystkie dane.")

        try:
            if self.cover is not None:
                files = {'cover': self.cover}
            else:
                files = {}

            resp = requests.post(self.Config.get_server()+'/api/addbook',
                                 data={'arg1': self.Sec.encrypt_(title),
                                       'arg2': self.Sec.encrypt_(author),
                                       'arg3': self.Sec.encrypt_(count),
                                       'key': open('.cache', 'r').read()},
                                 files=files)
            check_con(resp)
        except Exception as e:
            return app_error("Wystąpił błąd przy dodawaniu.", e)

        self.cover = None

        if 507 == resp.status_code:
            self.clear_line()
            self.label_3.setStyleSheet("color: green;")
            return self.label_3.setText("Dodano "+str(count)+" książek.")
        elif 201 == resp.status_code:
            self.clear_line()
            self.label_3.setStyleSheet("color: green;")
            return self.label_3.setText("Książka dodana do bazy.")
        else:
            self.label_3.setStyleSheet("color: red;")
            return self.label_3.setText("Nieznany błąd.")
Exemplo n.º 14
0
    def get_list_reader(self):
        try:
            resp = requests.post(self.Config.get_server() + '/api/getreader',
                                 data={'key': open('.cache', 'r').read()})
            check_con(resp)
        except Exception as e:
            return app_error("Wystapił problem przy pobieraniu danych.", e)

        if resp.text:
            data = self.Sec.encode_data(json.loads(resp.text))
        self.list_1 = {}
        list = []
        for key, value in data.items():
            list.append(value[1] + ', ' + value[2])
            self.list_1.update({value[1] + ', ' + value[2]: value[0]})
        self.model.setStringList(list)
Exemplo n.º 15
0
    def userInfo(self):

        try:
            resp = requests.post(self.Config.get_server() +
                                 '/api/librariansinfo',
                                 data={'key': open('.cache', 'r').read()})
            if check_con(resp):
                return False
        except Exception as e:
            return app_error("Wystąpił błąd podczas pobierania informacji.", e)

        data = self.Sec.encode_data(json.loads(resp.text))['data']

        master = ""
        if data[3] == 'True':
            master = "Jesteś zarządcą\n"

        text = "Informacje o twoim koncie:\n\nImię: " + data[
            0] + "\nNazwisko: " + data[1] + "\nE-mial: " + data[
                2] + "\n" + master
        return self.infoBox(text, "Informacje o koncie - Sort Books")
Exemplo n.º 16
0
    def get_list(self):
        self.clear_row()

        try:
            resp = requests.post(self.Config.get_server() + '/api/getborrow',
                                 data={'key': open('.cache', 'r').read()})
            if check_con(resp):
                return False
        except Exception as e:
            return app_error("Wystąpił błąd przy pobieraniu danych.", e)

        if resp.text:
            self.data = self.Sec.encode_data(json.loads(resp.text))

        for key, value in self.data.items():
            self.itemModel.setItem(int(key), 0, QtGui.QStandardItem(value[1]))
            self.itemModel.setItem(int(key), 1, QtGui.QStandardItem(value[2]))
            self.itemModel.setItem(int(key), 2, QtGui.QStandardItem(value[0]))
            if value[3] == 'True':
                self.itemModel.setItem(int(key), 3, QtGui.QStandardItem("Tak"))
            else:
                self.itemModel.setItem(int(key), 3, QtGui.QStandardItem("Nie"))
Exemplo n.º 17
0
    def doEdit(self):
        old_pass = self.lineEdit_3.text()
        new_pass = self.lineEdit_2.text()
        new_pass_2 = self.lineEdit.text()

        if old_pass == '' or new_pass == '' or new_pass_2 == '':
            return app_error("Uzupełnij wszystkie dane.")

        if old_pass == new_pass:
            return app_error("Nowe hasło nie może być takie same jak stare.")

        if not self.validPass(new_pass):
            return app_error("Hasło jest za słabe.\nMusi mieć co najmniej 6 znaków oraz składać się z cyfr i liter.")

        if not new_pass == new_pass_2:
            app_error("Nowe hasła nie są identyczne!")
            return self.clearLine()

        try:
            resp = requests.post(self.Config.get_server()+'/api/changepass',
                                 data={'key': open('.cache', 'r').read(),
                                       'arg1': self.Sec.encrypt_(old_pass),
                                       'pass_': self.Sec.encrypt_(new_pass)})
            if check_con(resp):
                return False
        except Exception as e:
            return app_error("Wystąpił błąd podczas pobierania informacji.", e)

        if resp.status_code == 200:
            self.editInfo()
            return self.delEdit()
        elif resp.status_code == 409:
            self.clearLine()
            return app_error("Stare hasło nie jest poprawne.")
        else:
            return app_error("Wystąpił błąd przy zmianie hasła.")