Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
 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)
Ejemplo n.º 5
0
 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)
Ejemplo n.º 6
0
    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()
Ejemplo n.º 7
0
    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)
Ejemplo n.º 8
0
    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)
Ejemplo n.º 9
0
    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()
Ejemplo n.º 10
0
    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)
Ejemplo n.º 11
0
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)
Ejemplo n.º 12
0
    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)
Ejemplo n.º 13
0
    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()
Ejemplo n.º 14
0
    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)
Ejemplo n.º 15
0
    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)
Ejemplo n.º 16
0
    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)