bookmarkvisibilitymanager.py (2535B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\sensorsuite\overlay\bookmarkvisibilitymanager.py 2 import logging 3 import yaml 4 from carbon.common.script.util.timerstuff import AutoTimer 5 logger = logging.getLogger(__name__) 6 FOLDER_VISIBILITY_SETTING = 'sensor_overlay_bookmark_folder_visibility' 7 FOLDER_VISIBILITY_SETTING_NEW = 'sensor_overlay_acl_bookmark_folder_visibility' 8 9 class BookmarkFolderVisibilityManager: 10 11 def __init__(self): 12 self.bookmarkFolderKeysHiddenFromSensorOverlay = None 13 14 def LoadFolderVisibility(self): 15 logger.debug('Loading folder visibility settings') 16 settingsYaml = sm.GetService('characterSettings').Get(FOLDER_VISIBILITY_SETTING_NEW) or '' 17 tempSettings = yaml.safe_load(settingsYaml) or [] 18 try: 19 self.bookmarkFolderKeysHiddenFromSensorOverlay = set(((f, s) for f, s in tempSettings)) 20 except Exception: 21 logger.exception('Failed to load folder visibility settings') 22 self.bookmarkFolderKeysHiddenFromSensorOverlay = set() 23 24 def PersistVisibleFolders(self): 25 logger.debug('Persisting folder visibility settings') 26 settingsYaml = yaml.safe_dump(list(self.bookmarkFolderKeysHiddenFromSensorOverlay)) 27 sm.GetService('characterSettings').Save(FOLDER_VISIBILITY_SETTING_NEW, settingsYaml) 28 self.persistVisibleFoldersTimer = None 29 30 def IsFolderVisible(self, folderKey): 31 if self.bookmarkFolderKeysHiddenFromSensorOverlay is None: 32 self.LoadFolderVisibility() 33 return folderKey not in self.bookmarkFolderKeysHiddenFromSensorOverlay 34 35 def SetFolderVisibility(self, folderKey, isVisible): 36 logger.debug('Setting bookmark folder %s visibility to %s', folderKey, isVisible) 37 if isVisible: 38 self.bookmarkFolderKeysHiddenFromSensorOverlay.discard(folderKey) 39 else: 40 self.bookmarkFolderKeysHiddenFromSensorOverlay.add(folderKey) 41 self.persistVisibleFoldersTimer = AutoTimer(5000, self.PersistVisibleFolders) 42 43 44 _bookmarkVisibilityManager = None 45 46 def GetBookmarkFolderVisibilityManager(): 47 global _bookmarkVisibilityManager 48 if _bookmarkVisibilityManager is None: 49 _bookmarkVisibilityManager = BookmarkFolderVisibilityManager() 50 return _bookmarkVisibilityManager 51 52 53 def ReleaseBookmarkFolderVisibilityManager(): 54 global _bookmarkVisibilityManager 55 if _bookmarkVisibilityManager is not None: 56 del _bookmarkVisibilityManager 57 _bookmarkVisibilityManager = None