def METHOD_NAME(request, region_slug, pk, target_id, target_position):
    """
    This action moves the given language tree node to the given position relative to the given target.
    :param request: The current request
    :type request: ~django.http.HttpRequest
    :param region_slug: The slug of the region which language tree should be modified
    :type region_slug: str
    :param pk: The id of the language tree node which should be moved
    :type pk: int
    :param target_id: The id of the target language tree node
    :type target_id: int
    :param target_position: The desired position (choices: :mod:`~integreat_cms.cms.constants.position`)
    :type target_position: str
    :return: A redirection to the language tree
    :rtype: ~django.http.HttpResponseRedirect
    """
    region = request.region
    language_tree_node = get_object_or_404(region.language_tree_nodes, id=pk)
    target = get_object_or_404(region.language_tree_nodes, id=target_id)
    try:
        if target.depth == 1 and target_position in [position.LEFT, position.RIGHT]:
            raise InvalidPosition(_("A region can only have one root language."))
        language_tree_node.move(target, target_position)
        # Call the save method on the (reloaded) node in order to trigger possible signal handlers etc.
        # (The move()-method executes raw sql which might cause problems if the instance isn't fetched again)
        language_tree_node = LanguageTreeNode.objects.get(id=pk)
        language_tree_node.save()
        manually_invalidate_models(region)
        messages.success(
            request,
            _('The language tree node "{}" was successfully moved.').format(
                language_tree_node.translated_name
            ),
        )
        logger.debug(
            "%r moved to %r of %r by %r",
            language_tree_node,
            target_position,
            target,
            request.user,
        )
    except (ValueError, InvalidPosition, InvalidMoveToDescendant) as e:
        messages.error(request, e)
        logger.exception(e)
    return redirect("languagetreenodes", **{"region_slug": region_slug})