From 1736fe9d69e8b236af667bd40f5484d0431a701c Mon Sep 17 00:00:00 2001 From: deepakdinesh1123 Date: Mon, 11 Nov 2024 14:32:02 +0530 Subject: [PATCH] template upload checks zango version --- .../api/platform/tenancy/v1/serializers.py | 17 +++++++++-------- .../src/zango/api/platform/tenancy/v1/utils.py | 13 +++++++++++++ 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/backend/src/zango/api/platform/tenancy/v1/serializers.py b/backend/src/zango/api/platform/tenancy/v1/serializers.py index ce614523..8251c4e2 100644 --- a/backend/src/zango/api/platform/tenancy/v1/serializers.py +++ b/backend/src/zango/api/platform/tenancy/v1/serializers.py @@ -51,14 +51,15 @@ def update(self, instance, validated_data): "prod": "main", } if extra_config_json.get("git_config", None): - extra_config_json["git_config"]["branch"] = { - **extra_config_json["git_config"]["branch"], - **{ - k: v - for k, v in default_branch_config.items() - if extra_config_json["git_config"]["branch"][k] is None - }, - } + if extra_config_json["git_config"].get("repo_url", None): + extra_config_json["git_config"]["branch"] = { + **extra_config_json["git_config"]["branch"], + **{ + k: v + for k, v in default_branch_config.items() + if extra_config_json["git_config"]["branch"][k] is None + }, + } validated_data["extra_config"] = extra_config_json except json.JSONDecodeError: raise serializers.ValidationError( diff --git a/backend/src/zango/api/platform/tenancy/v1/utils.py b/backend/src/zango/api/platform/tenancy/v1/utils.py index b0d9e2f5..f0722050 100644 --- a/backend/src/zango/api/platform/tenancy/v1/utils.py +++ b/backend/src/zango/api/platform/tenancy/v1/utils.py @@ -2,6 +2,11 @@ import os import zipfile +from packaging.specifiers import SpecifierSet +from packaging.version import Version + +import zango + def extract_app_details_from_zip(template_zip): settings_filename = "settings.json" @@ -31,6 +36,14 @@ def extract_app_details_from_zip(template_zip): # Parse the JSON content settings = json.loads(settings_content) + if settings.get("zango_version"): + zango_version = settings["zango_version"] + installed_zango_version = Version(zango.__version__) + specifier = SpecifierSet(zango_version) + if installed_zango_version not in specifier: + raise Exception( + f"Zango version {installed_zango_version} is not compatible with {zango_version}" + ) return ( settings["version"], settings["app_name"],