def find_and_fire_hook(event_name, instance, user_override=None):
    """
    Look up Hooks that apply
    """
    from django.contrib.auth.models import User
    from rest_hooks.models import Hook, HOOK_EVENTS
    if not event_name in HOOK_EVENTS.keys():
        raise Exception('"{}" does not exist in `settings.HOOK_EVENTS`.'.
            format(event_name))
    filters = {'event': event_name}
    if user_override is not False:
        if user_override:
            filters['user'] = user_override
        elif hasattr(instance, 'user'):
            filters['user'] = instance.user
        elif isinstance(instance, User):
            filters['user'] = instance
        else:
            raise Exception('{} has no `user` property. REST Hooks needs this.'
                .format(repr(instance)))
    hooks = Hook.objects.filter(**filters)
    for hook in hooks:
        hook.deliver_hook(instance)
