From c7a760791a6e9c168f5ff73dc614853bfdc89d0f Mon Sep 17 00:00:00 2001 From: ysakamoto Date: Thu, 2 Apr 2015 02:11:03 -0500 Subject: [PATCH] prompt to log out/in when logged in/out --- rtv/curses_helpers.py | 4 +++- rtv/page.py | 55 ++++++++++++++++++++++++------------------- 2 files changed, 34 insertions(+), 25 deletions(-) diff --git a/rtv/curses_helpers.py b/rtv/curses_helpers.py index f9a2085..ee9fdaf 100644 --- a/rtv/curses_helpers.py +++ b/rtv/curses_helpers.py @@ -52,12 +52,14 @@ def show_notification(stdscr, message): for index, line in enumerate(message, start=1): window.addstr(index, 1, line) window.refresh() - stdscr.getch() + ch = stdscr.getch() window.clear() window = None stdscr.refresh() + return ch + def show_help(stdscr): """ diff --git a/rtv/page.py b/rtv/page.py index 0cda610..65e21c3 100644 --- a/rtv/page.py +++ b/rtv/page.py @@ -229,34 +229,41 @@ class BasePage(object): @BaseController.register('u') def login(self): - username = self.prompt_input('Enter username: ') - password = self.prompt_input('Enter password: ', hide=True) + """ + Prompt to log out if logged in. + Prompt to log in if looged out. + """ + + if self.reddit.is_logged_in(): + ch = show_notification(self.stdscr, ["Log out? (y/N)"]) + + if ch == 121: # 'y' + self.reddit.clear_authentication() + show_notification(self.stdscr, + ['Logged out']) + else: + curses.flash() - if username == '' or username is None: - self.reddit.clear_authentication() - show_notification(self.stdscr, - ['Logged out']) - return - elif password == '' or password is None: - curses.flash() - return - - try: - curses.endwin() - print('Connecting...') - _reddit = praw.Reddit(user_agent=AGENT) - _reddit.login(username, password) - curses.doupdate() - except praw.errors.InvalidUserPass: - show_notification(self.stdscr, - ['Invalid password for username: {}'.format(username)]) else: - self.reddit.login(username, password) - show_notification(self.stdscr, - ['Successfully logged in as: {}'.format(username)]) + username = self.prompt_input('Enter username: ') + password = self.prompt_input('Enter password: ', hide=True) + + if (username == '' or username is None) \ + or (password == '' or password is None): + curses.flash() + return + + try: + self.reddit.login(username, password) + except praw.errors.InvalidUserPass: + show_notification(self.stdscr, + ['Invalid password for username: {}'.format(username)]) + else: + show_notification(self.stdscr, + ['Successfully logged in as: {}'.format(username)]) return - + def prompt_input(self, prompt, hide=False): """Prompt the user for input""" attr = curses.A_BOLD | Color.CYAN