Returns ``TrackToken``.
    ``TrackToken' contains request and user making changes.

    It can be passed to ``TrackedModel.save`` instead of ``request``.
    It is intended to be used when passing ``request`` is not possible
    e.g. when ``TrackedModel.save`` will be called from celery task.

def create_track_token(request):
    """Returns ``TrackToken``.
    ``TrackToken' contains request and user making changes.

    It can be passed to ``TrackedModel.save`` instead of ``request``.
    It is intended to be used when passing ``request`` is not possible
    e.g. when ``TrackedModel.save`` will be called from celery task.
    """
    from tracked_model.models import RequestInfo
    request_pk = RequestInfo.create_or_get_from_request(request).pk
    user_pk = None
    if request.user.is_authenticated():
        user_pk = request.user.pk

    return TrackToken(request_pk=request_pk, user_pk=user_pk)