mirror of
https://github.com/YunoHost/yunohost.git
synced 2024-09-03 20:06:10 +02:00
app_manifest: return base64 screenshot to API
This commit is contained in:
parent
d766e74a6a
commit
dcf4b85b21
1 changed files with 20 additions and 3 deletions
23
src/app.py
23
src/app.py
|
@ -821,11 +821,28 @@ def app_manifest(app):
|
||||||
|
|
||||||
manifest, extracted_app_folder = _extract_app(app)
|
manifest, extracted_app_folder = _extract_app(app)
|
||||||
|
|
||||||
shutil.rmtree(extracted_app_folder)
|
|
||||||
|
|
||||||
raw_questions = manifest.get("install", {}).values()
|
raw_questions = manifest.get("install", {}).values()
|
||||||
manifest["install"] = hydrate_questions_with_choices(raw_questions)
|
manifest["install"] = hydrate_questions_with_choices(raw_questions)
|
||||||
|
|
||||||
|
# Add a base64 image to be displayed in web-admin
|
||||||
|
if Moulinette.interface.type == "api":
|
||||||
|
import base64
|
||||||
|
|
||||||
|
manifest["image"] = None
|
||||||
|
screenshots_folder = os.path.join(extracted_app_folder, "doc", "screenshots")
|
||||||
|
|
||||||
|
if os.path.exists(screenshots_folder):
|
||||||
|
with os.scandir(screenshots_folder) as it:
|
||||||
|
for entry in it:
|
||||||
|
ext = os.path.splitext(entry.name)[1].replace(".", "").lower()
|
||||||
|
if entry.is_file() and ext in ("png", "jpg", "jpeg", "webp"):
|
||||||
|
with open(entry.path, "rb") as img_file:
|
||||||
|
data = base64.b64encode(img_file.read()).decode("utf-8")
|
||||||
|
manifest["image"] = f"data:image/{ext};charset=utf-8;base64,{data}"
|
||||||
|
break
|
||||||
|
|
||||||
|
shutil.rmtree(extracted_app_folder)
|
||||||
|
|
||||||
manifest["requirements"] = {}
|
manifest["requirements"] = {}
|
||||||
for name, check, values, err in _check_manifest_requirements(
|
for name, check, values, err in _check_manifest_requirements(
|
||||||
manifest, action="install"
|
manifest, action="install"
|
||||||
|
@ -1675,7 +1692,7 @@ def app_config_get(app, key="", full=False, export=False):
|
||||||
config_ = AppConfigPanel(app)
|
config_ = AppConfigPanel(app)
|
||||||
return config_.get(key, mode)
|
return config_.get(key, mode)
|
||||||
except YunohostValidationError as e:
|
except YunohostValidationError as e:
|
||||||
if Moulinette.interface.type == 'api' and e.key == "config_no_panel":
|
if Moulinette.interface.type == "api" and e.key == "config_no_panel":
|
||||||
# Be more permissive when no config panel found
|
# Be more permissive when no config panel found
|
||||||
return {}
|
return {}
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Add table
Reference in a new issue