mirror of
https://github.com/YunoHost/yunohost.git
synced 2024-09-03 20:06:10 +02:00
Merge pull request #1449 from YunoHost/fix-configpanel-multiinstance
[fix] Config Panel edits partially config of the first instance
This commit is contained in:
commit
859a091fae
1 changed files with 23 additions and 22 deletions
45
src/app.py
45
src/app.py
|
@ -293,8 +293,8 @@ def app_map(app=None, raw=False, user=None):
|
||||||
permissions = user_permission_list(full=True, absolute_urls=True, apps=apps)[
|
permissions = user_permission_list(full=True, absolute_urls=True, apps=apps)[
|
||||||
"permissions"
|
"permissions"
|
||||||
]
|
]
|
||||||
for app_id in apps:
|
for app in apps:
|
||||||
app_settings = _get_app_settings(app_id)
|
app_settings = _get_app_settings(app)
|
||||||
if not app_settings:
|
if not app_settings:
|
||||||
continue
|
continue
|
||||||
if "domain" not in app_settings:
|
if "domain" not in app_settings:
|
||||||
|
@ -310,19 +310,19 @@ def app_map(app=None, raw=False, user=None):
|
||||||
continue
|
continue
|
||||||
# Users must at least have access to the main permission to have access to extra permissions
|
# Users must at least have access to the main permission to have access to extra permissions
|
||||||
if user:
|
if user:
|
||||||
if not app_id + ".main" in permissions:
|
if not app + ".main" in permissions:
|
||||||
logger.warning(
|
logger.warning(
|
||||||
f"Uhoh, no main permission was found for app {app_id} ... sounds like an app was only partially removed due to another bug :/"
|
f"Uhoh, no main permission was found for app {app} ... sounds like an app was only partially removed due to another bug :/"
|
||||||
)
|
)
|
||||||
continue
|
continue
|
||||||
main_perm = permissions[app_id + ".main"]
|
main_perm = permissions[app + ".main"]
|
||||||
if user not in main_perm["corresponding_users"]:
|
if user not in main_perm["corresponding_users"]:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
this_app_perms = {
|
this_app_perms = {
|
||||||
p: i
|
p: i
|
||||||
for p, i in permissions.items()
|
for p, i in permissions.items()
|
||||||
if p.startswith(app_id + ".") and (i["url"] or i["additional_urls"])
|
if p.startswith(app + ".") and (i["url"] or i["additional_urls"])
|
||||||
}
|
}
|
||||||
|
|
||||||
for perm_name, perm_info in this_app_perms.items():
|
for perm_name, perm_info in this_app_perms.items():
|
||||||
|
@ -362,7 +362,7 @@ def app_map(app=None, raw=False, user=None):
|
||||||
perm_path = "/"
|
perm_path = "/"
|
||||||
if perm_domain not in result:
|
if perm_domain not in result:
|
||||||
result[perm_domain] = {}
|
result[perm_domain] = {}
|
||||||
result[perm_domain][perm_path] = {"label": perm_label, "id": app_id}
|
result[perm_domain][perm_path] = {"label": perm_label, "id": app}
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
@ -1592,15 +1592,16 @@ ynh_app_config_run $1
|
||||||
|
|
||||||
# Call config script to extract current values
|
# Call config script to extract current values
|
||||||
logger.debug(f"Calling '{action}' action from config script")
|
logger.debug(f"Calling '{action}' action from config script")
|
||||||
app_id, app_instance_nb = _parse_app_instance_name(self.entity)
|
app = self.entity
|
||||||
settings = _get_app_settings(app_id)
|
app_id, app_instance_nb = _parse_app_instance_name(app)
|
||||||
|
settings = _get_app_settings(app)
|
||||||
env.update(
|
env.update(
|
||||||
{
|
{
|
||||||
"app_id": app_id,
|
"app_id": app_id,
|
||||||
"app": self.entity,
|
"app": app,
|
||||||
"app_instance_nb": str(app_instance_nb),
|
"app_instance_nb": str(app_instance_nb),
|
||||||
"final_path": settings.get("final_path", ""),
|
"final_path": settings.get("final_path", ""),
|
||||||
"YNH_APP_BASEDIR": os.path.join(APPS_SETTING_PATH, self.entity),
|
"YNH_APP_BASEDIR": os.path.join(APPS_SETTING_PATH, app),
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -1698,20 +1699,20 @@ def _get_app_actions(app_id):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
def _get_app_settings(app_id):
|
def _get_app_settings(app):
|
||||||
"""
|
"""
|
||||||
Get settings of an installed app
|
Get settings of an installed app
|
||||||
|
|
||||||
Keyword arguments:
|
Keyword arguments:
|
||||||
app_id -- The app id
|
app -- The app id (like nextcloud__2)
|
||||||
|
|
||||||
"""
|
"""
|
||||||
if not _is_installed(app_id):
|
if not _is_installed(app):
|
||||||
raise YunohostValidationError(
|
raise YunohostValidationError(
|
||||||
"app_not_installed", app=app_id, all_apps=_get_all_installed_apps_id()
|
"app_not_installed", app=app, all_apps=_get_all_installed_apps_id()
|
||||||
)
|
)
|
||||||
try:
|
try:
|
||||||
with open(os.path.join(APPS_SETTING_PATH, app_id, "settings.yml")) as f:
|
with open(os.path.join(APPS_SETTING_PATH, app, "settings.yml")) as f:
|
||||||
settings = yaml.safe_load(f)
|
settings = yaml.safe_load(f)
|
||||||
# If label contains unicode char, this may later trigger issues when building strings...
|
# If label contains unicode char, this may later trigger issues when building strings...
|
||||||
# FIXME: this should be propagated to read_yaml so that this fix applies everywhere I think...
|
# FIXME: this should be propagated to read_yaml so that this fix applies everywhere I think...
|
||||||
|
@ -1729,25 +1730,25 @@ def _get_app_settings(app_id):
|
||||||
or not settings.get("path", "/").startswith("/")
|
or not settings.get("path", "/").startswith("/")
|
||||||
):
|
):
|
||||||
settings["path"] = "/" + settings["path"].strip("/")
|
settings["path"] = "/" + settings["path"].strip("/")
|
||||||
_set_app_settings(app_id, settings)
|
_set_app_settings(app, settings)
|
||||||
|
|
||||||
if app_id == settings["id"]:
|
if app == settings["id"]:
|
||||||
return settings
|
return settings
|
||||||
except (IOError, TypeError, KeyError):
|
except (IOError, TypeError, KeyError):
|
||||||
logger.error(m18n.n("app_not_correctly_installed", app=app_id))
|
logger.error(m18n.n("app_not_correctly_installed", app=app))
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
|
|
||||||
def _set_app_settings(app_id, settings):
|
def _set_app_settings(app, settings):
|
||||||
"""
|
"""
|
||||||
Set settings of an app
|
Set settings of an app
|
||||||
|
|
||||||
Keyword arguments:
|
Keyword arguments:
|
||||||
app_id -- The app id
|
app_id -- The app id (like nextcloud__2)
|
||||||
settings -- Dict with app settings
|
settings -- Dict with app settings
|
||||||
|
|
||||||
"""
|
"""
|
||||||
with open(os.path.join(APPS_SETTING_PATH, app_id, "settings.yml"), "w") as f:
|
with open(os.path.join(APPS_SETTING_PATH, app, "settings.yml"), "w") as f:
|
||||||
yaml.safe_dump(settings, f, default_flow_style=False)
|
yaml.safe_dump(settings, f, default_flow_style=False)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue