1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00
Files
netbox-community-netbox/netbox/utilities/releases.py
2020-02-27 18:27:36 +01:00

36 lines
1.0 KiB
Python

import requests
from cacheops import cached
from django.conf import settings
from packaging import version
@cached(timeout=settings.UPDATE_CACHE_TIMEOUT, extra=settings.UPDATE_REPO_URL)
def get_releases(pre_releases=False):
url = '{}/releases'.format(settings.UPDATE_REPO_URL)
headers = {
'Accept': 'application/vnd.github.v3+json',
}
try:
response = requests.get(url, headers=headers)
releases = [(version.parse(release['tag_name']), release.get('html_url'))
for release in response.json()
if 'tag_name' in release]
except Exception:
releases = []
if not pre_releases:
releases = [(release, url)
for release, url in releases
if not release.is_devrelease and not release.is_prerelease]
return releases
def get_latest_release(pre_releases=False):
if settings.UPDATE_REPO_URL:
releases = get_releases(pre_releases)
if releases:
return max(releases)
return 'unknown', None