| 1234567891011121314151617181920212223242526272829303132333435 |
- import os
- import subprocess
- from datetime import datetime
- from db import db, Job, Run
- def read_archive_info(archive_name, backup_dir):
- """Lit les métadonnées d'une archive (backup_info.json embarqué + fallback Run table)."""
- archive_path = os.path.join(backup_dir, archive_name + ".tar")
- from jobs.utils import sudo_read_backup_info
- info = sudo_read_backup_info(archive_path)
- if not info.get("type"):
- run = Run.query.filter_by(archive_name=archive_name).first()
- if run:
- job = db.session.get(Job, run.job_id)
- if job:
- info["type"] = job.type
- info["_from_run"] = True
- return info
- def get_ynh_apps():
- """Retourne la liste des apps YunoHost installées."""
- try:
- import json
- result = subprocess.run(
- ["sudo", "yunohost", "app", "list", "--output-as", "json"],
- capture_output=True, text=True, timeout=15,
- )
- if result.returncode == 0:
- return json.loads(result.stdout).get("apps", [])
- except Exception:
- pass
- return []
|