def __init__(self):
     super().__init__()
     self.start_screen = Ui_startscreen()
Example #2
0
 def __init__(self):
     super().__init__()
     self.start_screen = Ui_startscreen()
class StartScreen(QDialog):
    """
    This class is a wrapper for the Ui_startscreen and its controls
    """

    done_logging_in_signal = pyqtSignal()
    quit_application_signal = pyqtSignal()

    def __init__(self):
        super().__init__()
        self.start_screen = Ui_startscreen()

    def log_in(self):
        #self.start_screen.logInButton.setDisabled(True)  # Doesn't update until the asyncio call below returns
        logging.debug('attempting to log in')
        username = self.start_screen.usernameEdit.text().strip()
        password = self.start_screen.passwordEdit.text().strip()
        auth_client = AuthClient()
        user = None
        try:
            user = session.query(User).one()
        except NoResultFound:
            pass

        try:
            user = asyncio.get_event_loop().run_until_complete(
                auth_client.log_in(user=user,
                                   username=username,
                                   password=password))
        except AuthError as e:
            logging.exception(e.message)
            QMessageBox.warning(None, 'Log in Failed', e.message)
            #self.start_screen.logInButton.setEnabled(True)
        else:
            logging.info('Successfully logged in user: {}'.format(user))
            self.close()

    def setup_slots(self):
        logging.debug('setting up start_screen slots')
        self.start_screen.logInButton.clicked.connect(self.log_in)

    def open_window(self):
        if not self.isVisible():
            if not self._has_UI():
                self.start_screen.setupUi(self)
                self.setup_slots()
            try:
                # 'Remember me' functionality
                username = session.query(User).one().osf_login
            except (NoResultFound, AttributeError):
                self.start_screen.usernameEdit.setFocus()
            else:
                self.start_screen.usernameEdit.setText(username)
                self.start_screen.passwordEdit.setFocus()
            #self.start_screen.logInButton.setEnabled(True)
            self.show()

    def _user_logged_in(self):
        try:
            session.query(User).filter(User.logged_in).one()
            return True
        except:
            return False

    def _has_UI(self):
        try:
            should_exist = self.start_screen.usernameEdit
        except AttributeError:
            return False
        else:
            return True

    def closeEvent(self, event):
        """ If closeEvent occured by us, then it means user is properly logged in. Thus close.
            Else, event is by user without logging in. THUS, quit entire application.
        """
        if self._user_logged_in():
            self.done_logging_in_signal.emit()
        else:
            self.quit_application_signal.emit()

        self.start_screen.usernameEdit.setText('')
        self.start_screen.passwordEdit.setText('')
        event.accept()
Example #4
0
class StartScreen(QDialog):
    """
    This class is a wrapper for the Ui_startscreen and its controls
    """

    done_logging_in_signal = pyqtSignal()
    quit_application_signal = pyqtSignal()

    def __init__(self):
        super().__init__()
        self.start_screen = Ui_startscreen()

    def log_in(self):
        #self.start_screen.logInButton.setDisabled(True)  # Doesn't update until the asyncio call below returns
        logging.debug('attempting to log in')
        username = self.start_screen.usernameEdit.text().strip()
        password = self.start_screen.passwordEdit.text().strip()
        auth_client = AuthClient()
        user = None
        try:
            user = session.query(User).one()
        except NoResultFound:
            pass

        try:
            user = asyncio.get_event_loop().run_until_complete(auth_client.log_in(user=user, username=username, password=password))
        except AuthError as e:
            logging.exception(e.message)
            QMessageBox.warning(
                None,
                'Log in Failed',
                e.message
            )
            #self.start_screen.logInButton.setEnabled(True)
        else:
            logging.info('Successfully logged in user: {}'.format(user))
            self.close()

    def setup_slots(self):
        logging.debug('setting up start_screen slots')
        self.start_screen.logInButton.clicked.connect(self.log_in)

    def open_window(self):
        if not self.isVisible():
            if not self._has_UI():
                self.start_screen.setupUi(self)
                self.setup_slots()
            try:
                # 'Remember me' functionality
                username = session.query(User).one().osf_login
            except (NoResultFound, AttributeError):
                self.start_screen.usernameEdit.setFocus()
            else:
                self.start_screen.usernameEdit.setText(username)
                self.start_screen.passwordEdit.setFocus()
            #self.start_screen.logInButton.setEnabled(True)
            self.show()

    def _user_logged_in(self):
        try:
            session.query(User).filter(User.logged_in).one()
            return True
        except:
            return False

    def _has_UI(self):
        try:
            should_exist = self.start_screen.usernameEdit
        except AttributeError:
            return False
        else:
            return True

    def closeEvent(self, event):
        """ If closeEvent occured by us, then it means user is properly logged in. Thus close.
            Else, event is by user without logging in. THUS, quit entire application.
        """
        if self._user_logged_in():
            self.done_logging_in_signal.emit()
        else:
            self.quit_application_signal.emit()

        self.start_screen.usernameEdit.setText('')
        self.start_screen.passwordEdit.setText('')
        event.accept()