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')
|
@app.template_filter('format_version')
|
||||||
def format_version(value):
|
def format_version(value):
|
||||||
import re
|
# Krok 1: Usuń wszystko w nawiasach (np. „(2025-Feb-12 11:20)”).
|
||||||
# Poprawiona wersja obsługująca różne formaty wersji
|
value = re.sub(r'\(.*?\)', '', value).strip()
|
||||||
match = re.match(r"(\d+\.\d+)(rc|beta)?(\d)(\d{4})?", value)
|
|
||||||
if match:
|
# Krok 2: Spróbuj dopasować strukturę: major.minor(.patch)?(beta|rc)(num)?
|
||||||
main_version, label, number, _ = match.groups()
|
# 1) major (np. 7)
|
||||||
if label:
|
# 2) minor (np. 18)
|
||||||
return f"{main_version}{label}{number}"
|
# 3) patch (np. 20)
|
||||||
return main_version
|
# 4) suffix (beta|rc)
|
||||||
return value # Zwraca oryginalną wartość, jeśli nie pasuje
|
# 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):
|
def fetch_changelogs(force=False):
|
||||||
changelog_url = "https://mikrotik.com/download/changelogs"
|
changelog_url = "https://mikrotik.com/download/changelogs"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user