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.")
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.")
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.")
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.")
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
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
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
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])
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)
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.")
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.")
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.")
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.")
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)
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")
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"))
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.")