refactor function

This commit is contained in:
Mateusz Gruszczyński 2025-02-28 12:18:57 +01:00
parent 8a7cb0a077
commit 4e965195f5

60
app.py
View File

@ -375,15 +375,57 @@ def get_release_type(version_text):
@app.template_filter('format_version')
def format_version(value):
import re
# Poprawiona wersja obsługująca różne formaty wersji
match = re.match(r"(\d+\.\d+)(rc|beta)?(\d)(\d{4})?", value)
if match:
main_version, label, number, _ = match.groups()
if label:
return f"{main_version}{label}{number}"
return main_version
return value # Zwraca oryginalną wartość, jeśli nie pasuje
# Krok 1: Usuń wszystko w nawiasach (np. „(2025-Feb-12 11:20)”).
value = re.sub(r'\(.*?\)', '', value).strip()
# Krok 2: Spróbuj dopasować strukturę: major.minor(.patch)?(beta|rc)(num)?
# 1) major (np. 7)
# 2) minor (np. 18)
# 3) patch (np. 20)
# 4) suffix (beta|rc)
# 5) suffixnum (np. 2025)
pattern = r'^(\d+)' # grupa 1: major
pattern += r'(?:\.(\d+))?' # grupa 2: minor (opcjonalnie)
pattern += r'(?:\.(\d+))?' # grupa 3: patch (opcjonalnie)
pattern += r'(?:(beta|rc)(\d+))?'# grupa 4 i 5: beta|rc + numer (opcjonalnie)
match = re.match(pattern, value)
if not match:
# Jeśli nie uda się dopasować, zwracamy oryginał
return value
major, minor, patch, suffix, suffixnum = match.groups()
# Funkcja pomocnicza do przycinania łańcucha cyfr do maksymalnie 2 znaków
def truncate_2_digits(num_str):
return num_str[:2] if len(num_str) > 2 else num_str
# Składamy główne części wersji
result = major
if minor:
# np. "182025" → "18"
result += '.' + truncate_2_digits(minor)
if patch:
# np. "182025" → "18"
result += '.' + truncate_2_digits(patch)
if suffix:
# Dodajemy samo "beta"/"rc"
result += suffix
if suffixnum:
# 1) Najpierw sprawdźmy, czy w numerze sufiksu jest (zlepiony) rok, np. "22025" → "2" i "2025"
# Wzorzec: do 2 cyfr + "20xx", np. "14" + "2025", "2" + "2025" itd.
m_year = re.match(r'^(\d{1,2})(20\d{2})$', suffixnum)
if m_year:
# Jeśli tak, zostawiamy tylko pierwszą grupę (np. "14" z "14"+"2025")
suffixnum = m_year.group(1)
# 2) Ostatecznie przycinamy do 2 cyfr (jeśli ktoś wpisał np. "beta123")
suffixnum = truncate_2_digits(suffixnum)
result += suffixnum
return result
def fetch_changelogs(force=False):
changelog_url = "https://mikrotik.com/download/changelogs"