mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Read version number from GitHub
This commit is contained in:
parent
3cf5aec289
commit
18defcff16
@ -1,6 +1,7 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import re
|
||||
import json
|
||||
import requests
|
||||
import logging
|
||||
@ -35,7 +36,7 @@ def schedule_task(taskname, **kwargs):
|
||||
**kwargs
|
||||
)
|
||||
|
||||
|
||||
|
||||
def delete_successful_tasks():
|
||||
"""
|
||||
Delete successful task logs
|
||||
@ -49,6 +50,12 @@ def check_for_updates():
|
||||
Check if there is an update for InvenTree
|
||||
"""
|
||||
|
||||
try:
|
||||
import common.models
|
||||
import InvenTree.version
|
||||
except AppRegistryNotReady:
|
||||
return
|
||||
|
||||
response = requests.get('https://api.github.com/repos/inventree/inventree/releases/latest')
|
||||
|
||||
if not response.status_code == 200:
|
||||
@ -57,12 +64,33 @@ def check_for_updates():
|
||||
|
||||
data = json.loads(response.text)
|
||||
|
||||
print("Response:")
|
||||
print(data)
|
||||
# TODO
|
||||
tag = data.get('tag_name', None)
|
||||
|
||||
return data
|
||||
if not tag:
|
||||
logger.warning(f"'tag_name' missing from GitHub response")
|
||||
return
|
||||
|
||||
match = re.match(r"^.*(\d+)\.(\d+)\.(\d+).*$", tag)
|
||||
|
||||
def test(x):
|
||||
print(f"Running at task! {x}")
|
||||
if not len(match.groups()) == 3:
|
||||
logger.warning(f"Version '{tag}' did not match expected pattern")
|
||||
return
|
||||
|
||||
try:
|
||||
latest_version = [int(x) for x in match.groups()]
|
||||
except (ValueError):
|
||||
logger.warning(f"Version '{tag}' not integer format")
|
||||
return
|
||||
|
||||
if not len(latest_version) == 3:
|
||||
logger.warning(f"Version '{tag}' is not correct format")
|
||||
return
|
||||
|
||||
logger.info(f"Latest InvenTree version: '{tag}'")
|
||||
|
||||
# Save the version to the database
|
||||
common.models.InvenTreeSetting.set_setting(
|
||||
'INVENTREE_LATEST_VERSION',
|
||||
tag,
|
||||
None
|
||||
)
|
||||
|
@ -7,6 +7,7 @@ from django.core.exceptions import ValidationError
|
||||
|
||||
from .validators import validate_overage, validate_part_name
|
||||
from . import helpers
|
||||
from . import version
|
||||
|
||||
from mptt.exceptions import InvalidMove
|
||||
|
||||
@ -269,3 +270,15 @@ class TestSerialNumberExtraction(TestCase):
|
||||
|
||||
with self.assertRaises(ValidationError):
|
||||
e("10, a, 7-70j", 4)
|
||||
|
||||
|
||||
class TestVersionNumber(TestCase):
|
||||
|
||||
def test_tuple(self):
|
||||
|
||||
v = version.inventreeVersionTuple()
|
||||
self.assertEqual(len(v), 3)
|
||||
|
||||
s = '.'.join(v)
|
||||
|
||||
self.assertTrue(s in version.inventreeVersion())
|
||||
|
@ -4,9 +4,11 @@ Provides information on the current InvenTree version
|
||||
|
||||
import subprocess
|
||||
import django
|
||||
import re
|
||||
|
||||
import common.models
|
||||
|
||||
|
||||
INVENTREE_SW_VERSION = "0.1.8 pre"
|
||||
|
||||
# Increment this number whenever there is a significant change to the API that any clients need to know about
|
||||
@ -23,6 +25,27 @@ def inventreeVersion():
|
||||
return INVENTREE_SW_VERSION
|
||||
|
||||
|
||||
def inventreeVersionTuple():
|
||||
""" Return the InvenTree version string as (maj, min, sub) tuple """
|
||||
|
||||
match = re.match(r"^.*(\d+)\.(\d+)\.(\d+).*$", INVENTREE_SW_VERSION)
|
||||
|
||||
return [int(g) for g in match.groups()]
|
||||
|
||||
|
||||
def versionTupleToInt(version):
|
||||
"""
|
||||
Convert a version tuple (x, y, z) to an integer.
|
||||
This simple integer can then be used for direct version comparison
|
||||
"""
|
||||
|
||||
n = version[0] * 1000 * 1000
|
||||
n += version[1] * 1000
|
||||
n += version[2]
|
||||
|
||||
return n
|
||||
|
||||
|
||||
def inventreeApiVersion():
|
||||
return INVENTREE_API_VERSION
|
||||
|
||||
|
@ -486,7 +486,7 @@ class InvenTreeSetting(models.Model):
|
||||
create: If True, create a new setting if the specified key does not exist.
|
||||
"""
|
||||
|
||||
if not user.is_staff:
|
||||
if user is not None and not user.is_staff:
|
||||
return
|
||||
|
||||
try:
|
||||
|
Loading…
Reference in New Issue
Block a user