Moved `cfg` retrieval inside the `if` block to ensure it is only fetched when `serv`, `edit`, and other conditions are met. Also, removed an unnecessary hidden input from the HTML template.
Added new icons for Keepalived and Roxy services in the static images and integrated them into the main menu. Updated HA view validation to use `eth` instead of `ip` and changed certain property types from string to integer. Enhanced error handling and data processing for the configuration routes and improved JSON data handling in the script.js file.
Added support for deleting configuration file versions via the DELETE method in ServiceConfigVersionsView. Updated corresponding routes, templates, and scripts to handle this functionality.
Removed the python-ldap dependency from requirements.txt and updated route handling to use JSON request data instead of form data. Additionally, responses are now wrapped using DataStrResponse for consistency.
Added decorator `@get_user_params()` to various route handlers in `routes.py`. Adjusted user handling in `config.py` by eliminating checks for 'login' and directly accessing user parameters from Flask's global variable `g`. Also moved user retrieval process from `routes.py` to lower level operations allowing for better abstraction and less redundancy.
Imported user module to the routes module and added a user parameter decorator to the save_config route. This parameter fetches the user ID, which is then used to fetch the username. This username is passed to the upload_and_restart functions as a login argument.