57 lines
1.6 KiB
Python
57 lines
1.6 KiB
Python
from copy import deepcopy
|
|
|
|
from zope import component
|
|
|
|
from ceo_common.interfaces import IConfig
|
|
|
|
|
|
class Model:
|
|
"""A convenient place to store View data persistently."""
|
|
|
|
def __init__(self):
|
|
cfg = component.getUtility(IConfig)
|
|
|
|
self.screen = None
|
|
self.views = []
|
|
self.title = None
|
|
self.scene_stack = []
|
|
self.result_view_name = None
|
|
self.txn_view_name = None
|
|
self.error_message = None
|
|
self.nav_direction = 'forward'
|
|
# View-specific data
|
|
self._initial_viewdata = {
|
|
'ResetPassword': {
|
|
'uid': '',
|
|
},
|
|
}
|
|
for pos in cfg.get('positions_available'):
|
|
self._initial_viewdata[pos] = ''
|
|
self.viewdata = deepcopy(self._initial_viewdata)
|
|
# data which is shared between multiple views
|
|
self.is_club_rep = False
|
|
self.confirm_lines = None
|
|
self.operations = None
|
|
self.deferred_req = None
|
|
self.resp = None
|
|
self.db_type = None
|
|
self.user_dict = None
|
|
|
|
def reset(self):
|
|
self.viewdata = deepcopy(self._initial_viewdata)
|
|
self.is_club_rep = False
|
|
self.confirm_lines = None
|
|
self.operations = None
|
|
self.deferred_req = None
|
|
self.resp = None
|
|
self.db_type = None
|
|
self.user_dict = None
|
|
self.title = None
|
|
self.error_message = None
|
|
self.scene_stack.clear()
|
|
self.result_view_name = None
|
|
self.txn_view_name = None
|
|
for view in self.views:
|
|
if hasattr(view, '_ceoframe_on_reset'):
|
|
view._ceoframe_on_reset()
|