Skip to content

Commit 927da43

Browse files
[PRIME-17] fix: enable github api to fetch latest version information (#7548)
* fix: enable github api to fetch latest version information * chore: typo fixes * chore: add timeout to request
1 parent 9c21fd3 commit 927da43

File tree

2 files changed

+33
-23
lines changed

2 files changed

+33
-23
lines changed

apps/api/plane/license/management/commands/register_instance.py

Lines changed: 33 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@
22
import json
33
import secrets
44
import os
5+
import requests
56

67
# Django imports
78
from django.core.management.base import BaseCommand, CommandError
89
from django.utils import timezone
9-
from django.conf import settings
10+
1011

1112
# Module imports
1213
from plane.license.models import Instance, InstanceEdition
@@ -20,35 +21,50 @@ def add_arguments(self, parser):
2021
# Positional argument
2122
parser.add_argument("machine_signature", type=str, help="Machine signature")
2223

23-
def read_package_json(self):
24-
with open("package.json", "r") as file:
25-
# Load JSON content from the file
26-
data = json.load(file)
24+
def check_for_current_version(self):
25+
if os.environ.get("APP_VERSION", False):
26+
return os.environ.get("APP_VERSION")
27+
28+
try:
29+
with open("package.json", "r") as file:
30+
data = json.load(file)
31+
return data.get("version", "v0.1.0")
32+
except Exception:
33+
self.stdout.write("Error checking for current version")
34+
return "v0.1.0"
2735

28-
payload = {
29-
"instance_key": settings.INSTANCE_KEY,
30-
"version": data.get("version", 0.1),
31-
}
32-
return payload
36+
def check_for_latest_version(self, fallback_version):
37+
try:
38+
response = requests.get(
39+
"https://api.github.com/repos/makeplane/plane/releases/latest",
40+
timeout=10,
41+
)
42+
response.raise_for_status()
43+
data = response.json()
44+
return data.get("tag_name", fallback_version)
45+
except Exception:
46+
self.stdout.write("Error checking for latest version")
47+
return fallback_version
3348

3449
def handle(self, *args, **options):
3550
# Check if the instance is registered
3651
instance = Instance.objects.first()
3752

53+
current_version = self.check_for_current_version()
54+
latest_version = self.check_for_latest_version(current_version)
55+
3856
# If instance is None then register this instance
3957
if instance is None:
4058
machine_signature = options.get("machine_signature", "machine-signature")
4159

4260
if not machine_signature:
4361
raise CommandError("Machine signature is required")
4462

45-
payload = self.read_package_json()
46-
4763
instance = Instance.objects.create(
4864
instance_name="Plane Community Edition",
4965
instance_id=secrets.token_hex(12),
50-
current_version=payload.get("version"),
51-
latest_version=payload.get("version"),
66+
current_version=current_version,
67+
latest_version=latest_version,
5268
last_checked_at=timezone.now(),
5369
is_test=os.environ.get("IS_TEST", "0") == "1",
5470
edition=InstanceEdition.PLANE_COMMUNITY.value,
@@ -57,11 +73,11 @@ def handle(self, *args, **options):
5773
self.stdout.write(self.style.SUCCESS("Instance registered"))
5874
else:
5975
self.stdout.write(self.style.SUCCESS("Instance already registered"))
60-
payload = self.read_package_json()
76+
6177
# Update the instance details
6278
instance.last_checked_at = timezone.now()
63-
instance.current_version = payload.get("version")
64-
instance.latest_version = payload.get("version")
79+
instance.current_version = current_version
80+
instance.latest_version = latest_version
6581
instance.is_test = os.environ.get("IS_TEST", "0") == "1"
6682
instance.edition = InstanceEdition.PLANE_COMMUNITY.value
6783
instance.save()

apps/api/plane/settings/common.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -304,16 +304,10 @@
304304
ANALYTICS_SECRET_KEY = os.environ.get("ANALYTICS_SECRET_KEY", False)
305305
ANALYTICS_BASE_API = os.environ.get("ANALYTICS_BASE_API", False)
306306

307-
308307
# Posthog settings
309308
POSTHOG_API_KEY = os.environ.get("POSTHOG_API_KEY", False)
310309
POSTHOG_HOST = os.environ.get("POSTHOG_HOST", False)
311310

312-
# instance key
313-
INSTANCE_KEY = os.environ.get(
314-
"INSTANCE_KEY", "ae6517d563dfc13d8270bd45cf17b08f70b37d989128a9dab46ff687603333c3"
315-
)
316-
317311
# Skip environment variable configuration
318312
SKIP_ENV_VAR = os.environ.get("SKIP_ENV_VAR", "1") == "1"
319313

0 commit comments

Comments
 (0)