mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-15 19:52:52 -06:00
Refactor the code to be more readable
This commit is contained in:
parent
405d93c6f2
commit
9d66ac4a6a
@ -1,7 +1,7 @@
|
||||
from django.conf import settings as django_settings
|
||||
from packaging import version
|
||||
|
||||
from utilities.versions import get_latest_version
|
||||
from utilities.versions import get_latest_release
|
||||
|
||||
|
||||
def settings(request):
|
||||
@ -17,14 +17,14 @@ def latest_version(request):
|
||||
"""
|
||||
Get the latest version from the GitHub repository
|
||||
"""
|
||||
github_latest_version, github_url = get_latest_version()
|
||||
latest_release, github_url = get_latest_release()
|
||||
|
||||
latest_version_str = None
|
||||
latest_version_url = None
|
||||
if isinstance(github_latest_version, version.Version):
|
||||
if isinstance(latest_release, version.Version):
|
||||
current_version = version.parse(django_settings.VERSION)
|
||||
if github_latest_version > current_version:
|
||||
latest_version_str = str(github_latest_version)
|
||||
if latest_release > current_version:
|
||||
latest_version_str = str(latest_release)
|
||||
latest_version_url = github_url
|
||||
|
||||
return {
|
||||
|
@ -3,25 +3,33 @@ from cacheops import cached
|
||||
from django.conf import settings
|
||||
from packaging import version
|
||||
|
||||
if settings.GITHUB_VERSION_TIMEOUT and settings.GITHUB_REPOSITORY:
|
||||
@cached(timeout=settings.GITHUB_VERSION_TIMEOUT)
|
||||
def get_latest_version():
|
||||
url = 'https://api.github.com/repos/{}/releases'.format(settings.GITHUB_REPOSITORY)
|
||||
headers = {
|
||||
'Accept': 'application/vnd.github.v3+json',
|
||||
}
|
||||
try:
|
||||
response = requests.get(url, headers=headers)
|
||||
versions = [(version.parse(release['tag_name']), release.get('html_url'))
|
||||
for release in response.json()
|
||||
if 'tag_name' in release]
|
||||
if versions:
|
||||
return max(versions)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
return 'unknown', None
|
||||
@cached(timeout=settings.GITHUB_VERSION_TIMEOUT if settings.GITHUB_VERSION_TIMEOUT > 0 else 1)
|
||||
def get_releases(pre_releases=False):
|
||||
url = 'https://api.github.com/repos/{}/releases'.format(settings.GITHUB_REPOSITORY)
|
||||
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 = []
|
||||
|
||||
else:
|
||||
def get_latest_version():
|
||||
return None
|
||||
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.GITHUB_VERSION_TIMEOUT > 0 and settings.GITHUB_REPOSITORY:
|
||||
releases = get_releases(pre_releases)
|
||||
if releases:
|
||||
return max(releases)
|
||||
|
||||
return 'unknown', None
|
||||
|
Loading…
Reference in New Issue
Block a user