def log_delete(sender, instance, *args, **kwargs):
    """
    Creates a log entry for every deletion.
    """
    if instance.__class__.__name__.lower() not in MODEL_MAP:
        return

    if instance.__class__.__name__ == "Log":
        return

    if hasattr(instance, "created_by"):
        owner = instance.created_by
    elif hasattr(instance, "owner"):
        owner = instance.owner
    else:
        owner = None

    log = Log.create(instance, instance.id, Log.DELETE, owner=owner)
    log.save()
def log_save(sender, instance, created, *args, **kwargs):
    """
    Creates a log entry for every creation / modification.
    """
    model = type(instance)
    name = model.__name__.lower()
    if name not in MODEL_MAP:
        return

    if name == "log":
        return

    owner = None
    if hasattr(instance, "created_by"):
        owner = instance.created_by
    elif hasattr(instance, "owner"):
        owner = instance.owner

    method = Log.ADD
    if not created:
        method = Log.MODIFY

    log = Log.create(model, instance.id, method, owner=owner)
    log.save()