pyceo/ceo/tui/Model.py

99 lines
2.8 KiB
Python
Raw Normal View History

2021-09-05 18:48:20 -04:00
from copy import deepcopy
2021-09-06 12:40:05 -04:00
2021-08-28 23:09:02 -04:00
class Model:
2021-09-05 18:48:20 -04:00
"""A convenient place to store View data persistently."""
2021-08-28 23:09:02 -04:00
def __init__(self):
self.screen = None
2021-09-06 22:29:53 -04:00
self.views = []
2021-08-28 23:09:02 -04:00
self.title = None
self.scene_stack = []
2021-09-06 23:03:30 -04:00
self.result_view_name = None
2021-09-17 23:45:45 -04:00
self.txn_view_name = None
2021-09-06 12:40:05 -04:00
self.error_message = None
2021-09-05 18:48:20 -04:00
# view-specific data, to be used when e.g. resizing the window
self._initial_viewdata = {
2021-09-06 12:40:05 -04:00
'AddUser': {
2021-09-05 18:48:20 -04:00
'uid': '',
'cn': '',
'program': '',
'forwarding_address': '',
'num_terms': '1',
},
2021-09-06 12:40:05 -04:00
'RenewUser': {
'uid': '',
'num_terms': '1',
},
'Transaction': {
2021-09-05 18:48:20 -04:00
'op_layout': None,
'msg_layout': None,
'labels': {},
'status': 'not started',
},
2021-09-06 22:29:53 -04:00
'GetUser': {
'uid': '',
},
2021-09-06 23:03:30 -04:00
'ResetPassword': {
'uid': '',
},
'ChangeLoginShell': {
'uid': '',
'login_shell': '',
},
'SetForwardingAddresses': {
2021-09-07 01:02:34 -04:00
'uid': '',
'forwarding_addresses': [''],
},
'AddGroup': {
'cn': '',
'description': '',
},
2021-09-07 01:22:20 -04:00
'GetGroup': {
'cn': '',
},
2021-09-07 22:59:56 -04:00
'AddMemberToGroup': {
'cn': '',
'uid': '',
2021-09-07 23:20:51 -04:00
'subscribe': True,
},
'RemoveMemberFromGroup': {
'cn': '',
'uid': '',
'unsubscribe': True,
2021-09-07 22:59:56 -04:00
},
2021-09-12 02:08:15 -04:00
'CreateDatabase': {
'uid': '',
},
'ResetDatabasePassword': {
'uid': '',
},
2021-09-05 18:48:20 -04:00
}
self.viewdata = deepcopy(self._initial_viewdata)
# data which is shared between multiple views
2021-09-06 12:40:05 -04:00
self.is_club_rep = False
2021-08-28 23:09:02 -04:00
self.confirm_lines = None
self.operations = None
2021-09-06 12:40:05 -04:00
self.deferred_req = None
2021-09-06 22:29:53 -04:00
self.resp = None
2021-09-12 02:08:15 -04:00
self.db_type = None
self.user_dict = None
2021-09-05 18:48:20 -04:00
2021-09-06 12:40:05 -04:00
def reset(self):
2021-09-05 18:48:20 -04:00
self.viewdata = deepcopy(self._initial_viewdata)
2021-09-06 12:40:05 -04:00
self.is_club_rep = False
self.confirm_lines = None
self.operations = None
self.deferred_req = None
2021-09-06 22:29:53 -04:00
self.resp = None
2021-09-12 02:08:15 -04:00
self.db_type = None
self.user_dict = None
2021-09-06 12:40:05 -04:00
self.title = None
self.error_message = None
self.scene_stack.clear()
2021-09-06 23:03:30 -04:00
self.result_view_name = None
2021-09-17 23:45:45 -04:00
self.txn_view_name = None
2021-09-06 22:29:53 -04:00
for view in self.views:
if hasattr(view, '_ceoframe_on_reset'):
view._ceoframe_on_reset()