diff --git a/.gitignore b/.gitignore index 85142b006..a940ae11b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,13 @@ # Mycodo files test/ tests/ +!mycodo/tests/ site/ env/ .venv /databases/flask_secret_key /mycodo/config_override.py +/mycodo/flask_session/ *.db *.pem *.bak diff --git a/CHANGELOG.md b/CHANGELOG.md index 69a084e6e..60d581d3c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,6 +37,7 @@ sudo service mycodoflask restart ### Features - Add API endpoints: /log and /dependency ([#1430](https://github.com/kizniche/Mycodo/issues/1430)) + - Add ability to update (overwrite) a custom Function module without deleting it - Add Input: ENS160 ([#1434](https://github.com/kizniche/Mycodo/pull/1434)) - Add Output: Waveshare 8-Channel Raspberry Pi Relay Board B ([#1434](https://github.com/kizniche/Mycodo/pull/1434)) - Add Function: Camera: rpicam ([#1487](https://github.com/kizniche/Mycodo/pull/1487)) diff --git a/mycodo/mycodo_flask/forms/forms_settings.py b/mycodo/mycodo_flask/forms/forms_settings.py index 1ad64a619..af3daaa86 100644 --- a/mycodo/mycodo_flask/forms/forms_settings.py +++ b/mycodo/mycodo_flask/forms/forms_settings.py @@ -182,6 +182,11 @@ class ControllerDel(FlaskForm): delete_controller = SubmitField(TRANSLATIONS['delete']['title']) +class ControllerMod(FlaskForm): + update_controller_file = FileField() + update_controller = SubmitField(lazy_gettext('Replace')) + + # # Settings (Action) # diff --git a/mycodo/mycodo_flask/routes_settings.py b/mycodo/mycodo_flask/routes_settings.py index b2cf7e2ac..8f5abe908 100644 --- a/mycodo/mycodo_flask/routes_settings.py +++ b/mycodo/mycodo_flask/routes_settings.py @@ -122,6 +122,7 @@ def settings_function(): form_controller = forms_settings.Controller() form_controller_delete = forms_settings.ControllerDel() + form_controller_update = forms_settings.ControllerMod() # Get list of custom functions excluded_files = ['__init__.py', '__pycache__'] @@ -134,6 +135,8 @@ def settings_function(): utils_settings.settings_function_import(form_controller) elif form_controller_delete.delete_controller.data: utils_settings.settings_function_delete(form_controller_delete) + elif form_controller_update.update_controller.data: + utils_settings.settings_function_update(form_controller_delete, form_controller_update) return redirect(url_for('routes_settings.settings_function')) @@ -155,7 +158,8 @@ def settings_function(): return render_template('settings/function.html', dict_controllers=dict_controllers, form_controller=form_controller, - form_controller_delete=form_controller_delete) + form_controller_delete=form_controller_delete, + form_controller_update=form_controller_update) @blueprint.route('/settings/action', methods=('GET', 'POST')) diff --git a/mycodo/mycodo_flask/templates/settings/function.html b/mycodo/mycodo_flask/templates/settings/function.html index 5174886c4..0a7e0e68f 100644 --- a/mycodo/mycodo_flask/templates/settings/function.html +++ b/mycodo/mycodo_flask/templates/settings/function.html @@ -42,7 +42,7 @@