示例#1
0
def action_log_delete(sender, instance, **kwargs):
    """
    Signal receiver that creates a log entry when a model instance is deleted from the database.

    Direct use is discouraged, connect your model through :py:func:`actionslog.registry.register` instead.
    """
    if instance.pk is not None:
        changes = model_instance_diff(instance, None)

        log_entry = LogAction.objects.create_log_action(
            instance=instance,
            action=LogAction.DELETE,
            changes=json.dumps(changes),
        )
示例#2
0
def action_log_create(sender, instance, created, **kwargs):
    """
    Signal receiver that creates a log entry when a model instance is first saved to the database.

    Direct use is discouraged, connect your model through :py:func:`actionslog.registry.register` instead.
    """
    if created:
        changes = model_instance_diff(None, instance)

        log_entry = LogAction.objects.create_log_action(
            instance=instance,
            action=LogAction.CREATE,
            changes=json.dumps(changes),
        )
示例#3
0
def action_log_update(sender, instance, **kwargs):
    """
    Signal receiver that creates a log entry when a model instance is changed and saved to the database.

    Direct use is discouraged, connect your model through :py:func:`actionslog.registry.register` instead.
    """
    if instance.pk is not None:
        try:
            old = sender.objects.get(pk=instance.pk)
        except sender.DoesNotExist:
            pass
        else:
            new = instance

            changes = model_instance_diff(old, new)

            # Log an entry only if there are changes
            if changes:
                log_entry = LogAction.objects.create_log_action(
                    instance=instance,
                    action=LogAction.UPDATE,
                    changes=json.dumps(changes),
                )