Browse Source

Ajout doc si présence proxy

master
scayac 1 month ago
parent
commit
9db7014349
  1. 1
      backend/README_BACKEND.md
  2. 1
      frontend/README_FRONTEND.md
  3. 22
      frontend/app/routes.py
  4. 4
      frontend/app/static/css/style.css
  5. 3
      frontend/app/templates/base.html

1
backend/README_BACKEND.md

@ -37,6 +37,7 @@ python3 -m venv .venv @@ -37,6 +37,7 @@ python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
```
Si présence d'un proxy, la dernière commande sera `pip install -r requirements.txt --proxy http://proxy:port`.
## Configuration

1
frontend/README_FRONTEND.md

@ -18,6 +18,7 @@ python3 -m venv .venv @@ -18,6 +18,7 @@ python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
```
Si présence d'un proxy, la dernière commande sera `pip install -r requirements.txt --proxy http://proxy:port`.
## Execution

22
frontend/app/routes.py

@ -93,7 +93,7 @@ def login() -> str | Response: @@ -93,7 +93,7 @@ def login() -> str | Response:
except BackendApiError:
return render_template(
"login.html",
login_error="Impossible de se connecter au service pour le moment. Verifiez que le backend est demarre puis reessayez.",
login_error="Impossible de se connecter au service pour le moment. Vérifiez que le backend est demarré puis réessayez.",
attempted_username=username,
)
@ -161,11 +161,11 @@ def save_trigger() -> Response: @@ -161,11 +161,11 @@ def save_trigger() -> Response:
start_seconds = float(start_raw)
end_seconds = _parse_optional_float(end_raw)
except ValueError:
flash("Les temps de debut/fin doivent etre numeriques.", "error")
flash("Les temps de debut/fin doivent être numériques.", "error")
return redirect(url_for("ui.dashboard"))
if start_seconds < 0 or (end_seconds is not None and end_seconds <= start_seconds):
flash("Fenetre temporelle invalide.", "error")
flash("Fenêtre temporelle invalide.", "error")
return redirect(url_for("ui.dashboard"))
payload = {
@ -186,7 +186,7 @@ def save_trigger() -> Response: @@ -186,7 +186,7 @@ def save_trigger() -> Response:
flash(f"Echec d'enregistrement du trigger: {exc}", "error")
return redirect(url_for("ui.dashboard"))
flash(f"Trigger {trigger_type} enregistre.", "success")
flash(f"Trigger {trigger_type} enregistré.", "success")
return redirect(url_for("ui.dashboard"))
@ -224,7 +224,7 @@ def play_trigger() -> Response: @@ -224,7 +224,7 @@ def play_trigger() -> Response:
try:
client.play_trigger(trigger_id)
flash(f"Trigger {trigger_id} demarre.", "success")
flash(f"Trigger {trigger_id} demarré.", "success")
except BackendApiError as exc:
flash(f"Echec du lancement: {exc}", "error")
return redirect(url_for("ui.dashboard"))
@ -241,7 +241,7 @@ def stop_audio() -> Response: @@ -241,7 +241,7 @@ def stop_audio() -> Response:
client.stop_audio()
flash("Audio arrete.", "info")
except BackendApiError as exc:
flash(f"Echec de l'arret audio: {exc}", "error")
flash(f"Echec de l'arrêt audio: {exc}", "error")
return redirect(url_for("ui.dashboard"))
@ -253,7 +253,7 @@ def upload_audio() -> Response: @@ -253,7 +253,7 @@ def upload_audio() -> Response:
audio = request.files.get("audio_file")
if audio is None or audio.filename is None or audio.filename.strip() == "":
flash("Selectionnez d'abord un fichier.", "error")
flash("Sélectionnez d'abord un fichier.", "error")
return redirect(url_for("ui.dashboard"))
filename = secure_filename(audio.filename)
@ -263,17 +263,17 @@ def upload_audio() -> Response: @@ -263,17 +263,17 @@ def upload_audio() -> Response:
ext = Path(filename).suffix.lower()
if ext not in ALLOWED_AUDIO_EXTENSIONS:
flash("Format audio non supporte.", "error")
flash("Format audio non supporté.", "error")
return redirect(url_for("ui.dashboard"))
existing_names = {item.name.lower() for item in _music_dir().iterdir() if item.is_file()}
if filename.lower() in existing_names:
flash("Un fichier avec ce nom existe deja.", "error")
flash("Un fichier avec ce nom existe déjà.", "error")
return redirect(url_for("ui.dashboard"))
destination = _music_dir() / filename
audio.save(destination)
flash(f"Fichier {filename} televerse.", "success")
flash(f"Fichier {filename} téléversé.", "success")
return redirect(url_for("ui.dashboard"))
@ -294,7 +294,7 @@ def delete_audio() -> Response: @@ -294,7 +294,7 @@ def delete_audio() -> Response:
return redirect(url_for("ui.dashboard"))
target.unlink()
flash(f"Fichier {filename} supprime.", "success")
flash(f"Fichier {filename} supprimé.", "success")
return redirect(url_for("ui.dashboard"))

4
frontend/app/static/css/style.css

@ -23,7 +23,7 @@ body { @@ -23,7 +23,7 @@ body {
}
body {
font-family: "Sora", sans-serif;
font-family: "Noto Sans", "DejaVu Sans", "Segoe UI", "Helvetica Neue", Arial, sans-serif;
color: var(--ink);
background:
radial-gradient(circle at 15% -5%, #ffe8cc 0%, transparent 40%),
@ -35,7 +35,7 @@ body { @@ -35,7 +35,7 @@ body {
h1,
h2,
h3 {
font-family: "Space Grotesk", sans-serif;
font-family: "Noto Sans", "DejaVu Sans", "Segoe UI", "Helvetica Neue", Arial, sans-serif;
margin: 0 0 0.4rem;
}

3
frontend/app/templates/base.html

@ -4,9 +4,6 @@ @@ -4,9 +4,6 @@
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>pySonnerie - Interface de controle</title>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Sora:wght@300;400;600;700&family=Space+Grotesk:wght@500;700&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="{{ url_for('ui.static', filename='css/style.css') }}" />
</head>
<body>

Loading…
Cancel
Save