helpers.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. import os
  2. import subprocess
  3. from datetime import datetime
  4. from db import db, Job, Run
  5. def read_archive_info(archive_name, backup_dir):
  6. """Lit les métadonnées d'une archive (backup_info.json embarqué + fallback Run table)."""
  7. archive_path = os.path.join(backup_dir, archive_name + ".tar")
  8. from jobs.utils import sudo_read_backup_info
  9. info = sudo_read_backup_info(archive_path)
  10. if not info.get("type"):
  11. run = Run.query.filter_by(archive_name=archive_name).first()
  12. if run:
  13. job = db.session.get(Job, run.job_id)
  14. if job:
  15. info["type"] = job.type
  16. info["_from_run"] = True
  17. return info
  18. def get_ynh_apps():
  19. """Retourne la liste des apps YunoHost installées."""
  20. try:
  21. import json
  22. result = subprocess.run(
  23. ["sudo", "yunohost", "app", "list", "--output-as", "json"],
  24. capture_output=True, text=True, timeout=15,
  25. )
  26. if result.returncode == 0:
  27. return json.loads(result.stdout).get("apps", [])
  28. except Exception:
  29. pass
  30. return []