From 94db336aa6b18274f0e7af2cbd73fa4307b830b1 Mon Sep 17 00:00:00 2001 From: Jonathan Harris Date: Mon, 23 Jan 2017 01:49:30 +0000 Subject: [PATCH] Obtain Cmdr from API for migration --- EDMarketConnector.py | 35 ++++++++++++++++++++--------------- prefs.py | 22 ++++++++++++---------- 2 files changed, 32 insertions(+), 25 deletions(-) diff --git a/EDMarketConnector.py b/EDMarketConnector.py index a2083edb..c29139bc 100755 --- a/EDMarketConnector.py +++ b/EDMarketConnector.py @@ -275,6 +275,15 @@ class AppWindow: if not getattr(sys, 'frozen', False): self.updater.checkForUpdates() # Sparkle / WinSparkle does this automatically for packaged apps + # Migration from <= 2.25 + if not config.get('cmdrs') and config.get('username') and config.get('password'): + try: + self.session.login(config.get('username'), config.get('password')) + data = self.session.query() + prefs.migrate(data['commander']['name']) + except: + if __debug__: print_exc() + self.postprefs() # Companion login happens in callback from monitor # Try to obtain exclusive lock on journal cache, even if we don't need it yet @@ -332,7 +341,7 @@ class AppWindow: self.button['state'] = self.theme_button['state'] = tk.DISABLED self.w.update_idletasks() try: - if not monitor.cmdr or monitor.cmdr not in config.get('cmdrs'): + if not monitor.cmdr or not config.get('cmdrs') or monitor.cmdr not in config.get('cmdrs'): raise companion.CredentialsError() idx = config.get('cmdrs').index(monitor.cmdr) self.session.login(config.get('fdev_usernames')[idx], config.get('fdev_passwords')[idx]) @@ -563,18 +572,6 @@ class AppWindow: self.edsm.link(monitor.system) self.w.update_idletasks() - # New Cmdr? - if entry['event'] in [None, 'NewCommander', 'LoadGame'] and monitor.cmdr and not monitor.is_beta: - prefs.migrate(monitor.cmdr) # migration from <= 2.25 - if config.get('cmdrs') and monitor.cmdr in config.get('cmdrs'): - prefs.make_current(monitor.cmdr) - elif config.get('cmdrs') and entry['event'] == 'NewCommander': - cmdrs = config.get('cmdrs') - cmdrs[0] = monitor.cmdr # New Cmdr uses same credentials as old - config.set('cmdrs', cmdrs) - else: - prefs.PreferencesDialog(self.w, self.postprefs) # First run or new Cmdr - # Send interesting events to EDSM if config.getint('output') & config.OUT_SYS_EDSM and not monitor.is_beta: self.status['text'] = _('Sending data to EDSM...') @@ -617,8 +614,16 @@ class AppWindow: self.edsmpoll() # Companion login - do this after EDSM so any EDSM errors don't mask login errors - if entry['event'] in [None, 'LoadGame'] and monitor.cmdr and not monitor.is_beta: - self.login() + if entry['event'] in [None, 'NewCommander', 'LoadGame'] and monitor.cmdr and not monitor.is_beta: + if config.get('cmdrs') and monitor.cmdr in config.get('cmdrs'): + prefs.make_current(monitor.cmdr) + self.login() + elif config.get('cmdrs') and entry['event'] == 'NewCommander': + cmdrs = config.get('cmdrs') + cmdrs[0] = monitor.cmdr # New Cmdr uses same credentials as old + config.set('cmdrs', cmdrs) + else: + prefs.PreferencesDialog(self.w, self.postprefs) # First run or failed migration if not entry['event'] or not monitor.mode: return # Startup or in CQC diff --git a/prefs.py b/prefs.py index 9510b21a..0db73e89 100644 --- a/prefs.py +++ b/prefs.py @@ -341,24 +341,26 @@ class PreferencesDialog(tk.Toplevel): self.cmdr_text['text'] = self.edsm_cmdr_text['text'] = monitor.cmdr and monitor.is_beta and ('%s [Beta]' % monitor.cmdr) or monitor.cmdr or _('None') # No hotkey/shortcut currently defined if self.cmdr != monitor.cmdr: # Cmdr has changed - update settings - if not monitor.is_beta: - migrate(monitor.cmdr) # migration from <= 2.25 - if monitor.cmdr and config.get('cmdrs') and monitor.cmdr in config.get('cmdrs'): - config_idx = config.get('cmdrs').index(monitor.cmdr) - else: - config_idx = None self.username['state'] = tk.NORMAL self.username.delete(0, tk.END) - self.username.insert(0, config_idx is not None and config.get('fdev_usernames')[config_idx] or '') self.password['state'] = tk.NORMAL self.password.delete(0, tk.END) - self.password.insert(0, config_idx is not None and config.get('fdev_passwords')[config_idx] or '') self.edsm_user['state'] = tk.NORMAL self.edsm_user.delete(0, tk.END) - self.edsm_user.insert(0, config_idx is not None and config.get('edsm_usernames')[config_idx] or '') self.edsm_apikey['state'] = tk.NORMAL self.edsm_apikey.delete(0, tk.END) - self.edsm_apikey.insert(0, config_idx is not None and config.get('edsm_apikeys')[config_idx] or '') + if monitor.cmdr and config.get('cmdrs') and monitor.cmdr in config.get('cmdrs'): + config_idx = config.get('cmdrs').index(monitor.cmdr) + self.username.insert(0, config.get('fdev_usernames')[config_idx] or '') + self.password.insert(0, config.get('fdev_passwords')[config_idx] or '') + self.edsm_user.insert(0, config.get('edsm_usernames')[config_idx] or '') + self.edsm_apikey.insert(0, config.get('edsm_apikeys')[config_idx] or '') + elif monitor.cmdr and not config.get('cmdrs') and config.get('username') and config.get('password'): + # migration from <= 2.25 + self.username.insert(0, config.get('username')[config_idx] or '') + self.password.insert(0, config.get('password')[config_idx] or '') + self.edsm_user.insert(0,config.get('edsm_cmdrname')[config_idx] or '') + self.edsm_apikey.insert(0, config.get('edsm_apikey')[config_idx] or '') self.cmdr = monitor.cmdr cmdr_state = not monitor.is_beta and monitor.cmdr and tk.NORMAL or tk.DISABLED