def __init__(self, parent): QtGui.QDialog.__init__(self, parent) global lang if lang == 'En_en': addr = 'res/ui/open_base/en_dbs_opn.ui' elif lang == 'Ru_ru': addr = 'res/ui/open_base/ru_dbs_opn.ui' uiClass, qtBaseClass = uic.loadUiType(addr) del qtBaseClass self.ui = uiClass() self.ui.setupUi(self) center(self) self.setModal(True) self.ui.view_pwd.setIcon(QtGui.QIcon('res/icons/pwd_no.png')) self.opf = None self.k_file = None self.dostup = False self.pwd = None self.sql = SqlWorker() self.chifrator = Chifrator() self.base_crypt = CryptBase() self.hsc = Hasher() self.setModal(True) self.connect(self.ui.ch_base, QtCore.SIGNAL('clicked()'), self.opn_dbs) self.connect(self.ui.cls_btn, QtCore.SIGNAL('clicked()'), self.no) self.hash = '' self.connect(self.ui.ch_k_f, QtCore.SIGNAL('clicked()'), self.k_f) self.ui.view_pwd.setCheckable(True) self.connect(self.ui.view_pwd, QtCore.SIGNAL('clicked()'), self.view) self.connect(self.ui.ok_btn, QtCore.SIGNAL('clicked()'), self.ok)
def __init__(self, parent, base_pwd, base_addr): QtGui.QDialog.__init__(self, parent) global lang if lang == 'En_en': addr = 'res/ui/find/en_find.ui' elif lang == 'Ru_ru': addr = 'res/ui/find/ru_find.ui' self.base_pwd = base_pwd self.base_addr = base_addr self.sql = SqlWorker() uiClass, qtBaseClass = uic.loadUiType(addr) del qtBaseClass self.ui = uiClass() center(self) self.ui.setupUi(self) self.setModal(True) self.chi = Chifrator() self.clipboard = QtGui.QApplication.clipboard() self.ui.find.clicked.connect(self.find_in_data) self.ui.pwd_v.stateChanged.connect(self.find_in_data) self.actionCopyLogin = QtGui.QAction('Copy login to clipboard', self) self.actionCopyPwd = QtGui.QAction('Copy password to clipboard', self) self.ui.data.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu) self.ui.data.addAction(self.actionCopyLogin) self.ui.data.addAction(self.actionCopyPwd) self.actionCopyLogin.triggered.connect(self.copyLogin) self.actionCopyPwd.triggered.connect(self.copyPassword)
def __init__(self, parent, base_path, pwd, uids): QtGui.QDialog.__init__(self, parent) global lang if lang == 'En_en': addr = 'res/ui/add_data/en.ui' elif lang == 'Ru_ru': addr = 'res/ui/add_data/ru.ui' uiClass, qtBaseClass = uic.loadUiType(addr) del qtBaseClass self.setModal(True) self.uids = uids self.ui = uiClass() self.ui.setupUi(self) self.b_p = base_path self.sql = SqlWorker() self.chi = Chifrator() self.pwd = pwd center(self) self.groups() self.ui.pwd.textChanged.connect(self.edtPwd) self.ui.generate.clicked.connect(self.generate) self.ui.view_pwd.setIcon(QtGui.QIcon('res/icons/pwd_no.png')) self.ui.view_pwd.setCheckable(True) self.ui.view_pwd.clicked.connect(self.view) self.ui.add.clicked.connect(self.add) self.ui.add_group.clicked.connect(self.addGroup) self.ui.prBar.setMinimum(0) self.ui.prBar.setMaximum(300)
class BlockWindow(QtGui.QDialog): def __init__(self, parent, base_pwd, base_addr): QtGui.QDialog.__init__(self, parent) global lang if lang == 'En_en': addr = 'res/ui/block/en_block.ui' elif lang == 'Ru_ru': addr = 'res/ui/block/ru_block.ui' uiClass, qtBaseClass = uic.loadUiType(addr) del qtBaseClass self.ui = uiClass() center(self) self.ui.setupUi(self) self.base_pwd = base_pwd self.sql = SqlWorker() self.chi = Chifrator() self.base_addr = base_addr self.bool = False self.ui.ok.clicked.connect(self.ok) def ok(self): pwd = self.ui.pwd.text() repwd = self.sql.selectDataFromTable(self.base_addr, ('*', 'pwd_to_block')) repwd = self.chi.decrypt_text(pwd, loads(repwd[0][0])) if pwd == repwd: self.bool = True self.close() else: self.bool = False return
def __init__(self, parent, base_pwd, base_addr): QtGui.QDialog.__init__(self, parent) global lang if lang == 'En_en': addr = 'res/ui/block/en_block.ui' elif lang == 'Ru_ru': addr = 'res/ui/block/ru_block.ui' uiClass, qtBaseClass = uic.loadUiType(addr) del qtBaseClass self.ui = uiClass() center(self) self.ui.setupUi(self) self.base_pwd = base_pwd self.sql = SqlWorker() self.chi = Chifrator() self.base_addr = base_addr self.bool = False self.ui.ok.clicked.connect(self.ok)
def __init__(self, parent, base_path, pwd, data): """ data = {uid:number; group:group} """ QtGui.QDialog.__init__(self, parent) global lang if lang == 'En_en': addr = 'res/ui/add_data/en_up.ui' elif lang == 'Ru_ru': addr = 'res/ui/add_data/ru_up.ui' uiClass, qtBaseClass = uic.loadUiType(addr) del qtBaseClass self.setModal(True) self.data = data self.ui = uiClass() self.ui.setupUi(self) self.b_p = base_path self.sql = SqlWorker() self.chi = Chifrator() self.pwd = pwd center(self) tmp = self.sql.selectDataFromTable(self.b_p, ('*', '{}'.format( self.data['group']), 'uid = {}'.format(self.data['uid']))) tmp = tmp[0] self.old_pwd = self.chi.decrypt_text(self.pwd, loads(tmp[2])) self.old_login = self.chi.decrypt_text(self.pwd, loads(tmp[1])) self.old_inet = tmp[3] self.ui.inet_addr.setText(self.old_inet) self.ui.login.setText(self.old_login) self.ui.pwd.setText(self.old_pwd) self.ui.repwd.setText(self.old_pwd) self.ui.pwd.textChanged.connect(self.edtPwd) self.ui.generate.clicked.connect(self.generate) self.ui.view_pwd.setIcon(QtGui.QIcon('res/icons/pwd_no.png')) self.ui.view_pwd.setCheckable(True) self.ui.view_pwd.clicked.connect(self.view) self.ui.add.clicked.connect(self.add) self.ui.prBar.setMaximum(300) self.ui.prBar.setMinimum(0)
class BaseOpen(QtGui.QDialog): def __init__(self, parent): QtGui.QDialog.__init__(self, parent) global lang if lang == 'En_en': addr = 'res/ui/open_base/en_dbs_opn.ui' elif lang == 'Ru_ru': addr = 'res/ui/open_base/ru_dbs_opn.ui' uiClass, qtBaseClass = uic.loadUiType(addr) del qtBaseClass self.ui = uiClass() self.ui.setupUi(self) center(self) self.setModal(True) self.ui.view_pwd.setIcon(QtGui.QIcon('res/icons/pwd_no.png')) self.opf = None self.k_file = None self.dostup = False self.pwd = None self.sql = SqlWorker() self.chifrator = Chifrator() self.base_crypt = CryptBase() self.hsc = Hasher() self.setModal(True) self.connect(self.ui.ch_base, QtCore.SIGNAL('clicked()'), self.opn_dbs) self.connect(self.ui.cls_btn, QtCore.SIGNAL('clicked()'), self.no) self.hash = '' self.connect(self.ui.ch_k_f, QtCore.SIGNAL('clicked()'), self.k_f) self.ui.view_pwd.setCheckable(True) self.connect(self.ui.view_pwd, QtCore.SIGNAL('clicked()'), self.view) self.connect(self.ui.ok_btn, QtCore.SIGNAL('clicked()'), self.ok) def view(self): if self.ui.view_pwd.isChecked(): pwd = self.ui.pwd.text() repwd = self.ui.repwd.text() self.ui.view_pwd.setIcon(QtGui.QIcon('res/icons/pwd_yes.png')) self.ui.pwd.setEchoMode(QtGui.QLineEdit.Normal) self.ui.repwd.setEchoMode(QtGui.QLineEdit.Normal) self.ui.pwd.setText(pwd) self.ui.repwd.setText(repwd) elif not self.ui.view_pwd.isChecked(): pwd = self.ui.pwd.text() repwd = self.ui.repwd.text() self.ui.view_pwd.setIcon(QtGui.QIcon('res/icons/pwd_no.png')) self.ui.pwd.setEchoMode(QtGui.QLineEdit.Password) self.ui.repwd.setEchoMode(QtGui.QLineEdit.Password) self.ui.pwd.setText(pwd) self.ui.repwd.setText(repwd) def no(self): self.opf = None self.k_file = None self.close() def opn_dbs(self): self.opf = QtGui.QFileDialog.getOpenFileName( self, 'Open database', path_installer(), 'Password manager db (*.pwmdb)') self.ui.addr.setText(self.opf) def k_f(self): self.k_file = QtGui.QFileDialog.getOpenFileName() self.ui.key_file.setText(self.k_file) def ok(self): global rec rec += 1 if rec == 3: return pwd = self.ui.pwd.text() rep = self.ui.repwd.text() k_file = self.ui.key_file.text() opf = self.ui.addr.text() if pwd == rep: self.pwd = pwd if (k_file != '') and \ (k_file is not None) and \ (os.path.exists(k_file)): self.k_file = k_file hsc = self.hsc.hasMd5(self.k_file) self.pwd = splash(pwd, hsc) else: self.k_file = '' hsc = 'qwertyuioasdfghjklxcvbnmkjht' self.pwd = splash(pwd, hsc) if opf != '' and opf is not None: self.opf = opf tmp_addr = tempfile.mktemp() opf = open(self.opf, 'rb') tmp = open(tmp_addr, 'wb') tmp.write(opf.read()) tmp.close() opf.close() d = self.base_crypt.decrypt_file(self.pwd, tmp_addr, self.opf) else: ers = ErorWindow(self, 'Eror', 2) ers.exec_() return decrypt = self.base_crypt.decrypt if decrypt and d: data = self.sql.selectDataFromTable(self.opf, ('dt', 'dostup', 'id = 1')) crd = self.sql.selectDataFromTable(self.opf, ('crd', 'dostup', 'id = 1')) try: data = loads(data[0][0]) crd = loads(crd[0][0]) rpl = self.chifrator.decrypt_text(self.pwd, crd) except: self.ok() rpl = '' if rpl == data: self.dostup = True self.close() else: ers = ErorWindow(self, 'Eror', 3) ers.exec_() self.dostup = False return else: ers = ErorWindow(self, 'Eror', 1) ers.exec_() self.dostup = False return
class FindInBase(QtGui.QDialog): def __init__(self, parent, base_pwd, base_addr): QtGui.QDialog.__init__(self, parent) global lang if lang == 'En_en': addr = 'res/ui/find/en_find.ui' elif lang == 'Ru_ru': addr = 'res/ui/find/ru_find.ui' self.base_pwd = base_pwd self.base_addr = base_addr self.sql = SqlWorker() uiClass, qtBaseClass = uic.loadUiType(addr) del qtBaseClass self.ui = uiClass() center(self) self.ui.setupUi(self) self.setModal(True) self.chi = Chifrator() self.clipboard = QtGui.QApplication.clipboard() self.ui.find.clicked.connect(self.find_in_data) self.ui.pwd_v.stateChanged.connect(self.find_in_data) self.actionCopyLogin = QtGui.QAction('Copy login to clipboard', self) self.actionCopyPwd = QtGui.QAction('Copy password to clipboard', self) self.ui.data.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu) self.ui.data.addAction(self.actionCopyLogin) self.ui.data.addAction(self.actionCopyPwd) self.actionCopyLogin.triggered.connect(self.copyLogin) self.actionCopyPwd.triggered.connect(self.copyPassword) def find_in_data(self): self.ui.data.clear() find_txt = self.ui.string.text() groups = self.sql.selectDataFromTable(self.base_addr, ('grop', 'gr')) groups = [groups[x][0] for x in range(len(groups))] finded = [] for x in groups: data = self.sql.selectDataFromTable( self.base_addr, ('uid, login, pwd, inet', '{}'.format(x))) data = [list(x) for x in data] for y in data: i = data.index(y) data[i].append(x) inet = data[i][3] pwd = self.chi.decrypt_text(self.base_pwd, loads(data[i][2])) login = self.chi.decrypt_text(self.base_pwd, loads(data[i][1])) if (find_txt in inet) or (find_txt in pwd) or (find_txt in login): finded.append(y) widgets = [ QtGui.QTreeWidgetItem(self.ui.data) for x in range(len(finded)) ] for x in finded: i = finded.index(x) widgets[i].setText(5, str(finded[i][0])) widgets[i].setText(0, str(i)) widgets[i].setText(1, finded[i][3]) widgets[i].setText(2, finded[i][4]) login = self.chi.decrypt_text(self.base_pwd, loads(finded[i][1])) widgets[i].setText(3, login) if self.ui.pwd_v.isChecked(): pwd = self.chi.decrypt_text(self.base_pwd, loads(finded[i][2])) widgets[i].setText(4, pwd) else: widgets[i].setText(4, '************') def copyLogin(self): login = self.ui.data.currentItem().text(3) print(login) self.clipboard.clear() self.clipboard.setText(login) def copyPassword(self): if self.ui.pwd_v.isChecked(): pwd = self.ui.data.currentItem().text(4) else: group = self.ui.data.currentItem().text(2) uid = self.ui.data.currentItem().text(5) pwd = self.sql.selectDataFromTable( self.base_addr, ('pwd', '{}'.format(group), 'uid = {}'.format(uid))) pwd = pwd[0][0] pwd = self.chi.decrypt_text(self.base_pwd, loads(pwd)) self.clipboard.clear() self.clipboard.setText(pwd) def closeEvent(self, event): self.clipboard.clear() event.accept()
class AddData(QtGui.QDialog): def __init__(self, parent, base_path, pwd, uids): QtGui.QDialog.__init__(self, parent) global lang if lang == 'En_en': addr = 'res/ui/add_data/en.ui' elif lang == 'Ru_ru': addr = 'res/ui/add_data/ru.ui' uiClass, qtBaseClass = uic.loadUiType(addr) del qtBaseClass self.setModal(True) self.uids = uids self.ui = uiClass() self.ui.setupUi(self) self.b_p = base_path self.sql = SqlWorker() self.chi = Chifrator() self.pwd = pwd center(self) self.groups() self.ui.pwd.textChanged.connect(self.edtPwd) self.ui.generate.clicked.connect(self.generate) self.ui.view_pwd.setIcon(QtGui.QIcon('res/icons/pwd_no.png')) self.ui.view_pwd.setCheckable(True) self.ui.view_pwd.clicked.connect(self.view) self.ui.add.clicked.connect(self.add) self.ui.add_group.clicked.connect(self.addGroup) self.ui.prBar.setMinimum(0) self.ui.prBar.setMaximum(300) def generate(self): gen = MethGen() pwd = gen.strength_hard(gen.voider(6)) del gen self.ui.pwd.setText(pwd) self.ui.repwd.setText(pwd) i = enthropy(pwd) self.ui.prBar.setValue(i) self.edtPwd() def edtPwd(self): val = self.ui.pwd.text() val = enthropy(val) val = int(val) self.ui.prBar.setValue(val) def groups(self): self.ui.cbb1.clear() global count self.uids = count for x in self.uids.keys(): self.ui.cbb1.addItem(x) def view(self): if self.ui.view_pwd.isChecked(): pwd = self.ui.pwd.text() repwd = self.ui.repwd.text() self.ui.view_pwd.setIcon(QtGui.QIcon('res/icons/pwd_yes.png')) self.ui.pwd.setEchoMode(QtGui.QLineEdit.Normal) self.ui.repwd.setEchoMode(QtGui.QLineEdit.Normal) self.ui.pwd.setText(pwd) self.ui.repwd.setText(repwd) elif not self.ui.view_pwd.isChecked(): pwd = self.ui.pwd.text() repwd = self.ui.repwd.text() self.ui.view_pwd.setIcon(QtGui.QIcon('res/icons/pwd_no.png')) self.ui.pwd.setEchoMode(QtGui.QLineEdit.Password) self.ui.repwd.setEchoMode(QtGui.QLineEdit.Password) self.ui.pwd.setText(pwd) self.ui.repwd.setText(repwd) def add(self): inet = self.ui.inet_addr.text() login = self.ui.login.text() group = self.ui.cbb1.currentText() pwd = self.ui.pwd.text() repwd = self.ui.repwd.text() if pwd == repwd: login = dumps(self.chi.encrypt_text(self.pwd, login)) # uid = self.uids.get(group, 1) + 1 pwd = dumps(self.chi.encrypt_text(self.pwd, pwd)) # str_execute = 'INSERT INTO {}(uid, inet, login, pwd) VALUES(' + str( uid) + ', "{}",' str_execute = str_execute.format(group, inet) str_execute += '?, ?)' self.sql.executeSqlCmdToBlob(self.b_p, str_execute, (login, pwd)) global count count[group] += 1 self.close() else: erm = ErorWindow(self, self.tr('Eror'), 1) erm.exec_() return def addGroup(self): dialog = AddGroup(self, self.b_p) dialog.exec_() self.groups()
class UpdateData(QtGui.QDialog): def __init__(self, parent, base_path, pwd, data): """ data = {uid:number; group:group} """ QtGui.QDialog.__init__(self, parent) global lang if lang == 'En_en': addr = 'res/ui/add_data/en_up.ui' elif lang == 'Ru_ru': addr = 'res/ui/add_data/ru_up.ui' uiClass, qtBaseClass = uic.loadUiType(addr) del qtBaseClass self.setModal(True) self.data = data self.ui = uiClass() self.ui.setupUi(self) self.b_p = base_path self.sql = SqlWorker() self.chi = Chifrator() self.pwd = pwd center(self) tmp = self.sql.selectDataFromTable(self.b_p, ('*', '{}'.format( self.data['group']), 'uid = {}'.format(self.data['uid']))) tmp = tmp[0] self.old_pwd = self.chi.decrypt_text(self.pwd, loads(tmp[2])) self.old_login = self.chi.decrypt_text(self.pwd, loads(tmp[1])) self.old_inet = tmp[3] self.ui.inet_addr.setText(self.old_inet) self.ui.login.setText(self.old_login) self.ui.pwd.setText(self.old_pwd) self.ui.repwd.setText(self.old_pwd) self.ui.pwd.textChanged.connect(self.edtPwd) self.ui.generate.clicked.connect(self.generate) self.ui.view_pwd.setIcon(QtGui.QIcon('res/icons/pwd_no.png')) self.ui.view_pwd.setCheckable(True) self.ui.view_pwd.clicked.connect(self.view) self.ui.add.clicked.connect(self.add) self.ui.prBar.setMaximum(300) self.ui.prBar.setMinimum(0) def generate(self): gen = MethGen() pwd = gen.strength_hard(gen.voider(6)) del gen self.ui.pwd.setText(pwd) self.ui.repwd.setText(pwd) i = enthropy(pwd) self.ui.prBar.setValue(i) def edtPwd(self): val = self.ui.pwd.text() val = enthropy(val) val = int(val) self.ui.prBar.setValue(val) def view(self): if self.ui.view_pwd.isChecked(): pwd = self.ui.pwd.text() repwd = self.ui.repwd.text() self.ui.view_pwd.setIcon(QtGui.QIcon('res/icons/pwd_yes.png')) self.ui.pwd.setEchoMode(QtGui.QLineEdit.Normal) self.ui.repwd.setEchoMode(QtGui.QLineEdit.Normal) self.ui.pwd.setText(pwd) self.ui.repwd.setText(repwd) elif not self.ui.view_pwd.isChecked(): pwd = self.ui.pwd.text() repwd = self.ui.repwd.text() self.ui.view_pwd.setIcon(QtGui.QIcon('res/icons/pwd_no.png')) self.ui.pwd.setEchoMode(QtGui.QLineEdit.Password) self.ui.repwd.setEchoMode(QtGui.QLineEdit.Password) self.ui.pwd.setText(pwd) self.ui.repwd.setText(repwd) def add(self): inet = self.ui.inet_addr.text() login = self.ui.login.text() group = self.data['group'] pwd = self.ui.pwd.text() repwd = self.ui.repwd.text() uid = self.data['uid'] if pwd == repwd: if inet != self.old_inet: self.sql.updateDataInTable( self.b_p, ('{}'.format(group), 'inet', '"{}"'.format(inet), 'uid = {}'.format(uid))) if login != self.old_login: login = dumps(self.chi.encrypt_text(self.pwd, login)) self.sql.executeSqlCmdToBlobOne( self.b_p, 'UPDATE {}'.format(group) + ' SET login = ? ' + 'WHERE uid = {}'.format(uid), login) if pwd != self.old_pwd: pwd = dumps(self.chi.encrypt_text(self.pwd, pwd)) self.sql.executeSqlCmdToBlobOne( self.b_p, 'UPDATE {}'.format(group) + ' SET pwd = ? ' + 'WHERE uid = {}'.format(uid), pwd) self.close() else: erm = ErorWindow(self, self.tr('Eror'), 1) erm.exec_() return
def __init__(self): addr = 'logs/{}{}'.format( dt.datetime.now().strftime('%Y-%m-%d-%H-%M-%S'), '.log') logging.basicConfig(filename=addr, level=logging.DEBUG) logging.debug('Run MainWindow.__init__();') QtGui.QMainWindow.__init__(self) global lang if lang == 'En_en': path = 'res/ui/Main/en_main.ui' elif lang == 'Ru_ru': path = 'res/ui/Main/ru_main.ui' uicl, qtbaseclass = uic.loadUiType(path) del qtbaseclass self.ui = uicl() logging.debug('Setup UI;') self.ui.setupUi(self) # create items self.tableWidgets = [] self.gr_widgets = [ QtGui.QTreeWidgetItem(self.ui.GroupView) for x in range(2) ] self.gr_widgets[0].setText(0, 'Internet') self.gr_widgets[1].setText(0, 'Email') self.ingr_widgets = {'Internet': {}, 'Email': {}} # run some functions center(self) self.toolBarInst() # create some variables self.base_addr = None self.sql = SqlWorker() self.chifrator = Chifrator() self.base_chifrator = CryptBase() global count self.count = count self.t_itm = QtGui.QTreeWidgetItem self.base_pwd = None self.file_dlg = QtGui.QFileDialog self.clipboard = QtGui.QApplication.clipboard() self.groupData = None # self.actionAdd_data = QtGui.QAction('Add data', self) self.actionAdd_data.setVisible(True) self.actionEdit_gr = QtGui.QAction('Edit data', self) self.actionCopyPwd_gr = QtGui.QAction('Copy password to clipboard', self) self.actionCopyLogin_gr = QtGui.QAction('Copy login to clipboard', self) self.actionAddNewGroup_gr = QtGui.QAction('Add new group', self) self.actionDuplicate_gr = QtGui.QAction('Duplicate this data', self) self.actionDelete_gr = QtGui.QAction('Delete this data', self) self.actionDelete_group = QtGui.QAction('Delete this group', self) self.installContextMenuToGroups() # self.actionAdd_data_data = QtGui.QAction('Add data', self) self.actionEdit_data = QtGui.QAction('Edit data', self) self.actionCopyPwd_data = QtGui.QAction('Copy password to clipboard', self) self.actionCopyLogin_data = QtGui.QAction('Copy login to clipboard', self) self.actionDuplicate_data = QtGui.QAction('Duplicate this data', self) self.actionDelete_data = QtGui.QAction('Delete this data', self) self.installContextMenuToData() self.iconInstaller() # self.ui.actionBlock_this_window.setEnabled(False) self.ui.actionChange_master_pwd.setEnabled(False) # create connections self.ui.actionCreate_database.triggered.connect(self.CreateBase) self.ui.actionOpen_database.triggered.connect(self.OpenBase) self.ui.actionClose_database.triggered.connect(self.closeBase) self.ui.actionSave_database_as.triggered.connect(self.saveBaseAs) self.ui.actionAdd_data_to_base.triggered.connect(self.addDataToBase) self.ui.actionView_Edit_data_on_base.triggered.connect( self.editData_Group) self.ui.actionDelete_data.triggered.connect(self.delData_gr) self.ui.GroupView.itemClicked.connect(self.TableView) self.ui.GroupView.itemDoubleClicked.connect(self.TableView) self.ui.GroupView.itemEntered.connect(self.TableView) self.ui.GroupView.itemPressed.connect(self.TableView) self.ui.GroupView.itemSelectionChanged.connect(self.TableView) self.ui.actionExit.triggered.connect(self.close) self.actionAddNewGroup_gr.triggered.connect(self.addGroup_gr) self.actionAdd_data.triggered.connect(self.addDataToBase) self.actionEdit_gr.triggered.connect(self.editData_Group) self.actionDelete_gr.triggered.connect(self.delData_gr) self.actionDelete_group.triggered.connect(self.delGroup) self.actionCopyLogin_gr.triggered.connect(self.copyLogin_Group) self.actionCopyPwd_gr.triggered.connect(self.copyPassword_Group) self.ui.actionCopy_login_to_clipboard.triggered.connect( self.copyLogin_Group) self.ui.actionCopy_password_to_clipboard.triggered.connect( self.copyPassword_Group) self.actionEdit_gr.triggered.connect(self.editData_Group) self.actionAdd_data_data.triggered.connect(self.addDataToBase) self.actionEdit_data.triggered.connect(self.editData_Data) self.actionDuplicate_data.triggered.connect(self.duplicate_data_Data) self.actionDelete_data.triggered.connect(self.del_data_data) self.actionCopyLogin_data.triggered.connect(self.copyLogin_Data) self.actionCopyPwd_data.triggered.connect(self.copyPassword_Data) self.actionDuplicate_gr.triggered.connect(self.duplicate_gr) self.ui.actionPassword_genrator.triggered.connect(self.runPwdGenerator) self.ui.actionSearch_in_database.triggered.connect(self.runFindInBase) self.ui.actionSave_database.triggered.connect(self.saveDatabse) self.ui.actionBlock_this_window.triggered.connect(self.blockWindow) self.ui.actionAbout.triggered.connect(self.about) self.ui.actionSettings.triggered.connect(self.runSettings)
class MainWindow(QtGui.QMainWindow): """This a Main Window of Password Manager""" def __init__(self): addr = 'logs/{}{}'.format( dt.datetime.now().strftime('%Y-%m-%d-%H-%M-%S'), '.log') logging.basicConfig(filename=addr, level=logging.DEBUG) logging.debug('Run MainWindow.__init__();') QtGui.QMainWindow.__init__(self) global lang if lang == 'En_en': path = 'res/ui/Main/en_main.ui' elif lang == 'Ru_ru': path = 'res/ui/Main/ru_main.ui' uicl, qtbaseclass = uic.loadUiType(path) del qtbaseclass self.ui = uicl() logging.debug('Setup UI;') self.ui.setupUi(self) # create items self.tableWidgets = [] self.gr_widgets = [ QtGui.QTreeWidgetItem(self.ui.GroupView) for x in range(2) ] self.gr_widgets[0].setText(0, 'Internet') self.gr_widgets[1].setText(0, 'Email') self.ingr_widgets = {'Internet': {}, 'Email': {}} # run some functions center(self) self.toolBarInst() # create some variables self.base_addr = None self.sql = SqlWorker() self.chifrator = Chifrator() self.base_chifrator = CryptBase() global count self.count = count self.t_itm = QtGui.QTreeWidgetItem self.base_pwd = None self.file_dlg = QtGui.QFileDialog self.clipboard = QtGui.QApplication.clipboard() self.groupData = None # self.actionAdd_data = QtGui.QAction('Add data', self) self.actionAdd_data.setVisible(True) self.actionEdit_gr = QtGui.QAction('Edit data', self) self.actionCopyPwd_gr = QtGui.QAction('Copy password to clipboard', self) self.actionCopyLogin_gr = QtGui.QAction('Copy login to clipboard', self) self.actionAddNewGroup_gr = QtGui.QAction('Add new group', self) self.actionDuplicate_gr = QtGui.QAction('Duplicate this data', self) self.actionDelete_gr = QtGui.QAction('Delete this data', self) self.actionDelete_group = QtGui.QAction('Delete this group', self) self.installContextMenuToGroups() # self.actionAdd_data_data = QtGui.QAction('Add data', self) self.actionEdit_data = QtGui.QAction('Edit data', self) self.actionCopyPwd_data = QtGui.QAction('Copy password to clipboard', self) self.actionCopyLogin_data = QtGui.QAction('Copy login to clipboard', self) self.actionDuplicate_data = QtGui.QAction('Duplicate this data', self) self.actionDelete_data = QtGui.QAction('Delete this data', self) self.installContextMenuToData() self.iconInstaller() # self.ui.actionBlock_this_window.setEnabled(False) self.ui.actionChange_master_pwd.setEnabled(False) # create connections self.ui.actionCreate_database.triggered.connect(self.CreateBase) self.ui.actionOpen_database.triggered.connect(self.OpenBase) self.ui.actionClose_database.triggered.connect(self.closeBase) self.ui.actionSave_database_as.triggered.connect(self.saveBaseAs) self.ui.actionAdd_data_to_base.triggered.connect(self.addDataToBase) self.ui.actionView_Edit_data_on_base.triggered.connect( self.editData_Group) self.ui.actionDelete_data.triggered.connect(self.delData_gr) self.ui.GroupView.itemClicked.connect(self.TableView) self.ui.GroupView.itemDoubleClicked.connect(self.TableView) self.ui.GroupView.itemEntered.connect(self.TableView) self.ui.GroupView.itemPressed.connect(self.TableView) self.ui.GroupView.itemSelectionChanged.connect(self.TableView) self.ui.actionExit.triggered.connect(self.close) self.actionAddNewGroup_gr.triggered.connect(self.addGroup_gr) self.actionAdd_data.triggered.connect(self.addDataToBase) self.actionEdit_gr.triggered.connect(self.editData_Group) self.actionDelete_gr.triggered.connect(self.delData_gr) self.actionDelete_group.triggered.connect(self.delGroup) self.actionCopyLogin_gr.triggered.connect(self.copyLogin_Group) self.actionCopyPwd_gr.triggered.connect(self.copyPassword_Group) self.ui.actionCopy_login_to_clipboard.triggered.connect( self.copyLogin_Group) self.ui.actionCopy_password_to_clipboard.triggered.connect( self.copyPassword_Group) self.actionEdit_gr.triggered.connect(self.editData_Group) self.actionAdd_data_data.triggered.connect(self.addDataToBase) self.actionEdit_data.triggered.connect(self.editData_Data) self.actionDuplicate_data.triggered.connect(self.duplicate_data_Data) self.actionDelete_data.triggered.connect(self.del_data_data) self.actionCopyLogin_data.triggered.connect(self.copyLogin_Data) self.actionCopyPwd_data.triggered.connect(self.copyPassword_Data) self.actionDuplicate_gr.triggered.connect(self.duplicate_gr) self.ui.actionPassword_genrator.triggered.connect(self.runPwdGenerator) self.ui.actionSearch_in_database.triggered.connect(self.runFindInBase) self.ui.actionSave_database.triggered.connect(self.saveDatabse) self.ui.actionBlock_this_window.triggered.connect(self.blockWindow) self.ui.actionAbout.triggered.connect(self.about) self.ui.actionSettings.triggered.connect(self.runSettings) def installContextMenuToGroups(self): self.ui.GroupView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu) self.ui.GroupView.addAction(self.actionAdd_data) self.ui.GroupView.addAction(self.actionEdit_gr) self.ui.GroupView.addAction(self.actionAddNewGroup_gr) self.ui.GroupView.addAction(self.actionCopyLogin_gr) self.ui.GroupView.addAction(self.actionCopyPwd_gr) self.ui.GroupView.addAction(self.actionDuplicate_gr) self.ui.GroupView.addAction(self.actionDelete_gr) self.ui.GroupView.addAction(self.actionDelete_group) def installContextMenuToData(self): self.ui.DataView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu) self.ui.DataView.addAction(self.actionAdd_data_data) self.ui.DataView.addAction(self.actionEdit_data) self.ui.DataView.addAction(self.actionCopyLogin_data) self.ui.DataView.addAction(self.actionCopyPwd_data) self.ui.DataView.addAction(self.actionDuplicate_data) self.ui.DataView.addAction(self.actionDelete_data) def toolBarInst(self): logging.debug('Running toolBarInst();') self.ui.toolBar.addAction(self.ui.actionCreate_database) self.ui.toolBar.addAction(self.ui.actionOpen_database) self.ui.toolBar.addAction(self.ui.actionSave_database) self.ui.toolBar.addAction(self.ui.actionSave_database_as) self.ui.toolBar.addAction(self.ui.actionClose_database) self.ui.toolBar_2.addAction(self.ui.actionAdd_data_to_base) self.ui.toolBar_2.addAction(self.ui.actionView_Edit_data_on_base) self.ui.toolBar_2.addAction(self.ui.actionDelete_data) self.ui.toolBar_2.addAction(self.ui.actionCopy_login_to_clipboard) self.ui.toolBar_2.addAction(self.ui.actionCopy_password_to_clipboard) self.ui.toolBar_2.addAction(self.ui.actionSearch_in_database) def iconInstaller(self): """ This function install icon to all menu entries""" logging.debug('Running iconInstaller();') icn = QtGui.QIcon # menu File main = 'res/icons/main.png' crt_dbs = 'res/icons/create.png' opn_dbs = 'res/icons/open.png' sv_dbs = 'res/icons/save.png' sv_dbs_as = 'res/icons/save_as.png' cls_dbs = 'res/icons/close.png' ch_prt = 'res/icons/change.png' w_block = 'res/icons/block.png' exit = 'res/icons/exit.png' self.setWindowIcon(icn(main)) self.ui.actionCreate_database.setIcon(icn(crt_dbs)) self.ui.actionOpen_database.setIcon(icn(opn_dbs)) self.ui.actionSave_database.setIcon(icn(sv_dbs)) self.ui.actionSave_database_as.setIcon(icn(sv_dbs_as)) self.ui.actionClose_database.setIcon(icn(cls_dbs)) self.ui.menuWindow_blocking.setIcon(icn(w_block)) self.ui.actionExit.setIcon(icn(exit)) # menu Data add_dt = 'res/icons/plus.png' edt_dt = 'res/icons/edit.png' del_dt = 'res/icons/del.png' cp_lg = 'res/icons/copy_login.png' cp_pwd = 'res/icons/copy_password.png' srh_in = 'res/icons/find.png' double = 'res/icons/double.png' self.ui.actionAdd_data_to_base.setIcon(icn(add_dt)) self.ui.actionView_Edit_data_on_base.setIcon(icn(edt_dt)) self.ui.actionDelete_data.setIcon(icn(del_dt)) self.ui.actionCopy_login_to_clipboard.setIcon(icn(cp_lg)) self.ui.actionCopy_password_to_clipboard.setIcon(icn(cp_pwd)) self.ui.actionSearch_in_database.setIcon(icn(srh_in)) self.actionAdd_data.setIcon(icn(add_dt)) self.actionEdit_gr.setIcon(icn(edt_dt)) self.actionCopyPwd_gr.setIcon(icn(cp_pwd)) self.actionCopyLogin_gr.setIcon(icn(cp_lg)) self.actionAddNewGroup_gr.setIcon(icn(add_dt)) self.actionDuplicate_gr.setIcon(icn(double)) self.actionDelete_gr.setIcon(icn(del_dt)) self.actionDelete_group.setIcon(icn(cls_dbs)) self.actionAdd_data_data.setIcon(icn(add_dt)) self.actionEdit_data.setIcon(icn(edt_dt)) self.actionCopyPwd_data.setIcon(icn(cp_pwd)) self.actionCopyLogin_data.setIcon(icn(cp_lg)) self.actionDuplicate_data.setIcon(icn(double)) self.actionDelete_data.setIcon(icn(del_dt)) # menu Advanced functions pwd_gen = 'res/icons/generator.png' settings = 'res/icons/settings.png' self.ui.actionPassword_genrator.setIcon(icn(pwd_gen)) self.ui.actionSettings.setIcon(icn(settings)) # menu Help.. about = 'res/icons/about.png' self.ui.actionAbout.setIcon(icn(about)) # icons on GroupView internet = 'res/icons/internet.png' email = 'res/icons/email.png' for x in self.gr_widgets: txt = x.text(0).lower() if txt == 'internet': x.setIcon(0, icn(internet)) elif txt == 'email': x.setIcon(0, icn(email)) def icnUnderGroup(self): logging.debug('Running icnUnderGroup();') icn = QtGui.QIcon vk = 'res/icons/vk.png' fcb = 'res/icons/facebook.png' ok = 'res/icons/odnoklassniki.png' gm = 'res/icons/gmail.png' twt = 'res/icons/twitter.png' mail_ru = 'res/icons/mail_ru.png' pin = 'res/icons/pinterest.png' internet = 'res/icons/internet.png' email = 'res/icons/email.png' default = 'res/icons/default.png' for x in self.ingr_widgets.keys(): for y in self.ingr_widgets[x].values(): txt = y.text(0).lower() txt = txt[txt.find('-') + 1:] if txt == 'vk.com' or txt == 'vkontakte.com': y.setIcon(0, icn(vk)) elif txt == 'facebook.com': y.setIcon(0, icn(fcb)) elif txt == 'ok.ru' or txt == 'odnoklassniki.ru': y.setIcon(0, icn(ok)) elif txt == 'gmail.com': y.setIcon(0, icn(gm)) elif txt == 'twitter.com': y.setIcon(0, icn(twt)) elif txt == 'mail.ru': y.setIcon(0, icn(mail_ru)) elif txt == 'pin.com' or txt == 'pinterest.com': y.setIcon(0, icn(pin)) elif x == 'Email': y.setIcon(0, icn(email)) elif x == 'Internet': y.setIcon(0, icn(internet)) else: y.setIcon(0, icn(default)) def icnUnderData(self): logging.debug('Running icnUnderGroup();') icn = QtGui.QIcon vk = 'res/icons/vk.png' fcb = 'res/icons/facebook.png' ok = 'res/icons/odnoklassniki.png' gm = 'res/icons/gmail.png' twt = 'res/icons/twitter.png' mail_ru = 'res/icons/mail_ru.png' pin = 'res/icons/pinterest.png' default = 'res/icons/default.png' for y in self.tableWidgets: txt = y.text(1).lower() if txt == 'vk.com' or txt == 'vkontakte.com': y.setIcon(0, icn(vk)) elif txt == 'facebook.com': y.setIcon(0, icn(fcb)) elif txt == 'ok.ru' or txt == 'odnoklassniki.ru': y.setIcon(0, icn(ok)) elif txt == 'gmail.com': y.setIcon(0, icn(gm)) elif txt == 'twitter.com': y.setIcon(0, icn(twt)) elif txt == 'mail.ru': y.setIcon(0, icn(mail_ru)) elif txt == 'pin.com' or txt == 'pinterest.com': y.setIcon(0, icn(pin)) else: y.setIcon(0, icn(default)) def rndCh(self, i): logging.debug('Running rndCH();') str = 'abcdefghiklmnopqrstwxyzABCDEFGHIKLMNOPQRSTWXYZ' s = '' for x in range(i): s += random.choice(str) return s def CreateBase(self): logging.debug('Running CreateBase();') dial = BaseCreate(self) dial.setModal(True) dial.exec_() addr = dial.opf pwd = dial.pwd hsc = dial.k_hash # 32 if hsc is None: hsc = 'qwertyuioasdfghjklxcvbnmkjht' data = self.rndCh(16) # text for (de/en)crypt if (addr is not None) and (pwd is not None): if os.path.exists(addr): os.remove(addr) self.ui.actionBlock_this_window.setEnabled(True) self.ui.actionChange_master_pwd.setEnabled(True) mast_pwd = pwd pwd = splash(pwd, hsc) crd = dumps(self.chifrator.encrypt_text(pwd, data)) data = dumps(data) self.base_pwd = pwd self.base_addr = addr self.sql.createBase(self.base_addr) self.sql.createTableInBase( self.base_addr, ('gr', 'table_id INTEGER PRIMARY KEY AUTOINCREMENT,\ grop TEXT NOT NULL')) self.sql.createTableInBase(self.base_addr, ('pwd_to_block', 'pwd BLOB')) mast_pwd = dumps(self.chifrator.encrypt_text(mast_pwd, mast_pwd)) self.sql.addBlobDataToTable(self.base_addr, ('pwd_to_block', 'pwd', mast_pwd)) self.sql.createTableInBase( self.base_addr, ('dostup', 'id INTEGER NOT NULL PRIMARY KEY,\ dt BLOB,\ crd BLOB')) str_execute = 'INSERT INTO dostup(id, dt, crd) VALUES(1, ?, ?)' self.sql.executeCmdForDataTable(self.base_addr, (str_execute, data, crd)) self.sql.createTableInBase( self.base_addr, ('Internet', 'uid INTEGER PRIMARY KEY AUTOINCREMENT,\ login BLOB,\ pwd BLOB ,\ inet BLOB')) self.sql.createTableInBase( self.base_addr, ('Email', 'uid INTEGER PRIMARY KEY AUTOINCREMENT,\ login BLOB ,\ pwd BLOB ,\ inet BLOB')) for x in self.count.keys(): self.sql.addDataToTable(self.base_addr, ('gr', 'grop', '"{}"'.format(x))) self.GroupView() def OpenBase(self): logging.debug('Runnng OpenBase();') dial = BaseOpen(self) dial.setModal(True) dial.exec_() addr = dial.opf dostup = dial.dostup global count if addr is not None and dostup: self.closeBase() self.base_addr = addr self.base_pwd = dial.pwd groups = self.sql.selectDataFromTable(self.base_addr, ('grop', 'gr')) groups = [groups[x][0] for x in range(len(groups))] for x in groups: data = self.sql.selectDataFromTable(self.base_addr, ('*', '{}'.format(x))) self.ui.actionBlock_this_window.setEnabled(True) self.ui.actionChange_master_pwd.setEnabled(True) group_count = 0 for y in range(len(data)): group_count += 1 count[x] = group_count self.ingr_widgets[x] = {} miss = [] for x in count.keys(): if x not in groups: miss.append(x) for x in miss: del count[x] self.count = count self.GroupView() def GroupView(self): logging.debug('Running View on group;') self.ui.GroupView.clear() self.ingr_widgets = {'Internet': {}, 'Email': {}} groups = self.sql.selectDataFromTable(self.base_addr, ('grop', 'gr')) groups = [groups[x][0] for x in range(len(groups))] self.gr_widgets = [ self.t_itm(self.ui.GroupView) for x in range(len(groups)) ] [self.gr_widgets[x].setText(0, groups[x]) for x in range(len(groups))] self.iconInstaller() data = {} lenx = {} for x in groups: d = self.sql.selectDataFromTable(self.base_addr, ('*', x)) lenx[x] = len(d) data[x] = {} for y in d: data[x][y[0]] = y self.count = lenx obj = {} for x in self.gr_widgets: obj[x.text(0)] = self.gr_widgets.index(x) for x in data.keys(): self.ingr_widgets[x] = {} for x in data.keys(): group = x for y in data[x].keys(): uid = y addr = str(data[x][y][3]) parent = self.gr_widgets[obj[group]] self.ingr_widgets[group][uid] = self.t_itm(parent) self.ingr_widgets[group][uid].setText(4, str(uid)) self.ingr_widgets[group][uid].setText(0, addr) self.icnUnderGroup() def TableView(self): if self.base_addr is not None and self.base_addr != '': self.ui.DataView.clear() global lang logging.debug('Running View on group;') groups = self.sql.selectDataFromTable(self.base_addr, ('grop', 'gr')) if type(groups) == bool: return groups = [groups[x][0] for x in range(len(groups))] try: prnt_txt = self.ui.GroupView.currentItem().parent().text(0) if prnt_txt in groups: self.groupData = prnt_txt except: itm_txt = self.ui.GroupView.currentItem().text(0) if itm_txt in groups: self.groupData = itm_txt group = self.groupData data = self.sql.selectDataFromTable(self.base_addr, ('*', '{}'.format(group))) self.tableWidgets = [x for x in range(len(data))] global pwd_view for x in data: i = data.index(x) self.tableWidgets[i] = QtGui.QTreeWidgetItem(self.ui.DataView) self.tableWidgets[i].setText(4, str(data[i][0])) self.tableWidgets[i].setText(0, str(i)) self.tableWidgets[i].setText(1, data[i][3]) self.tableWidgets[i].setText( 2, self.chifrator.decrypt_text(self.base_pwd, loads(data[i][1]))) if not pwd_view: self.tableWidgets[i].setText(3, '************') else: self.tableWidgets[i].setText( 3, self.chifrator.decrypt_text(self.base_pwd, loads(data[i][2]))) self.icnUnderData() def duplicate_data_Data(self): logging.debug('Running duplicate data;') if self.base_addr != '' and self.base_addr is not None: group = self.groupData uid = self.ui.DataView.currentItem().text(4) tmp = self.sql.selectDataFromTable( self.base_addr, ('*', '{}'.format(group), 'uid = {}'.format(uid))) tmp = tmp[0] old_pwd = self.chifrator.decrypt_text(self.base_pwd, loads(tmp[2])) old_login = self.chifrator.decrypt_text(self.base_pwd, loads(tmp[1])) old_inet = tmp[3] old_pwd = dumps(self.chifrator.encrypt_text( self.base_pwd, old_pwd)) old_login = dumps( self.chifrator.encrypt_text(self.base_pwd, old_login)) str_execute = 'INSERT INTO {} (login, inet, pwd)'.format(group) str_execute += ' VALUES(?, "{}", ?)'.format(old_inet) self.sql.executeSqlCmdToBlobThree(self.base_addr, str_execute, (old_login, old_pwd)) self.GroupView() try: self.TableView() except: pass else: reply = QtGui.QMessageBox.question( self, 'Database do not create', 'Сreate the database before adding data to it', QtGui.QMessageBox.Yes, QtGui.QMessageBox.No) if reply == QtGui.QMessageBox.Yes: self.CreateBase() def duplicate_gr(self): logging.debug('Running duplicate data;') if self.base_addr != '' and self.base_addr is not None: try: group = self.ui.GroupView.currentItem().parent().text(0) except: return uid = self.ui.GroupView.currentItem().text(4) tmp = self.sql.selectDataFromTable( self.base_addr, ('*', '{}'.format(group), 'uid = {}'.format(uid))) tmp = tmp[0] old_pwd = self.chifrator.decrypt_text(self.base_pwd, loads(tmp[2])) old_login = self.chifrator.decrypt_text(self.base_pwd, loads(tmp[1])) old_inet = tmp[3] old_pwd = dumps(self.chifrator.encrypt_text( self.base_pwd, old_pwd)) old_login = dumps( self.chifrator.encrypt_text(self.base_pwd, old_login)) str_execute = 'INSERT INTO {} (login, inet, pwd)'.format(group) str_execute += ' VALUES(?, "{}", ?)'.format(old_inet) self.sql.executeSqlCmdToBlobThree(self.base_addr, str_execute, (old_login, old_pwd)) self.GroupView() try: self.TableView() except: pass else: reply = QtGui.QMessageBox.question( self, 'Database do not create', 'Сreate the database before adding data to it', QtGui.QMessageBox.Yes, QtGui.QMessageBox.No) if reply == QtGui.QMessageBox.Yes: self.CreateBase() def saveBaseAs(self): logging.debug('Running Save base as..;') if self.base_addr is not None and self.base_addr != '': if platform.system() == 'Linux': base_addr = self.file_dlg.getSaveFileName( self, 'Save Database as', '/home/', 'Password manager db(*.pwmdb);;') elif platform.system() == 'Windows': base_addr = self.file_dlg.getSaveFileName( self, 'Save Database as', 'C://', 'Password manager db(*.pwmdb);;') if base_addr is not None and base_addr != '': opn_base = open(self.base_addr, 'rb') opn_to = open(base_addr, 'wb') opn_to.write(opn_base.read()) opn_to.close() opn_base.close() QtGui.QMessageBox.information(self, 'Done', 'Database saved saved', QtGui.QMessageBox.Yes) else: self.CreateBase() def runPwdGenerator(self): dialog = PasswordGenerator(self) dialog.exec_() def runFindInBase(self): if self.base_addr != '' and self.base_addr is not None: dialog = FindInBase(self, self.base_pwd, self.base_addr) dialog.exec_() def blockWindow(self): if self.base_addr != '' and self.base_addr is not None: self.ui.DataView.setVisible(False) self.ui.GroupView.setVisible(False) dialog = BlockWindow(self, self.base_pwd, self.base_addr) dialog.exec_() if dialog.bool: self.unblockWindow() def unblockWindow(self): if self.base_addr != '' and self.base_addr is not None: self.ui.DataView.setVisible(True) self.ui.GroupView.setVisible(True) def addDataToBase(self): logging.debug('Running add data to table;') if self.base_addr != '' and self.base_addr is not None: dialog = AddData(self, self.base_addr, self.base_pwd, self.count) dialog.exec_() global count self.count = count for x in count.keys(): self.ingr_widgets[x] = {} self.GroupView() else: reply = QtGui.QMessageBox.question( self, 'Database do not create', 'Сreate the database before adding data to it', QtGui.QMessageBox.Yes, QtGui.QMessageBox.No) if reply == QtGui.QMessageBox.Yes: self.CreateBase() del reply def editData_Data(self): logging.debug('Running edit data;') if self.base_addr != '' and self.base_addr is not None: data = {'uid': None, 'group': None} group = self.groupData uid = self.ui.DataView.currentItem().text(4) data['uid'] = uid data['group'] = group dialog = UpdateData(self, self.base_addr, self.base_pwd, data) dialog.exec_() self.ui.GroupView.setCurrentItem(self.gr_widgets[0]) self.GroupView() try: self.TableView() except: pass else: reply = QtGui.QMessageBox.question( self, 'Database do not create', 'Сreate the database before adding data to it', QtGui.QMessageBox.Yes, QtGui.QMessageBox.No) if reply == QtGui.QMessageBox.Yes: self.CreateBase() def editData_Group(self): logging.debug('Running edit data;') if self.base_addr != '' and self.base_addr is not None: data = {'uid': None, 'group': None} try: group = self.ui.GroupView.currentItem().parent().text(0) except: return uid = self.ui.GroupView.currentItem().text(4) data['uid'] = uid data['group'] = group dialog = UpdateData(self, self.base_addr, self.base_pwd, data) dialog.exec_() self.GroupView() else: reply = QtGui.QMessageBox.question( self, 'Database do not create', 'Сreate the database before adding data to it', QtGui.QMessageBox.Yes, QtGui.QMessageBox.No) if reply == QtGui.QMessageBox.Yes: self.CreateBase() def delData_gr(self): logging.debug('Running del data;') if self.base_addr != '' and self.base_addr is not None: try: group = self.ui.GroupView.currentItem().parent().text(0) except: return uid = self.ui.GroupView.currentItem().text(4) self.sql.delDataInTable( self.base_addr, ('{}'.format(group), 'uid = {}'.format(uid))) self.GroupView() else: reply = QtGui.QMessageBox.question( self, 'Database do not create', 'Сreate the database before adding data to it', QtGui.QMessageBox.Yes, QtGui.QMessageBox.No) if reply == QtGui.QMessageBox.Yes: self.CreateBase() self.addDataToBase() def del_data_data(self): logging.debug('Running del data;') if self.base_addr != '' and self.base_addr is not None: group = self.groupData uid = self.ui.DataView.currentItem().text(4) self.sql.delDataInTable( self.base_addr, ('{}'.format(group), 'uid = {}'.format(uid))) self.GroupView() def runSettings(self): dialog = Settings(self) dialog.exec_() def delGroup(self): if self.base_addr != '' and self.base_addr is not None: try: group = self.ui.GroupView.currentItem().text(0) except: return global count if group in count.keys(): reply = QtGui.QMessageBox.question( self, 'Warning!!!', 'You will lose all data in this group.\n\ Are you sure to do it?', QtGui.QMessageBox.Yes, QtGui.QMessageBox.No) if reply == QtGui.QMessageBox.Yes: self.sql.deleteTableInBase(self.base_addr, group) self.sql.delDataInTable( self.base_addr, ('gr', 'grop = "{}"'.format(group))) del count[group] self.GroupView() else: return def about(self): dialog = About(self) dialog.exec_() def saveDatabse(self): if self.base_addr == '' or self.base_addr is None: self.CreateBase() else: pass def copyLogin_Group(self): logging.debug('Running copy login;') try: group = self.ui.GroupView.currentItem().parent().text(0) except: return uid = self.ui.GroupView.currentItem().text(4) txt = self.sql.selectDataFromTable( self.base_addr, ('login', '{}'.format(group), 'uid = {}'.format(uid))) login = self.chifrator.decrypt_text(self.base_pwd, loads(txt[0][0])) self.clipboard.clear() self.clipboard.setText(login) def copyLogin_Data(self): logging.debug('Running copy login;') group = self.groupData uid = self.ui.DataView.currentItem().text(4) login = self.sql.selectDataFromTable( self.base_addr, ('login', '{}'.format(group), 'uid = {}'.format(uid))) login = loads(login[0][0]) login = self.chifrator.decrypt_text(self.base_pwd, login) self.clipboard.clear() self.clipboard.setText(login) def copyPassword_Data(self): logging.debug('Running copy pwd;') group = self.groupData uid = self.ui.DataView.currentItem().text(4) pwd = self.sql.selectDataFromTable( self.base_addr, ('pwd', '{}'.format(group), 'uid = {}'.format(uid))) pwd = loads(pwd[0][0]) pwd = self.chifrator.decrypt_text(self.base_pwd, pwd) self.clipboard.clear() self.clipboard.setText(pwd) def copyPassword_Group(self): logging.debug('Running copy login;') try: group = self.ui.GroupView.currentItem().parent().text(0) except: return uid = self.ui.GroupView.currentItem().text(4) txt = self.sql.selectDataFromTable( self.base_addr, ('pwd', '{}'.format(group), 'uid = {}'.format(uid))) pwd = self.chifrator.decrypt_text(self.base_pwd, loads(txt[0][0])) self.clipboard.clear() self.clipboard.setText(pwd) def addGroup_gr(self): if self.base_addr is not None and self.base_addr != '': dialog = AddGroup(self, self.base_addr) dialog.exec_() self.GroupView() else: reply = QtGui.QMessageBox.question( self, 'Database do not create', 'Сreate the database before adding group to it', QtGui.QMessageBox.Yes, QtGui.QMessageBox.No) if reply == QtGui.QMessageBox.Yes: self.CreateBase() self.addGroup_gr() def closeBase(self): logging.debug('Running close base;') if self.base_addr is not None and self.base_addr != '': tmp_addr = tempfile.mktemp() opf = open(self.base_addr, 'rb') tmp = open(tmp_addr, 'wb') tmp.write(opf.read()) tmp.close() opf.close() self.base_chifrator.encrypt_file(self.base_pwd, tmp_addr, self.base_addr) self.ui.GroupView.clear() self.ui.DataView.clear() self.gr_widgets = [ QtGui.QTreeWidgetItem(self.ui.GroupView) for x in range(2) ] self.gr_widgets[0].setText(0, 'Internet') self.gr_widgets[1].setText(0, 'Email') self.iconInstaller() def closeEvent(self, event): logging.debug('CloseEvent ;') logs_list = list(os.walk('logs'))[0][2] for x in logs_list: x = 'logs/' + x if x[-3:] != 'log': continue opf = open(x, 'rt') if 'Eror' not in opf.read(): opf.close() os.remove(x) if self.base_addr is not None and self.base_addr != '': tmp_addr = tempfile.mktemp() opf = open(self.base_addr, 'rb') tmp = open(tmp_addr, 'wb') tmp.write(opf.read()) tmp.close() opf.close() self.base_chifrator.encrypt_file(self.base_pwd, tmp_addr, self.base_addr) self.clipboard.clear() event.accept()