Compare commits
1 Commits
V1.0.1
...
40bab48806
| Author | SHA1 | Date | |
|---|---|---|---|
| 40bab48806 |
@@ -4,8 +4,8 @@
|
||||
"author": "Florian Heinz",
|
||||
"description": "Private Flask app for meals, shopping and gentle food planning",
|
||||
"tagline": "einfach essen planen",
|
||||
"version": "1.0.0",
|
||||
"upstreamVersion": "1.0.0",
|
||||
"version": "1.0.1",
|
||||
"upstreamVersion": "1.0.1",
|
||||
"healthCheckPath": "/",
|
||||
"httpPort": 8000,
|
||||
"manifestVersion": 2,
|
||||
|
||||
+32
-1
@@ -1,5 +1,6 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
import os
|
||||
import secrets
|
||||
from datetime import date, timedelta
|
||||
@@ -34,6 +35,7 @@ from .main import main_bp
|
||||
|
||||
WEEKDAY_NAMES = ["Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag"]
|
||||
WEEKDAY_SHORT_NAMES = ["Mo", "Di", "Mi", "Do", "Fr", "Sa", "So"]
|
||||
DEFAULT_RELEASE_URL = "https://git.hnz.io/hnzio/nouri-App/releases"
|
||||
|
||||
|
||||
def load_secret_key(data_dir: Path) -> str:
|
||||
@@ -54,11 +56,38 @@ def load_secret_key(data_dir: Path) -> str:
|
||||
return secret_value
|
||||
|
||||
|
||||
def load_app_version(root_dir: Path) -> str:
|
||||
env_version = os.environ.get("NOURI_APP_VERSION", "").strip()
|
||||
if env_version:
|
||||
return env_version
|
||||
|
||||
manifest_path = root_dir / "CloudronManifest.json"
|
||||
if manifest_path.exists():
|
||||
try:
|
||||
manifest_data = json.loads(manifest_path.read_text(encoding="utf-8"))
|
||||
except json.JSONDecodeError:
|
||||
manifest_data = {}
|
||||
manifest_version = str(
|
||||
manifest_data.get("upstreamVersion")
|
||||
or manifest_data.get("version")
|
||||
or ""
|
||||
).strip()
|
||||
if manifest_version:
|
||||
return manifest_version
|
||||
return "1.0.1"
|
||||
|
||||
|
||||
def load_release_url() -> str:
|
||||
return os.environ.get("NOURI_RELEASE_URL", DEFAULT_RELEASE_URL).strip() or DEFAULT_RELEASE_URL
|
||||
|
||||
|
||||
def create_app() -> Flask:
|
||||
root_dir = Path(__file__).resolve().parent.parent
|
||||
data_dir = Path(os.environ.get("NOURI_DATA_DIR", root_dir / "data")).resolve()
|
||||
upload_dir = data_dir / "uploads"
|
||||
db_path = data_dir / "nouri.sqlite3"
|
||||
app_version = load_app_version(root_dir)
|
||||
release_url = load_release_url()
|
||||
|
||||
data_dir.mkdir(parents=True, exist_ok=True)
|
||||
ensure_upload_structure(upload_dir)
|
||||
@@ -74,7 +103,8 @@ def create_app() -> Flask:
|
||||
SESSION_COOKIE_HTTPONLY=True,
|
||||
SESSION_COOKIE_SAMESITE="Lax",
|
||||
SESSION_COOKIE_SECURE=os.environ.get("NOURI_SECURE_COOKIES", "0") == "1",
|
||||
APP_VERSION="1.0.0",
|
||||
APP_VERSION=app_version,
|
||||
RELEASE_URL=release_url,
|
||||
TIMEZONE=os.environ.get("NOURI_TIMEZONE", "Europe/Berlin"),
|
||||
VAPID_PUBLIC_KEY=os.environ.get("NOURI_VAPID_PUBLIC_KEY", ""),
|
||||
VAPID_PRIVATE_KEY=os.environ.get("NOURI_VAPID_PRIVATE_KEY", ""),
|
||||
@@ -114,6 +144,7 @@ def create_app() -> Flask:
|
||||
"notification_channel_options": NOTIFICATION_CHANNEL_OPTIONS,
|
||||
"today": date.today(),
|
||||
"app_version": app.config["APP_VERSION"],
|
||||
"app_release_url": app.config["RELEASE_URL"],
|
||||
"push_public_key": app.config["VAPID_PUBLIC_KEY"],
|
||||
"push_available": bool(app.config["VAPID_PUBLIC_KEY"] and app.config["VAPID_PRIVATE_KEY"]),
|
||||
"weekday_name": lambda value: WEEKDAY_NAMES[value.weekday()],
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="footer-copy">
|
||||
<span>Version {{ app_version }}</span>
|
||||
<a href="{{ app_release_url }}" target="_blank" rel="noreferrer">Version {{ app_version }}</a>
|
||||
<span>Made with <span class="ui-icon icon-heart"></span> in Göttingen</span>
|
||||
</div>
|
||||
<div class="footer-copy">
|
||||
|
||||
Reference in New Issue
Block a user