19 lines
510 B
Python
19 lines
510 B
Python
import hashlib
|
|
from functools import lru_cache
|
|
from pathlib import Path
|
|
|
|
from flask import url_for
|
|
|
|
|
|
@lru_cache(maxsize=128)
|
|
def asset_version(file_path: str) -> str:
|
|
path = Path(file_path)
|
|
if not path.exists():
|
|
return '0'
|
|
return hashlib.md5(path.read_bytes()).hexdigest()[:10]
|
|
|
|
|
|
def asset_url(relative_path: str) -> str:
|
|
base_path = Path(__file__).resolve().parent.parent / 'static' / relative_path
|
|
return url_for('static', filename=relative_path, v=asset_version(str(base_path)))
|