Team Ai
Apppublic

Underground-Digital/Workflow-Engine

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
version.py63 linesDownload Raw Back to console
1import json2import logging3 4import requests5from flask_restful import Resource, reqparse6from packaging import version7 8from configs import dify_config9 10from . import api11 12 13class VersionApi(Resource):14    def get(self):15        parser = reqparse.RequestParser()16        parser.add_argument("current_version", type=str, required=True, location="args")17        args = parser.parse_args()18        check_update_url = dify_config.CHECK_UPDATE_URL19 20        result = {21            "version": dify_config.CURRENT_VERSION,22            "release_date": "",23            "release_notes": "",24            "can_auto_update": False,25            "features": {26                "can_replace_logo": dify_config.CAN_REPLACE_LOGO,27                "model_load_balancing_enabled": dify_config.MODEL_LB_ENABLED,28            },29        }30 31        if not check_update_url:32            return result33 34        try:35            response = requests.get(check_update_url, {"current_version": args.get("current_version")})36        except Exception as error:37            logging.warning("Check update version error: {}.".format(str(error)))38            result["version"] = args.get("current_version")39            return result40 41        content = json.loads(response.content)42        if _has_new_version(latest_version=content["version"], current_version=f"{args.get('current_version')}"):43            result["version"] = content["version"]44            result["release_date"] = content["releaseDate"]45            result["release_notes"] = content["releaseNotes"]46            result["can_auto_update"] = content["canAutoUpdate"]47        return result48 49 50def _has_new_version(*, latest_version: str, current_version: str) -> bool:51    try:52        latest = version.parse(latest_version)53        current = version.parse(current_version)54 55        # Compare versions56        return latest > current57    except version.InvalidVersion:58        logging.warning(f"Invalid version format: latest={latest_version}, current={current_version}")59        return False60 61 62api.add_resource(VersionApi, "/version")63