Source code for smarter.apps.vectorstore.receivers

# pylint: disable=unused-argument
"""
Receivers for the vectorstore app.
"""

import json
import logging

from django.db.models.signals import post_delete, post_save
from django.dispatch import receiver
from django.forms.models import model_to_dict

from smarter.apps.vectorstore.models import VectorestoreMeta
from smarter.apps.vectorstore.signals import (
    load_failed,
    load_started,
    load_success,
)
from smarter.common.helpers.console_helpers import formatted_text
from smarter.lib.django import waffle
from smarter.lib.django.waffle import SmarterWaffleSwitches
from smarter.lib.logging import WaffleSwitchedLoggerWrapper


# pylint: disable=unused-argument
[docs] def should_log(level): """Check if logging should be done based on the waffle switch.""" return waffle.switch_is_active(SmarterWaffleSwitches.VECTORSTORE_LOGGING)
base_logger = logging.getLogger(__name__) logger = WaffleSwitchedLoggerWrapper(base_logger, should_log) module_prefix = f"{__name__}"
[docs] @receiver(post_save, sender=VectorestoreMeta) def account_post_save(sender: VectorestoreMeta, instance: VectorestoreMeta, created, **kwargs): """Signal receiver for created/saved of VectorestoreMeta model.""" model_prefix = formatted_text(f"{module_prefix}.account_post_save()") account_json = json.dumps(model_to_dict(instance)) if created: logger.info("%s VectorestoreMeta created: %s", model_prefix, account_json) else: logger.info("%s VectorestoreMeta updated: %s", model_prefix, account_json) logger.info( "%s invalidating cache for VectorestoreMeta: %s", formatted_text(f"{module_prefix}.account_post_save()"), instance, ) VectorestoreMeta.get_cached_object(invalidate=True, pk=instance.pk)
[docs] @receiver(post_delete, sender=VectorestoreMeta) def account_post_delete(sender: VectorestoreMeta, instance: VectorestoreMeta, **kwargs): """Signal receiver for deleted of VectorestoreMeta model.""" model_prefix = formatted_text(f"{module_prefix}.account_post_delete()") account_json = json.dumps(model_to_dict(instance)) logger.info("%s VectorestoreMeta deleted: %s", model_prefix, account_json) logger.info( "%s invalidating cache for deleted VectorestoreMeta: %s", formatted_text(f"{module_prefix}.account_post_delete()"), instance, ) VectorestoreMeta.get_cached_object(invalidate=True, pk=instance.pk)
[docs] @receiver(load_started) def handle_load_started(sender, backend, provider, user_profile, **kwargs): """Signal receiver for load_started signal.""" logger.info( "%s load started for backend: %s, provider: %s, user_profile: %s", formatted_text(f"{module_prefix}.handle_load_started()"), backend, provider, user_profile, )
[docs] @receiver(load_success) def handle_load_success(sender, backend, provider, user_profile, **kwargs): """Signal receiver for load_success signal.""" logger.info( "%s load succeeded for backend: %s, provider: %s, user_profile: %s", formatted_text(f"{module_prefix}.handle_load_success()"), backend, provider, user_profile, )
[docs] @receiver(load_failed) def handle_load_failed(sender, backend, provider, user_profile, **kwargs): """Signal receiver for load_failed signal.""" logger.error( "%s load failed for backend: %s, provider: %s, user_profile: %s", formatted_text(f"{module_prefix}.handle_load_failed()"), backend, provider, user_profile, )