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-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': '',
|
|
|
|
},
|
2021-09-07 00:16:29 -04:00
|
|
|
'ChangeLoginShell': {
|
|
|
|
'uid': '',
|
|
|
|
'login_shell': '',
|
|
|
|
},
|
|
|
|
'SetForwardingAddresses': {
|
2021-09-07 01:02:34 -04:00
|
|
|
'uid': '',
|
|
|
|
'forwarding_addresses': [''],
|
|
|
|
},
|
|
|
|
'AddGroup': {
|
|
|
|
'cn': '',
|
|
|
|
'description': '',
|
2021-09-07 00:16:29 -04:00
|
|
|
},
|
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-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-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-06 22:29:53 -04:00
|
|
|
for view in self.views:
|
|
|
|
if hasattr(view, '_ceoframe_on_reset'):
|
|
|
|
view._ceoframe_on_reset()
|