def handle(self): try: self._model.checkActiveRepoIsNotNone() self._model.checkActiveUserIsNotNone() user = self._model.user dialogs = UserDialogsFacade() dialogExecOk, newPasswordHash = \ dialogs.execChangeUserPasswordDialog(user=user, gui=self._model.gui) if not dialogExecOk: return uow = self._model.repo.createUnitOfWork() try: command = ChangeUserPasswordCommand(user.login, newPasswordHash) uow.executeCommand(command) finally: uow.close() user.password = newPasswordHash stats.sendEvent("main_window.change_user_password") except Exception as ex: show_exc_info(self._model.gui, ex) else: self._emitHandlerSignal(HandlerSignals.STATUS_BAR_MESSAGE, self.tr("Operation completed."), STATUSBAR_TIMEOUT)
def handle(self): try: self._model.checkActiveRepoIsNotNone() self._model.checkActiveUserIsNotNone() user = self._model.user dialogs = UserDialogsFacade() dialogExecOk, newPasswordHash = \ dialogs.execChangeUserPasswordDialog(user=user, gui=self._model.gui) if not dialogExecOk: return uow = self._model.repo.createUnitOfWork() try: command = ChangeUserPasswordCommand(user.login, newPasswordHash) uow.executeCommand(command) finally: uow.close() user.password = newPasswordHash stats.sendEvent("main_window.change_user_password") except Exception as ex: show_exc_info(self._model.gui, ex) else: self._emitHandlerSignal(HandlerSignals.STATUS_BAR_MESSAGE, self.tr("Operation completed."), STATUSBAR_TIMEOUT)
def handle(self): try: dialogs = UserDialogsFacade() basePath = dialogs.getExistingDirectory( self._model.gui, self.tr("Choose a repository base path")) if not basePath: raise Exception( self. tr("You haven't chosen existent directory. Operation canceled." )) #QFileDialog returns forward slashes in windows! Because of this path should be normalized basePath = os.path.normpath(basePath) self._model.repo = RepoMgr(basePath) self._model.user = None self._model.loginRecentUser() stats.sendEvent("main_window.open_repo") except LoginError: self.__letUserLoginByHimself() except Exception as ex: show_exc_info(self._model.gui, ex)
def __letUserLoginByHimself(self): user = User() dialogs = UserDialogsFacade() if not dialogs.execUserDialog( user=user, gui=self._model.gui, dialogMode=UserDialog.LOGIN_MODE): return try: self._model.loginUser(user.login, user.password) except Exception as ex: show_exc_info(self._model.gui, ex)
def __letUserLoginByHimself(self): user = User() dialogs = UserDialogsFacade() if not dialogs.execUserDialog(user=user, gui=self._model.gui, dialogMode=UserDialog.LOGIN_MODE): return try: self._model.loginUser(user.login, user.password) except Exception as ex: show_exc_info(self._model.gui, ex)
def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.ui = Ui_MainWindow() self.ui.setupUi(self) self.setCentralWidget(None) # TODO: updateManager should be moved to MainWindowModel self.__widgetsUpdateManager = WidgetsUpdateManager() self.__dialogs = UserDialogsFacade() self._model = MainWindowModel(mainWindow=self, repo=None, user=None, guiUpdater=self.__widgetsUpdateManager) self.__favoriteReposDynamicQActions = [] self._model.connectMenuActionsWithHandlers() self.__initFavoriteReposMenu() self.__initStatusBar() self.__widgetsUpdateManager.subscribe( self, self.__rebuildFavoriteReposMenu, [HandlerSignals.LIST_OF_FAVORITE_REPOS_CHANGED]) self.__widgetsUpdateManager.subscribe( self, self.showMessageOnStatusBar, [HandlerSignals.STATUS_BAR_MESSAGE]) self.__restoreGuiState()
def handle(self): try: self._model.checkActiveRepoIsNotNone() user = User() dialogs = UserDialogsFacade() if not dialogs.execUserDialog( user=user, gui=self._model.gui, dialogMode=UserDialog.LOGIN_MODE): return self._model.loginUser(user.login, user.password) stats.sendEvent("main_window.login_user") except Exception as ex: show_exc_info(self._model.gui, ex)
def handle(self): try: self._model.checkActiveRepoIsNotNone() user = User() dialogs = UserDialogsFacade() if not dialogs.execUserDialog(user=user, gui=self._model.gui, dialogMode=UserDialog.LOGIN_MODE): return self._model.loginUser(user.login, user.password) stats.sendEvent("main_window.login_user") except Exception as ex: show_exc_info(self._model.gui, ex)
def __editSingleItem(self, itemId): uow = self.repo.createUnitOfWork() try: item = uow.executeCommand(GetExpungedItemCommand(itemId)) dialogs = UserDialogsFacade() if not dialogs.execItemDialog( item=item, gui=self, repo=self.repo, dialogMode=ItemDialog.EDIT_MODE): self.ui.statusbar.showMessage(self.tr("Operation cancelled."), consts.STATUSBAR_TIMEOUT) return srcAbsPath = item.data_ref.srcAbsPath if item.data_ref is not None else None dstRelPath = item.data_ref.dstRelPath if item.data_ref is not None else None cmd = UpdateExistingItemCommand(item, srcAbsPath, dstRelPath, self.user_login) uow.executeCommand(cmd) self.ui.statusbar.showMessage(self.tr("Operation completed."), consts.STATUSBAR_TIMEOUT) finally: uow.close()
def handle(self): try: dialogs = UserDialogsFacade() basePath = dialogs.getExistingDirectory( self._model.gui, self.tr("Choose a base path for new repository")) if not basePath: raise MsgException( self.tr("You haven't chosen existent directory. Operation canceled.")) # QFileDialog returns forward slashes in windows! Because of this # the path should be normalized basePath = os.path.normpath(basePath) self._model.repo = RepoMgr.createNewRepo(basePath) self._model.user = self.__createDefaultUser() stats.sendEvent("main_window.create_repo") except Exception as ex: show_exc_info(self._model.gui, ex)
def askUserAboutSendStatistics(mainWindow): title = "Reggata" question = QCoreApplication.translate("main", "Do you want to help make Reggata better by automatically sending usage statistics?", None, QCoreApplication.UnicodeUTF8) res = UserDialogsFacade().execGetYesNoAnswerDialog(mainWindow, title, question) sendStatistics = None if res == QtGui.QMessageBox.Yes: sendStatistics = True elif res == QtGui.QMessageBox.No: sendStatistics = False if sendStatistics is not None: stats.setSendStatistics(sendStatistics)
def handle(self): try: self._model.checkActiveRepoIsNotNone() user = User() dialogs = UserDialogsFacade() if not dialogs.execUserDialog( user=user, gui=self._model.gui, dialogMode=UserDialog.CREATE_MODE): return uow = self._model.repo.createUnitOfWork() try: uow.executeCommand(SaveNewUserCommand(user)) self._model.user = user finally: uow.close() stats.sendEvent("main_window.create_user") except Exception as ex: show_exc_info(self._model.gui, ex)
def __editSingleItem(self, itemId): uow = self.repo.createUnitOfWork() try: item = uow.executeCommand(GetExpungedItemCommand(itemId)) dialogs = UserDialogsFacade() if not dialogs.execItemDialog(item=item, gui=self, repo=self.repo, dialogMode=ItemDialog.EDIT_MODE): self.ui.statusbar.showMessage(self.tr("Operation cancelled."), consts.STATUSBAR_TIMEOUT) return srcAbsPath = item.data_ref.srcAbsPath if item.data_ref is not None else None dstRelPath = item.data_ref.dstRelPath if item.data_ref is not None else None cmd = UpdateExistingItemCommand(item, srcAbsPath, dstRelPath, self.user_login) uow.executeCommand(cmd) self.ui.statusbar.showMessage(self.tr("Operation completed."), consts.STATUSBAR_TIMEOUT) finally: uow.close()
def handle(self): try: self._model.checkActiveRepoIsNotNone() user = User() dialogs = UserDialogsFacade() if not dialogs.execUserDialog(user=user, gui=self._model.gui, dialogMode=UserDialog.CREATE_MODE): return uow = self._model.repo.createUnitOfWork() try: uow.executeCommand(SaveNewUserCommand(user)) self._model.user = user finally: uow.close() stats.sendEvent("main_window.create_user") except Exception as ex: show_exc_info(self._model.gui, ex)
def handle(self): try: dialogs = UserDialogsFacade() basePath = dialogs.getExistingDirectory( self._model.gui, self.tr("Choose a base path for new repository")) if not basePath: raise MsgException( self. tr("You haven't chosen existent directory. Operation canceled." )) # QFileDialog returns forward slashes in windows! Because of this # the path should be normalized basePath = os.path.normpath(basePath) self._model.repo = RepoMgr.createNewRepo(basePath) self._model.user = self.__createDefaultUser() stats.sendEvent("main_window.create_repo") except Exception as ex: show_exc_info(self._model.gui, ex)
def handle(self): try: dialogs = UserDialogsFacade() basePath = dialogs.getExistingDirectory( self._model.gui, self.tr("Choose a repository base path")) if not basePath: raise Exception( self.tr("You haven't chosen existent directory. Operation canceled.")) #QFileDialog returns forward slashes in windows! Because of this path should be normalized basePath = os.path.normpath(basePath) self._model.repo = RepoMgr(basePath) self._model.user = None self._model.loginRecentUser() stats.sendEvent("main_window.open_repo") except LoginError: self.__letUserLoginByHimself() except Exception as ex: show_exc_info(self._model.gui, ex)