Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import json
  2. import logging
  3. import requests
  4. from flask_restx import Resource, reqparse
  5. from packaging import version
  6. from configs import dify_config
  7. from . import api
  8. logger = logging.getLogger(__name__)
  9. class VersionApi(Resource):
  10. def get(self):
  11. parser = reqparse.RequestParser()
  12. parser.add_argument("current_version", type=str, required=True, location="args")
  13. args = parser.parse_args()
  14. check_update_url = dify_config.CHECK_UPDATE_URL
  15. result = {
  16. "version": dify_config.project.version,
  17. "release_date": "",
  18. "release_notes": "",
  19. "can_auto_update": False,
  20. "features": {
  21. "can_replace_logo": dify_config.CAN_REPLACE_LOGO,
  22. "model_load_balancing_enabled": dify_config.MODEL_LB_ENABLED,
  23. },
  24. }
  25. if not check_update_url:
  26. return result
  27. try:
  28. response = requests.get(check_update_url, {"current_version": args["current_version"]}, timeout=(3, 10))
  29. except Exception as error:
  30. logger.warning("Check update version error: %s.", str(error))
  31. result["version"] = args["current_version"]
  32. return result
  33. content = json.loads(response.content)
  34. if _has_new_version(latest_version=content["version"], current_version=f"{args['current_version']}"):
  35. result["version"] = content["version"]
  36. result["release_date"] = content["releaseDate"]
  37. result["release_notes"] = content["releaseNotes"]
  38. result["can_auto_update"] = content["canAutoUpdate"]
  39. return result
  40. def _has_new_version(*, latest_version: str, current_version: str) -> bool:
  41. try:
  42. latest = version.parse(latest_version)
  43. current = version.parse(current_version)
  44. # Compare versions
  45. return latest > current
  46. except version.InvalidVersion:
  47. logger.warning("Invalid version format: latest=%s, current=%s", latest_version, current_version)
  48. return False
  49. api.add_resource(VersionApi, "/version")