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:
parent
4fdd7ba705
commit
0c2626ee5b
4 changed files with 191 additions and 134 deletions
|
@ -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__':
|
||||
|
|
Reference in a new issue