Пример #1
0
    def collectDataFromRoot(self, data):
        # Make sure we're processing data for our server, and not some other
        # server that happened to be at the same IP.
        if self.uuid != data.attrib.get('machineIdentifier'):
            util.LOG(
                "Got a reachability response, but from a different server")
            return False

        self.serverClass = data.attrib.get('serverClass')
        self.supportsAudioTranscoding = data.attrib.get(
            'transcoderAudio') == '1'
        self.supportsVideoTranscoding = data.attrib.get(
            'transcoderVideo') == '1' or data.attrib.get(
                'transcoderVideoQualities')
        self.supportsVideoRemuxOnly = data.attrib.get(
            'transcoderVideoRemuxOnly') == '1'
        self.supportsPhotoTranscoding = data.attrib.get(
            'transcoderPhoto') == '1' or (
                not data.attrib.get('transcoderPhoto') and not self.synced
                and not self.isSecondary())
        self.allowChannelAccess = data.attrib.get(
            'allowChannelAccess') == '1' or (
                not data.attrib.get('allowChannelAccess') and self.owned
                and not self.synced and not self.isSecondary())
        self.supportsScrobble = not self.isSecondary() or self.synced
        self.allowsMediaDeletion = not self.synced and self.owned and data.attrib.get(
            'allowMediaDeletion') == '1'
        self.multiuser = data.attrib.get('multiuser') == '1'
        self.name = data.attrib.get('friendlyName') or self.name
        self.platform = data.attrib.get('platform')

        # TODO(schuyler): Process transcoder qualities

        self.rawVersion = data.attrib.get('version')
        if self.rawVersion:
            self.versionNorm = util.normalizedVersion(self.rawVersion)

        features = {
            'mkvTranscode': '0.9.11.11',
            'themeTranscode': '0.9.14.0',
            'allPartsStreamSelection': '0.9.12.5',
            'claimServer': '0.9.14.2',
            'streamingBrain': '1.2.0'
        }

        for f, v in features.items():
            if verlib.suggest_normalized_version(v) <= self.versionNorm:
                self.features[f] = True

        appMinVer = plexapp.INTERFACE.getGlobal('minServerVersionArr',
                                                '0.0.0.0')
        self.isSupported = self.isSecondary(
        ) or verlib.suggest_normalized_version(appMinVer) <= self.versionNorm

        util.DEBUG_LOG(
            "Server information updated from reachability check: {0}".format(
                self))

        return True
Пример #2
0
def normalizedVersion(ver):
    try:
        modv = '.'.join(ver.split('.')[:4]).rsplit(
            '-',
            1)[0]  # Clean the version i.e. Turn 1.2.3.4-asdf8 into 1.2.3.4
        return verlib.suggest_normalized_version(modv)
    except:
        if ver:
            ERROR()
        return verlib.suggest_normalized_version('0.0.0')
Пример #3
0
def nextversion(current_version):
    """Returns incremented module version number.

    :param current_version: version string to increment
    :returns:               Next version string (PEP 386 compatible) if possible.
                            If impossible (since `current_version` is too far from PEP 386),
                            `None` is returned.
    """
    norm_ver = verlib.suggest_normalized_version(current_version)
    if norm_ver is None:
        return None
    norm_ver = verlib.NormalizedVersion(norm_ver)

    # increment last version figure
    parts = norm_ver.parts   # see comments of `verlib.py` to get the idea of `parts`
    assert(len(parts) == 3)
    if len(parts[2]) > 1:    # postdev
        if parts[2][-1] == 'f':  # when `post` exists but `dev` doesn't
            parts = _mk_incremented_parts(parts, part_idx=2, in_part_idx=-2, incval=1)
        else:                    # when both `post` and `dev` exist
            parts = _mk_incremented_parts(parts, part_idx=2, in_part_idx=-1, incval=1)
    elif len(parts[1]) > 1:  # prerel
        parts = _mk_incremented_parts(parts, part_idx=1, in_part_idx=-1, incval=1)
    else:                    # version & extraversion
        parts = _mk_incremented_parts(parts, part_idx=0, in_part_idx=-1, incval=1)
    norm_ver.parts = parts

    return str(norm_ver)
Пример #4
0
 def validate_version(version):
     rversion = suggest_normalized_version(version)
     if rversion is None:
         raise ValueError('Cannot work with "%s"' % version)
     if rversion != version:
         warnings.warn('"%s" is not a normalized version.\n'
                       'It has been transformed into "%s" '
                       'for interoperability.' % (version, rversion))
     return NormalizedVersion(rversion)
Пример #5
0
 def validate_version(version):
     rversion = suggest_normalized_version(version)
     if rversion is None:
         raise ValueError('Cannot work with "%s"' % version)
     if rversion != version:
         warnings.warn('"%s" is not a normalized version.\n'
                       'It has been transformed into "%s" '
                       'for interoperability.' % (version, rversion))
     return NormalizedVersion(rversion)
Пример #6
0
def get_normalized_version(_description=_get_description()):
    """Return the normalized version or None.

    Normalized versions are defined by PEP 386, and are what should go
    in the module's __version__ variable.

    """
    tag, additional, commit = _parse_description(_description)
    if additional == '0':
        s = tag
    else:
        s = tag + '.post' + additional
    return verlib.suggest_normalized_version(s)
Пример #7
0
def get_normalized_version(_description=_get_description()):
    """Return the normalized version or None.

    Normalized versions are defined by PEP 386, and are what should go
    in the module's __version__ variable.

    """
    tag, additional, commit = _parse_description(_description)
    if additional == '0':
        s = tag
    else:
        s = tag + '.post' + additional
    return verlib.suggest_normalized_version(s)
Пример #8
0
def nextversion(current_version):
    """Returns incremented module version number.

    :param current_version: version string to increment
    :returns:               Next version string (PEP 386 compatible) if possible.
                            If impossible (since `current_version` is too far from PEP 386),
                            `None` is returned.
    """
    norm_ver = verlib.suggest_normalized_version(current_version)
    if norm_ver is None:
        return None
    norm_ver = verlib.NormalizedVersion(norm_ver)

    # increment last version figure
    parts = norm_ver.parts  # see comments of `verlib.py` to get the idea of `parts`
    assert (len(parts) == 3)
    if len(parts[2]) > 1:  # postdev
        if parts[2][-1] == 'f':  # when `post` exists but `dev` doesn't
            parts = _mk_incremented_parts(parts,
                                          part_idx=2,
                                          in_part_idx=-2,
                                          incval=1)
        else:  # when both `post` and `dev` exist
            parts = _mk_incremented_parts(parts,
                                          part_idx=2,
                                          in_part_idx=-1,
                                          incval=1)
    elif len(parts[1]) > 1:  # prerel
        parts = _mk_incremented_parts(parts,
                                      part_idx=1,
                                      in_part_idx=-1,
                                      incval=1)
    else:  # version & extraversion
        parts = _mk_incremented_parts(parts,
                                      part_idx=0,
                                      in_part_idx=-1,
                                      incval=1)
    norm_ver.parts = parts

    return str(norm_ver)
Пример #9
0
def Version(ver_string):
    return verlib.NormalizedVersion(
        verlib.suggest_normalized_version(ver_string))
Пример #10
0
def is_valid_version(version_number):
    return suggest_normalized_version(version_number) is not None
Пример #11
0
 def __init__(self, version_number, edition=None):
     sugg_ver = suggest_normalized_version(version_number)
     super(MongoDBVersionInfo,self).__init__(sugg_ver)
     self.version_number = version_number
     self.edition = edition or MongoDBEdition.COMMUNITY
Пример #12
0
def is_valid_version(version_str):
    return suggest_normalized_version(version_str) is not None
Пример #13
0
 def __init__(self, version_str):
     sugg_ver = suggest_normalized_version(version_str)
     super(MongoctlNormalizedVersion, self).__init__(sugg_ver)
     self.version_str = version_str
Пример #14
0
 def normalize_version(self, v):
     return suggest_normalized_version(v)
Пример #15
0
 def suggest_from_string(cls, s):
     return cls(verlib.suggest_normalized_version(s))
Пример #16
0
def Version(ver_string):
    return verlib.NormalizedVersion(verlib.suggest_normalized_version(ver_string))
Пример #17
0
 def __init__(self, version_number, edition=None):
     sugg_ver = suggest_normalized_version(version_number)
     super(MongoDBVersionInfo, self).__init__(sugg_ver)
     self.version_number = version_number
     self.edition = edition or MongoDBEdition.COMMUNITY
Пример #18
0
 def __init__(self, version_str):
     sugg_ver = suggest_normalized_version(version_str)
     super(MongoNormalizedVersion,self).__init__(sugg_ver)
     self.version_str = version_str
Пример #19
0
 def normalize_version(self, v):
     return suggest_normalized_version(v)