def _get_forms(profile, instance, request, undo=False, prefix=""):
    """
    Gets the forms for profile interacting with an instance of a shift. This
    includes verify shift, mark shift as blown, sign in, and sign out.
    """
    anonymous = profile is None and request.user.username == ANONYMOUS_USERNAME

    if not profile and not anonymous:
        return []

    if prefix:
        prefix += "-{}".format(instance.pk)
    else:
        prefix = "{}".format(instance.pk)

    kwargs = dict(
        initial={"pk": instance.pk},
        profile=profile,
        prefix=prefix,
        undo=undo,
    )

    ret = []
    if (not instance.closed or undo) and instance.workshifter:
        workshifter = instance.workshifter or instance.liable
        pool = instance.pool

        if not profile:
            managers = []
        else:
            managers = Manager.objects.filter(incumbent__user=profile.user)

        verify, blow = False, False

        # The many ways a person can be eligible to verify a shift...
        if instance.verify == AUTO_VERIFY:
            pass
        elif instance.verify == SELF_VERIFY:
            verify = True
        elif instance.verify == OTHER_VERIFY and profile != workshifter:
            verify = True
        elif instance.verify == ANY_MANAGER_VERIFY and managers:
            verify = True
        elif instance.verify == POOL_MANAGER_VERIFY and \
          set(managers).intersections(pool.managers):
            verify = True
        elif instance.verify == WORKSHIFT_MANAGER_VERIFY and \
          any(i.workshift_manager for i in managers):
            verify = True

        if verify and not instance.verifier:
            # Verify Shift
            action = "{}-{}".format(VerifyShiftForm.action_name, instance.pk)
            ret.append(
                VerifyShiftForm(
                    data=request.POST if action in request.POST else None,
                    **kwargs
                )
            )

        if pool.any_blown:
            blow = True

        if profile:
            pool_managers = pool.managers.filter(incumbent__user=profile.user)
            if pool_managers.count():
                blow = True

        if blow and not instance.blown:
            # Blown Shift
            action = "{}-{}".format(BlownShiftForm.action_name, instance.pk)
            ret.append(
                BlownShiftForm(
                    data=request.POST if action in request.POST else None,
                    **kwargs
                )
            )

    if profile is not None:
        marked_blown = UndoShiftForm.check_marked_blown(instance, profile)

        if marked_blown or instance.verifier == profile:
            # Undo Verify Shift
            action = "{}-{}".format(UndoShiftForm.action_name, instance.pk)
            ret.append(
                UndoShiftForm(
                    data=request.POST if action in request.POST else None,
                    **kwargs
                )
            )

    if not instance.closed:
        if not instance.workshifter:
            # Sign In
            action = "{}-{}".format(SignInForm.action_name, instance.pk)
            ret.append(
                SignInForm(
                    data=request.POST if action in request.POST else None,
                    **kwargs
                )
            )
        liable = instance.workshifter or instance.liable
        if (undo and liable is not None) or \
           instance.workshifter == profile:
            # Sign Out
            action = "{}-{}".format(SignOutForm.action_name, instance.pk)
            ret.append(
                SignOutForm(
                    data=request.POST if action in request.POST else None,
                    **kwargs
                )
            )

    return ret
Gets the forms for profile interacting with an instance of a shift. This
    includes verify shift, mark shift as blown, sign in, and sign out.