mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-16 12:12:53 -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 django.conf import settings as django_settings
|
||||||
from packaging import version
|
from packaging import version
|
||||||
|
|
||||||
from utilities.versions import get_latest_version
|
from utilities.versions import get_latest_release
|
||||||
|
|
||||||
|
|
||||||
def settings(request):
|
def settings(request):
|
||||||
@ -17,14 +17,14 @@ def latest_version(request):
|
|||||||
"""
|
"""
|
||||||
Get the latest version from the GitHub repository
|
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_str = None
|
||||||
latest_version_url = 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)
|
current_version = version.parse(django_settings.VERSION)
|
||||||
if github_latest_version > current_version:
|
if latest_release > current_version:
|
||||||
latest_version_str = str(github_latest_version)
|
latest_version_str = str(latest_release)
|
||||||
latest_version_url = github_url
|
latest_version_url = github_url
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
@ -3,25 +3,33 @@ from cacheops import cached
|
|||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from packaging import version
|
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:
|
if not pre_releases:
|
||||||
def get_latest_version():
|
releases = [(release, url)
|
||||||
return None
|
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