diff options
author | teh_coderer <me@tehcoderer.com> | 2024-01-19 16:31:03 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-19 21:31:03 +0000 |
commit | 237defad95d4b621220c14818e5db927f4aec3e0 (patch) | |
tree | 39375699207399bbb5bf9f35df1c614a138f723a | |
parent | 801ebb2cad54c2f9cbf5043a5f07a7dc7dc7d542 (diff) |
hotfix/ allow multiple `identify` calls (#5976)
* allow multiple `identify` calls
* Update posthog_handler.py
-rw-r--r-- | openbb_platform/core/openbb_core/app/logs/handlers/posthog_handler.py | 42 |
1 files changed, 26 insertions, 16 deletions
diff --git a/openbb_platform/core/openbb_core/app/logs/handlers/posthog_handler.py b/openbb_platform/core/openbb_core/app/logs/handlers/posthog_handler.py index b7f8ebeb3a2..8ca2b2c8ad6 100644 --- a/openbb_platform/core/openbb_core/app/logs/handlers/posthog_handler.py +++ b/openbb_platform/core/openbb_core/app/logs/handlers/posthog_handler.py @@ -40,6 +40,7 @@ class PosthogHandler(logging.Handler): @settings.setter def settings(self, settings: LoggingSettings) -> None: + """Set logging settings.""" self._settings = settings def emit(self, record: logging.LogRecord): @@ -51,6 +52,29 @@ class PosthogHandler(logging.Handler): if Env().DEBUG_MODE: raise e + def distinct_id(self) -> str: + """Get distinct id.""" + return self._settings.user_id or self._settings.app_id + + def identify(self) -> None: + """Identify user.""" + if self.logged_in or not self._settings.user_id: + return + + posthog.identify( + self._settings.user_id, + { + "email": self._settings.user_email, + "primaryUsage": self._settings.user_primary_usage, + }, + ) + + if self._settings.sub_app_name == "pro": + return + + self.logged_in = True + posthog.alias(self._settings.user_id, self._settings.app_id) + def log_to_dict(self, log_info: str) -> dict: """Log to dict.""" log_regex = r"(STARTUP|CMD|ERROR): (.*)" @@ -83,22 +107,8 @@ class PosthogHandler(logging.Handler): if event_name not in [e.value for e in self.AllowedEvents]: return - if not self.logged_in and self._settings.user_id: - self.logged_in = True - posthog.identify( - self._settings.user_id, - { - "email": self._settings.user_email, - "primaryUsage": self._settings.user_primary_usage, - }, - ) - posthog.alias(self._settings.user_id, self._settings.app_id) - - posthog.capture( - self._settings.app_id, - event_name, - properties=log_extra, - ) + self.identify() + posthog.capture(self.distinct_id(), event_name, properties=log_extra) def extract_log_extra(self, record: logging.LogRecord) -> Dict[str, Any]: """Extract log extra from record.""" |