parent
5d314292fb
commit
575bde1ff5
@ -164,8 +164,6 @@ async def service_config(request: Request, name: str):
|
|||||||
result = service_manager.save_config(name, dict(form))
|
result = service_manager.save_config(name, dict(form))
|
||||||
if result is None:
|
if result is None:
|
||||||
return JSONResponse({"ok": False, "error": "unknown service"}, status_code=404)
|
return JSONResponse({"ok": False, "error": "unknown service"}, status_code=404)
|
||||||
if not result["ok"]:
|
|
||||||
return JSONResponse(result, status_code=400)
|
|
||||||
after = svc.get_config() if svc is not None else {}
|
after = svc.get_config() if svc is not None else {}
|
||||||
for key, new_value in after.items():
|
for key, new_value in after.items():
|
||||||
old_value = before.get(key)
|
old_value = before.get(key)
|
||||||
@ -183,4 +181,6 @@ async def service_config(request: Request, name: str):
|
|||||||
summary=f"admin {admin['username']} updated {key} of service {name}",
|
summary=f"admin {admin['username']} updated {key} of service {name}",
|
||||||
links=[audit.service_link(name), audit.setting(key)],
|
links=[audit.service_link(name), audit.setting(key)],
|
||||||
)
|
)
|
||||||
|
if not result["ok"]:
|
||||||
|
return JSONResponse(result, status_code=400)
|
||||||
return JSONResponse(result)
|
return JSONResponse(result)
|
||||||
|
|||||||
@ -68,12 +68,13 @@ class ServiceManager:
|
|||||||
valid[field.key] = field.to_storage(field.coerce(raw))
|
valid[field.key] = field.to_storage(field.coerce(raw))
|
||||||
except ValueError as e:
|
except ValueError as e:
|
||||||
errors[field.key] = str(e)
|
errors[field.key] = str(e)
|
||||||
if errors:
|
|
||||||
return {"ok": False, "errors": errors}
|
|
||||||
for key, value in valid.items():
|
for key, value in valid.items():
|
||||||
set_setting(key, value)
|
set_setting(key, value)
|
||||||
logger.info(f"Service {name} config saved ({len(valid)} fields)")
|
if valid:
|
||||||
return {"ok": True, "errors": {}}
|
logger.info(f"Service {name} config saved ({len(valid)} fields)")
|
||||||
|
if errors:
|
||||||
|
return {"ok": False, "errors": errors, "saved": list(valid.keys())}
|
||||||
|
return {"ok": True, "errors": {}, "saved": list(valid.keys())}
|
||||||
|
|
||||||
def supervise(self) -> None:
|
def supervise(self) -> None:
|
||||||
for svc in self._services.values():
|
for svc in self._services.values():
|
||||||
|
|||||||
@ -41,7 +41,7 @@
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="svc-tabpane" data-tab-pane="config">
|
<section class="svc-tabpane" data-tab-pane="config">
|
||||||
<form class="service-config" data-config-form data-service="{{ svc.name }}">
|
<form class="service-config" data-config-form data-service="{{ svc.name }}" autocomplete="off">
|
||||||
{% for group in svc.field_groups %}
|
{% for group in svc.field_groups %}
|
||||||
<fieldset class="config-section">
|
<fieldset class="config-section">
|
||||||
<legend>{{ group.name }}</legend>
|
<legend>{{ group.name }}</legend>
|
||||||
@ -62,7 +62,7 @@
|
|||||||
{% elif field.type == "text" %}
|
{% elif field.type == "text" %}
|
||||||
<textarea id="{{ svc.name }}_{{ field.key }}" name="{{ field.key }}" rows="3">{{ field.value }}</textarea>
|
<textarea id="{{ svc.name }}_{{ field.key }}" name="{{ field.key }}" rows="3">{{ field.value }}</textarea>
|
||||||
{% elif field.type == "password" %}
|
{% elif field.type == "password" %}
|
||||||
<input type="password" id="{{ svc.name }}_{{ field.key }}" name="{{ field.key }}" value="" placeholder="{% if field.is_set %}Set - leave blank to keep current{% else %}Not set{% endif %}">
|
<input type="password" id="{{ svc.name }}_{{ field.key }}" name="{{ field.key }}" value="" autocomplete="new-password" data-lpignore="true" data-1p-ignore data-form-type="other" placeholder="{% if field.is_set %}Set - leave blank to keep current{% else %}Not set{% endif %}">
|
||||||
{% elif field.type == "int" %}
|
{% elif field.type == "int" %}
|
||||||
<input type="number" id="{{ svc.name }}_{{ field.key }}" name="{{ field.key }}" value="{{ field.value }}"{% if field.minimum is not none %} min="{{ field.minimum }}"{% endif %}{% if field.maximum is not none %} max="{{ field.maximum }}"{% endif %} style="max-width: 160px;">
|
<input type="number" id="{{ svc.name }}_{{ field.key }}" name="{{ field.key }}" value="{{ field.value }}"{% if field.minimum is not none %} min="{{ field.minimum }}"{% endif %}{% if field.maximum is not none %} max="{{ field.maximum }}"{% endif %} style="max-width: 160px;">
|
||||||
{% elif field.type == "float" %}
|
{% elif field.type == "float" %}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user