Returns a TaskFileInfo that with the next available version and the provided info

        :param task: the task of the taskfile
        :type task: :class:`jukeboxcore.djadapter.models.Task`
        :param releasetype: the releasetype
        :type releasetype: str - :data:`jukeboxcore.djadapter.RELEASETYPES`
        :param typ: the file type, see :data:`TaskFileInfo.TYPES`
        :type typ: str
        :param descriptor: the descriptor, if the taskfile has one.
        :type descriptor: str|None
        :returns: taskfileinfoobject with next available version and the provided info
        :rtype: :class:`TaskFileInfo`
        :raises: None

def get_next(cls, task, releasetype, typ, descriptor=None):
        """Returns a TaskFileInfo that with the next available version and the provided info

        :param task: the task of the taskfile
        :type task: :class:`jukeboxcore.djadapter.models.Task`
        :param releasetype: the releasetype
        :type releasetype: str - :data:`jukeboxcore.djadapter.RELEASETYPES`
        :param typ: the file type, see :data:`TaskFileInfo.TYPES`
        :type typ: str
        :param descriptor: the descriptor, if the taskfile has one.
        :type descriptor: str|None
        :returns: taskfileinfoobject with next available version and the provided info
        :rtype: :class:`TaskFileInfo`
        :raises: None
        """
        qs = dj.taskfiles.filter(task=task, releasetype=releasetype, descriptor=descriptor, typ=typ)
        if qs.exists():
            ver = qs.aggregate(Max('version'))['version__max']+1
        else:
            ver = 1
        return TaskFileInfo(task=task, version=ver, releasetype=releasetype, typ=typ, descriptor=descriptor)