1
0
mirror of https://github.com/EDCD/EDMarketConnector.git synced 2025-04-21 11:27:38 +03:00

Carry on with station update after EDSM error.

This commit is contained in:
Jonathan Harris 2015-11-17 23:41:50 +00:00
parent b799494e3c
commit 62c85d5417

@ -241,13 +241,10 @@ class AppWindow:
# Validation
if not data.get('commander') or not data['commander'].get('name','').strip():
self.status['text'] = _("Who are you?!") # Shouldn't happen
if play_sound: hotkeymgr.play_bad()
elif not data.get('lastSystem') or not data['lastSystem'].get('name','').strip() or not data.get('lastStarport') or not data['lastStarport'].get('name','').strip():
self.status['text'] = _("Where are you?!") # Shouldn't happen
if play_sound: hotkeymgr.play_bad()
elif not data.get('ship') or not data['ship'].get('modules') or not data['ship'].get('name','').strip():
self.status['text'] = _("What are you flying?!") # Shouldn't happen
if play_sound: hotkeymgr.play_bad()
else:
if __debug__: # Recording
@ -257,6 +254,7 @@ class AppWindow:
self.cmdr['text'] = data.get('commander') and data.get('commander').get('name') or ''
self.system['text'] = data.get('lastSystem') and data.get('lastSystem').get('name') or ''
self.station['text'] = data.get('commander') and data.get('commander').get('docked') and data.get('lastStarport') and data.get('lastStarport').get('name') or (EDDB.system(self.system['text']) and self.STATION_UNDOCKED or '')
self.status['text'] = ''
self.edit_menu.entryconfigure(_('Copy'), state=tk.NORMAL)
# stuff we can do when not docked
@ -266,32 +264,40 @@ class AppWindow:
coriolis.export(data)
if config.getint('output') & config.OUT_LOG_FILE:
flightlog.export(data)
if config.getint('output') & config.OUT_LOG_EDSM:
self.status['text'] = _('Sending data to EDSM...')
self.w.update_idletasks()
edsm.export(data, lambda:self.edsm.lookup(self.system['text'], EDDB.system(self.system['text']))) # Do EDSM lookup during EDSM export
else:
self.edsm.start_lookup(self.system['text'], EDDB.system(self.system['text']))
self.edsmpoll()
try:
# Catch any EDSM errors here so that they don't prevent station update
if config.getint('output') & config.OUT_LOG_EDSM:
self.status['text'] = _('Sending data to EDSM...')
self.w.update_idletasks()
edsm.export(data, lambda:self.edsm.lookup(self.system['text'], EDDB.system(self.system['text']))) # Do EDSM lookup during EDSM export
else:
self.edsm.start_lookup(self.system['text'], EDDB.system(self.system['text']))
self.status['text'] = ''
self.edsmpoll()
except Exception as e:
if __debug__: print_exc()
self.status['text'] = unicode(e)
if not (config.getint('output') & (config.OUT_CSV|config.OUT_TD|config.OUT_BPC|config.OUT_EDDN)):
# no station data requested - we're done
self.status['text'] = strftime(_('Last updated at {HH}:{MM}:{SS}').format(HH='%H', MM='%M', SS='%S').encode('utf-8'), localtime(querytime)).decode('utf-8')
pass
elif not data['commander'].get('docked'):
self.status['text'] = _("You're not docked at a station!")
# signal as error because the user might actually be docked but the server hosting the Companion API hasn't caught up
if play_sound: hotkeymgr.play_bad()
if not self.status['text']:
self.status['text'] = _("You're not docked at a station!")
else:
# Finally - the data looks sane and we're docked at a station
(station_id, has_shipyard, has_outfitting) = EDDB.station(self.system['text'], self.station['text'])
if (config.getint('output') & config.OUT_EDDN) and not data['lastStarport'].get('commodities') and not has_outfitting and not has_shipyard:
self.status['text'] = _("Station doesn't have anything!")
if not self.status['text']:
self.status['text'] = _("Station doesn't have anything!")
elif not (config.getint('output') & config.OUT_EDDN) and not data['lastStarport'].get('commodities'):
self.status['text'] = _("Station doesn't have a market!")
if not self.status['text']:
self.status['text'] = _("Station doesn't have a market!")
else:
if data['lastStarport'].get('commodities'):
@ -306,7 +312,9 @@ class AppWindow:
bpc.export(data, False)
if config.getint('output') & config.OUT_EDDN:
self.status['text'] = _('Sending data to EDDN...')
old_status = self.status['text']
if not old_status:
self.status['text'] = _('Sending data to EDDN...')
self.w.update_idletasks()
eddn.export_commodities(data)
if has_outfitting:
@ -324,8 +332,8 @@ class AppWindow:
self.w.after(int(SERVER_RETRY * 1000), self.retry_for_shipyard)
elif __debug__ and data['lastStarport'].get('ships'):
print 'Spurious shipyard!'
self.status['text'] = strftime(_('Last updated at {HH}:{MM}:{SS}').format(HH='%H', MM='%M', SS='%S').encode('utf-8'), localtime(querytime)).decode('utf-8')
if not old_status:
self.status['text'] = ''
except companion.VerificationRequired:
return prefs.AuthenticationDialog(self.w, self.verify)
@ -334,7 +342,6 @@ class AppWindow:
except companion.ServerError as e:
if retrying:
self.status['text'] = unicode(e)
if play_sound: hotkeymgr.play_bad()
else:
# Retry once if Companion server is unresponsive
self.w.after(int(SERVER_RETRY * 1000), lambda:self.getandsend(event, True))
@ -343,17 +350,19 @@ class AppWindow:
except requests.exceptions.ConnectionError as e:
if __debug__: print_exc()
self.status['text'] = _("Error: Can't connect to EDDN")
if play_sound: hotkeymgr.play_bad()
except requests.exceptions.Timeout as e:
if __debug__: print_exc()
self.status['text'] = _("Error: Connection to EDDN timed out")
if play_sound: hotkeymgr.play_bad()
except Exception as e:
if __debug__: print_exc()
self.status['text'] = unicode(e)
if play_sound: hotkeymgr.play_bad()
if not self.status['text']: # no errors
self.status['text'] = strftime(_('Last updated at {HH}:{MM}:{SS}').format(HH='%H', MM='%M', SS='%S').encode('utf-8'), localtime(querytime)).decode('utf-8')
elif play_sound:
hotkeymgr.play_bad()
self.holdofftime = querytime + companion.holdoff
self.cooldown()