from asciimatics.widgets import Layout, Text from ...utils import http_post, http_get, defer from ..CeoFrame import CeoFrame class CreateDatabaseView(CeoFrame): def __init__(self, screen, width, height, model): super().__init__( screen, height, width, model, 'CreateDatabase', save_data=True, ) layout = Layout([100], fill_frame=True) self.add_layout(layout) self._username = Text("Username:", "uid") layout.add_widget(self._username) self.add_buttons( back_btn=True, next_scene='Confirm', on_next=self._next) self.fix() def _target(self): username = self._username.value db_type = self._model.db_type resp = http_get(f'/api/members/{username}') if not resp.ok: return resp user_dict = resp.json() self._model.user_dict = user_dict return http_post(f'/api/db/{db_type}/{username}') def _next(self): username = self._username.value if not username: return if self._model.db_type == 'mysql': db_type_name = 'MySQL' else: db_type_name = 'PostgreSQL' self._model.confirm_lines = [ f'Are you sure you want to create a {db_type_name} database for {username}?', ] self._model.deferred_req = defer(self._target) self._model.result_view_name = 'CreateDatabaseResult'