refactor function
This commit is contained in:
parent
8a7cb0a077
commit
4e965195f5
60
app.py
60
app.py
@ -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"
|
||||
|
Loading…
x
Reference in New Issue
Block a user