30 lines
875 B
Python
30 lines
875 B
Python
|
from threading import Thread
|
||
|
|
||
|
from ...utils import http_get
|
||
|
from .Controller import Controller
|
||
|
import ceo.tui.utils as tui_utils
|
||
|
|
||
|
|
||
|
class GetPositionsController(Controller):
|
||
|
def __init__(self, model, app):
|
||
|
super().__init__(model, app)
|
||
|
|
||
|
def lookup_positions_async(self):
|
||
|
self.view.flash_text.set_text('Looking up positions...')
|
||
|
Thread(target=self.lookup_positions_sync).start()
|
||
|
|
||
|
def lookup_positions_sync(self):
|
||
|
resp = http_get('/api/positions')
|
||
|
try:
|
||
|
positions = tui_utils.handle_sync_response(resp, self)
|
||
|
except Controller.RequestFailed:
|
||
|
return
|
||
|
for pos, username in positions.items():
|
||
|
self.model.positions[pos] = username
|
||
|
|
||
|
def target():
|
||
|
self.view.flash_text.set_text('')
|
||
|
self.view.update_fields()
|
||
|
|
||
|
self.app.run_in_main_loop(target)
|