repository.py (3325B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\auraguidance\client\repository.py 2 from __future__ import print_function 3 from auraguidance.client import aura_guidance_signals 4 from auraguidance.client.errors import AuraGuidanceServiceUnavailableError 5 from auraguidance.client.logger import logger 6 from auraguidance.client.messenger import AuraGuidanceMessenger 7 from clientsettings.setting import CharSettingBool 8 aura_guidance_intro = CharSettingBool('agIntro', True) 9 10 class AuraGuidanceRepository(object): 11 12 def __init__(self, public_gateway, get_aura_guidance_enabled, get_a_a_test_enabled, get_added_to_segment): 13 self._public_gateway = public_gateway 14 self._messenger = AuraGuidanceMessenger(self._public_gateway) 15 self._get_aura_guidance_enabled = get_aura_guidance_enabled 16 self._get_a_a_test_enabled = get_a_a_test_enabled 17 self._get_added_to_segment = get_added_to_segment 18 self._aura_guidance_enabled = None 19 self._a_a_test_enabled = None 20 self._added_to_segment = None 21 self.connect_signals() 22 23 def __del__(self): 24 self.disconnect_signals() 25 26 def connect_signals(self): 27 aura_guidance_signals.on_availability_changed.connect(self.cache_aura_guidance_enabled) 28 aura_guidance_signals.on_a_a_test_availability_changed.connect(self.cache_a_a_test_flag) 29 self.is_a_a_test_enabled() 30 aura_guidance_signals.on_added_to_segment.connect(self.cache_added_to_segment) 31 32 def disconnect_signals(self): 33 aura_guidance_signals.on_availability_changed.disconnect(self.cache_aura_guidance_enabled) 34 aura_guidance_signals.on_a_a_test_availability_changed.disconnect(self.cache_a_a_test_flag) 35 aura_guidance_signals.on_added_to_segment.disconnect(self.cache_added_to_segment) 36 37 def is_enabled(self): 38 if self._aura_guidance_enabled is None: 39 self._aura_guidance_enabled = self._get_aura_guidance_enabled() 40 return self._aura_guidance_enabled 41 42 def is_a_a_test_enabled(self): 43 if self._a_a_test_enabled is None: 44 self._a_a_test_enabled = self._get_a_a_test_enabled() 45 return self._a_a_test_enabled 46 47 def is_added_to_segment(self): 48 if self._added_to_segment is None: 49 self._added_to_segment = self._get_added_to_segment() 50 return self._added_to_segment 51 52 def cache_aura_guidance_enabled(self, value): 53 self._aura_guidance_enabled = value 54 55 def cache_a_a_test_flag(self, value): 56 self._a_a_test_enabled = value 57 58 def cache_added_to_segment(self, value): 59 self._added_to_segment = value 60 enabled = self._get_aura_guidance_enabled() 61 info_log = '{userid} force evaluating the aura_guidance_enabled flag returned {value}'.format(userid=session.userid, value=enabled) 62 logger.warn(info_log) 63 64 def get_response(self, query, max_attempts = 1): 65 if not self.is_enabled(): 66 raise AuraGuidanceServiceUnavailableError('Suddenly no access enabled during request.') 67 return self._messenger.get_response(query=query, max_attempts=max_attempts) 68 69 def test_a_a_test_enabled(self): 70 if not self.is_a_a_test_enabled(): 71 print('A/A Test says nope.') 72 return 73 print('A/A Test says yup.')