From b6c2e70239f82554056696e7db3b0d4a658b3d07 Mon Sep 17 00:00:00 2001 From: Steve Garon Date: Thu, 26 Aug 2021 21:27:52 +0000 Subject: [PATCH] Add support for saving default service params values --- assemblyline_ui/api/v4/user.py | 6 ++++-- assemblyline_ui/helper/service.py | 19 ++++++++++++++----- assemblyline_ui/helper/user.py | 3 +-- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/assemblyline_ui/api/v4/user.py b/assemblyline_ui/api/v4/user.py index f9d07ab2..1c311b75 100644 --- a/assemblyline_ui/api/v4/user.py +++ b/assemblyline_ui/api/v4/user.py @@ -10,7 +10,7 @@ from assemblyline_ui.api.base import api_login, make_api_response, make_subapi_blueprint from assemblyline_ui.config import CLASSIFICATION, LOGGER, STORAGE, UI_MESSAGING, config from assemblyline_ui.helper.search import list_all_fields -from assemblyline_ui.helper.service import ui_to_submission_params +from assemblyline_ui.helper.service import simplify_service_spec, ui_to_submission_params from assemblyline_ui.helper.user import (get_dynamic_classification, load_user_settings, save_user_account, save_user_settings) from assemblyline_ui.http_exceptions import AccessDeniedException, InvalidDataException @@ -723,7 +723,9 @@ def set_user_settings(username, **_): } """ try: - if save_user_settings(username, request.json): + data = request.json + data['service_spec'] = simplify_service_spec(data.get('service_spec', {})) + if save_user_settings(username, data): return make_api_response({"success": True}) else: return make_api_response({"success": False}, "Failed to save user's settings", 500) diff --git a/assemblyline_ui/helper/service.py b/assemblyline_ui/helper/service.py index c1b6ee8e..37eb8ec2 100644 --- a/assemblyline_ui/helper/service.py +++ b/assemblyline_ui/helper/service.py @@ -1,15 +1,24 @@ - +from copy import copy from assemblyline_ui.config import config, SERVICE_LIST from assemblyline.odm.models.submission import DEFAULT_SRV_SEL -def get_default_service_spec(srv_list=None): +def get_default_service_spec(srv_list=None, user_default_values={}): if not srv_list: srv_list = SERVICE_LIST - return [{"name": x['name'], - "params": x["submission_params"]} - for x in srv_list if x["submission_params"]] + out = [] + for x in srv_list: + if x["submission_params"]: + param_object = {'name': x['name'], "params": []} + for param in x.get('submission_params'): + new_param = copy(param) + new_param['value'] = user_default_values.get(x['name'], {}).get(param['name'], param['value']) + param_object["params"].append(new_param) + + out.append(param_object) + + return out def get_default_service_list(srv_list=None, default_selection=None): diff --git a/assemblyline_ui/helper/user.py b/assemblyline_ui/helper/user.py index c4f1650a..57d14285 100644 --- a/assemblyline_ui/helper/user.py +++ b/assemblyline_ui/helper/user.py @@ -147,7 +147,7 @@ def load_user_settings(user): def_srv_list = settings.get('services', {}).get('selected', None) - settings['service_spec'] = get_default_service_spec(srv_list) + settings['service_spec'] = get_default_service_spec(srv_list, settings.get('service_spec', {})) settings['services'] = get_default_service_list(srv_list, def_srv_list) # Normalize the user's classification @@ -157,7 +157,6 @@ def load_user_settings(user): def save_user_settings(username, data): - data["service_spec"] = {} data["services"] = {'selected': simplify_services(data["services"])} return STORAGE.user_settings.save(username, data)