from django.db import models


def create_audit_trail(request, obj):
    return create_user_audit_trail(request.user, request.user_ip, obj)


def create_user_audit_trail(user, ip_address, obj):
    if not isinstance(obj, models.Model):
        raise ValueError("obj must be a valid Django model instance")

    if user.is_anonymous:
        return None

    return user.audittrail_set.create(
        user=user, ip_address=ip_address, content_object=obj
    )