Source code for logmancer.signals

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

from logmancer.conf import get_bool, should_exclude_model
from logmancer.middleware import get_current_user
from logmancer.utils import LogEvent


# Global signal handlers
[docs] @receiver(post_save) def log_model_save(sender, instance, created, **kwargs): """Log model save events""" if not get_bool("ENABLE_SIGNALS") or should_exclude_model(sender): return action = "created" if created else "updated" LogEvent.info( message=f"{sender.__name__} instance {action}: #{instance.pk}", meta={ "model": sender.__name__, "action": action, "instance_pk": instance.pk, }, source="signal", user=get_current_user(), actor_type="system", )
[docs] @receiver(post_delete) def log_model_delete(sender, instance, **kwargs): """Log model delete events""" if not get_bool("ENABLE_SIGNALS") or should_exclude_model(sender): return LogEvent.warning( message=f"{sender.__name__} instance deleted: #{instance.pk}", meta={ "model": sender.__name__, "action": "deleted", "instance_pk": instance.pk, }, source="signal", user=get_current_user(), actor_type="system", )