示例#1
0
def new_version(travis_api_key, tag):
    """Allows Travis to mark a new version during build."""
    try:
        TravisKeys.get(travis_api_key)
    except TravisKeys.DoesNotExist:
        return "API key is invalid.", 403

    if tag.startswith("v"):
        tag = tag.lstrip("v")

    i = 0
    while True:
        try:
            Version.get(i)
            i += 1
        except Version.DoesNotExist:
            break

    r = requests.get(
        "https://api.github.com/repos/JakeMakesStuff/MagicCap/releases/tags/v{}"
        .format(tag))

    r.raise_for_status()
    j = r.json()

    Version(release_id=i, version=tag, changelogs=j['body'], beta="b"
            in tag).save()

    return "Release {} successfully saved to the database.".format(tag), 200
def latest_versions():
    """Gets information about the latest MagicCap releases."""
    latest_release = None
    latest_beta = None

    release_id = 0
    while True:
        try:
            v = Version.get(release_id)
            if v.beta:
                latest_beta = v
            else:
                latest_release = v
            release_id += 1
        except Version.DoesNotExist:
            break

    beta_json = None
    beta_newer = False
    if latest_beta:
        beta_json = {
            "mac":
            "https://s3.magiccap.me/upgrades/v{}/magiccap-mac.dmg".format(
                latest_beta.version),
            "linux":
            "https://s3.magiccap.me/upgrades/v{}/magiccap-linux.zip".format(
                latest_beta.version),
            "changelogs":
            latest_beta.changelogs,
            "version":
            latest_beta.version
        }
        beta_newer = latest_beta.release_id > latest_release.release_id

    return jsonify({
        "beta": beta_json,
        "release": {
            "mac":
            "https://s3.magiccap.me/upgrades/v{}/magiccap-mac.dmg".format(
                latest_release.version),
            "linux":
            "https://s3.magiccap.me/upgrades/v{}/magiccap-linux.zip".format(
                latest_release.version),
            "changelogs":
            latest_release.changelogs,
            "version":
            latest_release.version
        },
        "is_beta_newer_than_release": beta_newer
    })
def get_updates(release_id, beta):
    """Gets all updates that is avaliable for the user."""
    updates = []
    current_id = release_id + 1
    while True:
        try:
            u = Version.get(current_id)

            if u.beta:
                if beta:
                    updates.append(u)
            else:
                updates.append(u)

            current_id += 1
        except Version.DoesNotExist:
            break

    return updates