data.py (2318B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\systemMenu\feature_preview\data.py 2 import datetime 3 import evelink 4 import localization 5 import signals 6 from eve.client.script.ui.comparison import comparisonSettings 7 from eve.client.script.ui.shared.systemMenu.feature_preview.message_bus.featurePreviewMessenger import FeaturePreviewMessenger 8 from eveexceptions import EatsExceptions 9 10 class FeaturePreviewData(object): 11 12 def __init__(self, id, title, description, banner, enabled_check, toggle, restart_check = None, prerequisites_check = None, links = None, new_until = None, disable_message = None): 13 self.id = id 14 self.title = title 15 self.description = description 16 self._enabled_check = enabled_check 17 self._toggle = toggle 18 self._restart_check = restart_check 19 self._prerequisites_check = prerequisites_check 20 self.banner = banner 21 self.links = links or [] 22 self.new_until = new_until 23 self.disable_message = disable_message 24 self.on_toggle = signals.Signal() 25 26 @property 27 def is_enabled(self): 28 return self._enabled_check() 29 30 @property 31 def is_new(self): 32 return self.new_until is not None and datetime.datetime.utcnow().date() < self.new_until 33 34 @property 35 def requires_restart(self): 36 if self._restart_check is not None: 37 return self._restart_check() 38 return False 39 40 def toggle(self): 41 self._toggle() 42 self._log_toggled_event() 43 self.on_toggle() 44 45 def check_prerequisites(self): 46 if self._prerequisites_check is not None: 47 failures = self._prerequisites_check() 48 if isinstance(failures, PrerequisiteFailure): 49 return [failures] 50 else: 51 return failures or [] 52 53 @EatsExceptions('protoClientLogs') 54 def _log_toggled_event(self): 55 message_bus = FeaturePreviewMessenger(sm.GetService('publicGatewaySvc')) 56 message_bus.feature_toggled(self.id, self.is_enabled) 57 58 59 class PrerequisiteFailure(object): 60 61 def __init__(self, title, description): 62 self.title = title 63 self.description = description 64 65 66 def get_available_feature_previews(): 67 feature_previews = [] 68 return feature_previews