Fix the bug where leaving the program open makes us always fail due to being logged out.

Also, some major refactoring to make the gui code cleaner.
This commit is contained in:
Anna Rose Wiggins 2016-01-28 11:52:09 -05:00
parent 4fdd7ba705
commit 0c2626ee5b
4 changed files with 191 additions and 134 deletions

View file

@ -1,9 +1,8 @@
#!/usr/bin/python
import actions
import argparse
from datetime import datetime
from elite_api import companion
from elite_api.inara import InaraSession
import gui
import Tkinter as tk
import utils
@ -12,63 +11,12 @@ arg_parser.add_argument("--no-gui",
help="Just update and report to the command line.",
action="store_false", dest="gui")
def do_logins(settings):
inara_session = InaraSession(settings.get('inara', 'username'), settings.get('inara', 'password'))
companion.login(settings.get('ed_companion', 'username'), settings.get('ed_companion', 'password'))
return inara_session
def update_inara(inara_session):
data = companion.get_data()
inara_session.update_credits(data['commander']['credits'])
inara_session.update_location(data['lastSystem']['name'])
class UpdateWindow(object):
def __init__(self, parent, settings):
self.parent = parent
self.settings = settings
self.frame = tk.Frame(parent)
self.frame.pack(expand=True, fill=tk.BOTH)
self.message = tk.StringVar()
self.message.set("Click Update to update!")
message_label = tk.Label(self.frame, textvariable=self.message)
message_label.grid(columnspan=2, padx=20, pady=20)
self.update_button = tk.Button(self.frame, text="Update", height=2, width=4,
command=self._update_inara)
self.update_button.grid(row=1, column=0, pady=10)
config_button = tk.Button(self.frame, text="Config", height=1, width=2,
command=self._update_settings)
config_button.grid(row=1, column=1, sticky=tk.E+tk.S, padx=5, pady=5)
self._try_login()
def _update_inara(self):
self.message.set("Updating, please wait...")
self.parent.update()
try:
update_inara(self.session)
self.message.set("Update successful! (Last update: %s)" %
datetime.now().isoformat(' ')[:16])
except:
self.message.set("Error updating! Double-check your config,\nor try again later.")
def _update_settings(self):
self.settings = utils.update_settings(True, self.parent, self.settings)
self._try_login()
def _try_login(self):
try:
self.session = do_logins(self.settings)
self.update_button['state'] = tk.NORMAL
except:
self.update_button['state'] = tk.DISABLED
self.message.set("Error logging in. Double-check your config!")
def _settings_prompt_cli(settings):
settings.set('ed_companion', 'username', raw_input("Elite Username (email address): "))
settings.set('ed_companion', 'password', raw_input("Elite Password: "))
settings.set('inara', 'username', raw_input("Inara Username: "))
settings.set('inara', 'password', raw_input("Inara Password: "))
print "To change these settings later, edit " + filename
def main():
args = arg_parser.parse_args()
@ -76,13 +24,16 @@ def main():
if args.gui:
root = tk.Tk()
root.wm_title("Inara Updater")
settings = utils.get_settings(True, root)
app = UpdateWindow(root, settings)
settings = utils.get_settings()
app = gui.UpdateWindow(root, settings)
root.mainloop()
else:
settings = utils.get_settings(False)
inara_session = do_logins(settings)
update_inara(inara_session)
settings = utils.get_settings()
if settings is None:
util.update_settings(_settings_prompt_cli, settings)
inara_session = actions.do_logins(settings)
actions.update_inara(inara_session)
print("Inara updated!")
if __name__ == '__main__':