2021-09-12 02:08:15 -04:00
|
|
|
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',
|
|
|
|
)
|
|
|
|
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()
|
|
|
|
|
2021-10-04 20:04:05 -04:00
|
|
|
def _ceoframe_on_reset(self):
|
|
|
|
super()._ceoframe_on_reset()
|
|
|
|
self._username.value = None
|
|
|
|
|
2021-09-12 02:08:15 -04:00
|
|
|
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'
|