diff --git a/InvenTree/InvenTree/context.py b/InvenTree/InvenTree/context.py index 1d07511fa9..43e8b904b9 100644 --- a/InvenTree/InvenTree/context.py +++ b/InvenTree/InvenTree/context.py @@ -42,6 +42,8 @@ def health_status(request): status['system_healthy'] = all_healthy + status['up_to_date'] = InvenTree.version.isInvenTreeUpToDate() + return status diff --git a/InvenTree/InvenTree/version.py b/InvenTree/InvenTree/version.py index 6aa5c2616c..bd11c50882 100644 --- a/InvenTree/InvenTree/version.py +++ b/InvenTree/InvenTree/version.py @@ -25,10 +25,13 @@ def inventreeVersion(): return INVENTREE_SW_VERSION -def inventreeVersionTuple(): +def inventreeVersionTuple(version=None): """ Return the InvenTree version string as (maj, min, sub) tuple """ - match = re.match(r"^.*(\d+)\.(\d+)\.(\d+).*$", INVENTREE_SW_VERSION) + if version is None: + version = INVENTREE_SW_VERSION + + match = re.match(r"^.*(\d+)\.(\d+)\.(\d+).*$", str(version)) return [int(g) for g in match.groups()] @@ -44,7 +47,30 @@ def versionTupleToInt(version): n += version[2] return n - + + +def isInvenTreeUpToDate(): + """ + Test if the InvenTree instance is "up to date" with the latest version. + + A background task periodically queries GitHub for latest version, + and stores it to the database as INVENTREE_LATEST_VERSION + """ + + latest = common.models.InvenTreeSetting.get_setting('INVENTREE_LATEST_VERSION', None) + + # No record for "latest" version - we must assume we are up to date! + if not latest: + return True + + # Extract "tuple" version + version = inventreeVersionTuple(latest) + version_int = versionTupleToInt(version) + + inventree_int = versionTupleToInt(inventreeVersionTuple()) + + return inventree_int >= version_int + def inventreeApiVersion(): return INVENTREE_API_VERSION diff --git a/InvenTree/templates/about.html b/InvenTree/templates/about.html index cedfb40ca1..30f9bd19d7 100644 --- a/InvenTree/templates/about.html +++ b/InvenTree/templates/about.html @@ -19,19 +19,30 @@ - {% trans "InvenTree Version" %}{% inventree_version %} + {% trans "InvenTree Version" %} + + {% inventree_version %} + {% if up_to_date %} + {% trans "Up to Date" %} + {% else %} + {% trans "Update Available" %} + {% endif %} + - {% trans "Django Version" %}{% django_version %} + {% trans "Django Version" %} + {% django_version %} - {% trans "Commit Hash" %}{% inventree_commit_hash %} + {% trans "Commit Hash" %} + {% inventree_commit_hash %} - {% trans "Commit Date" %}{% inventree_commit_date %} + {% trans "Commit Date" %} + {% inventree_commit_date %} diff --git a/InvenTree/templates/navbar.html b/InvenTree/templates/navbar.html index 6e3fe024ca..c52e87d753 100644 --- a/InvenTree/templates/navbar.html +++ b/InvenTree/templates/navbar.html @@ -59,8 +59,8 @@ {% endif %}