Fix add-ons screen showing 'requires Anki >= 2.1.231000'

This commit is contained in:
Damien Elmes 2023-11-05 11:16:09 +10:00
parent afa84b5f52
commit e7436a2b23
3 changed files with 28 additions and 2 deletions

View file

@ -323,6 +323,19 @@ def int_version() -> int:
return year_num * 10_000 + month_num * 100 + patch_num return year_num * 10_000 + month_num * 100 + patch_num
def int_version_to_str(ver: int) -> str:
if ver <= 99:
return f"2.1.{ver}"
else:
year = ver // 10_000
month = (ver // 100) % 100
patch = ver % 100
out = f"{year:02}.{month:02}"
if patch:
out += f".{patch}"
return out
# these two legacy aliases are provided without deprecation warnings, as add-ons that want to support # these two legacy aliases are provided without deprecation warnings, as add-ons that want to support
# old versions could not use the new name without catching cases where it doesn't exist # old versions could not use the new name without catching cases where it doesn't exist
point_version = int_version point_version = int_version

10
pylib/tests/test_utils.py Normal file
View file

@ -0,0 +1,10 @@
# Copyright: Ankitects Pty Ltd and contributors
# License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
from anki.utils import int_version_to_str
def test_int_version_to_str():
assert int_version_to_str(23) == "2.1.23"
assert int_version_to_str(230900) == "23.09"
assert int_version_to_str(230901) == "23.09.1"

View file

@ -31,6 +31,7 @@ import aqt.main
from anki.collection import AddonInfo from anki.collection import AddonInfo
from anki.httpclient import HttpClient from anki.httpclient import HttpClient
from anki.lang import without_unicode_isolation from anki.lang import without_unicode_isolation
from anki.utils import int_version_to_str
from aqt import gui_hooks from aqt import gui_hooks
from aqt.qt import * from aqt.qt import *
from aqt.utils import ( from aqt.utils import (
@ -825,10 +826,12 @@ class AddonsDialog(QDialog):
def compatible_string(self, addon: AddonMeta) -> str: def compatible_string(self, addon: AddonMeta) -> str:
min = addon.min_version min = addon.min_version
if min is not None and min > _current_version: if min is not None and min > _current_version:
return f"Anki >= 2.1.{min}" ver = int_version_to_str(min)
return f"Anki >= {ver}"
else: else:
max = abs(addon.max_version) max = abs(addon.max_version)
return f"Anki <= 2.1.{max}" ver = int_version_to_str(max)
return f"Anki <= {ver}"
def should_grey(self, addon: AddonMeta) -> bool: def should_grey(self, addon: AddonMeta) -> bool:
return not addon.enabled or not addon.compatible() return not addon.enabled or not addon.compatible()